企业网站建设规划ppt,品牌设计机构公司,建e室内设计网官网平面图,wordpress级验一、负载均衡介绍
1、负载均衡的定义
单体服务器解决不了并发量大的请求#xff0c;所以#xff0c;我们可以横向增加服务器的数量#xff08;集群#xff09;#xff0c;然后将请求分发到各个服务器上#xff0c;将原先请求集中到单个服务器上的情况改为将请求分发到多…一、负载均衡介绍
1、负载均衡的定义
单体服务器解决不了并发量大的请求所以我们可以横向增加服务器的数量集群然后将请求分发到各个服务器上将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上将负载分发到不同的服务器也就是我们所说的负载均衡。 负载均衡的意思是在服务器集群中需要有一台服务器作为调度者客户端所有的请求都由调度者接收调度者再根据每台服务器的负载情况将请求分配给对应的服务器去处理。 在这个过程中调度者如何合理分配任务保证所有服务器将性能充分发挥从而保持服务器集群的整体性能最优这就是负载均衡的需要处理的问题了。
2、nginx负载均衡
nginx在 nginx.conf配置文件中通过 upstream模块 和 server模块的配合使用就可以实现负载均衡。
2.1 upstream 模块 upstream 模块负载均衡模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。 在http的 upstream模块中可以通过 server指令指定后端服务器的IP地址和端口同时还可以设定每个后端服务器在负载均衡调度中的状态。
常用的状态有
weight服务访问的权重默认是1。down表示当前的server暂时不参与负载均衡。backup预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候才会请求backup机器因此这台机器的压力最轻。max_fails在fail_timeout时间内允许请求最大的失败次数默认为1。当达到最大失败时会在fail_timeout时间内不允许再次被选择。返回 proxy_next_upstream 模块定义的错误。fail_timeout单位为秒默认是10秒。指定一段时间内请求经历了max_fails次失败后该server不能访问的时间暂停服务的时间。max_fails可以和fail_timeout一起使用。
注意当负载调度算法为ip_hash时后端服务器在负载均衡调度中的状态不能是backup。
2.2 nginx负载均衡配置
nginx.conf 负载均衡的基本配置内容如下以轮询策略为例
worker_processes 1;events {worker_connections 1024;
}http {# upstream模块server_group_name 自定义服务组名upstream server_group_name {# server指令指定后端服务器的IP地址和端口server localhost:8080;server 192.168.xxx.xxx:8081 down;server 192.168.xxx.xxx:8082 max_fails3 fail_timeout20s;server 192.168.xxx.xxx:8083;}# server模块server {listen 80;server_name localhost;location / {# proxy_pass代理转发将单体服务http://127.0.0.1:80改为服务组名proxy_pass http://server_group_name/;# proxy_redirect default;}}
}二、Nginx负载均衡实战
浏览效果在浏览器访问http://192.168.xxx.xxx/test.html时由于配置的负载均衡会将请求平均分发到两台服务器中访问时会出现不同界面。。
1、准备工作
这里准备两台tomcat服务器一台服务器的端口为8080另一台服务器的端口为8080
在这两台tomcat服务器的webapps目录中的 ROOT文件夹中创建一个 test.html文件用于测试。
# 添加 html文件并加入内容
echo h1This is 8080 Port/h1 /usr/local/tomcat8080/webapps/ROOT/test.html
echo h1This is 8080 Port -------/h1 /usr/local/tomcat8080/webapps/ROOT/test.html启动两个tomcat服务。
#启动tomcat8080
/usr/local/tomcat8080/bin/startup.sh浏览器直接访问tomcat服务。 2、Nginx负载均衡配置
第一步修改Nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf 配置内容如下以轮询策略为例
worker_processes 1;events {worker_connections 1024;
}http {# upstream模块自定义服务组名upstream my_tomcat_server {server 192.168.xxx.1xx:8080;server 192.168.xxx.2xx:8080;}server {listen 80;server_name 192.168.xxx.xxx; # 指定虚拟主机的IP或者外网域名location / {root html;# proxy_pass代理转发指定我们配置负载均衡的服务名my_tomcat_serverproxy_pass http://my_tomcat_server; index index.html index.htm; }}
}第二步重启Nginx
修改 nginx完之后保存退出重启Nginx。 /usr/local/nginx/sbin/nginx -s reload # 先执行停止命令再执行启动命令
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx第三步浏览器访问OK
在浏览器访问http://192.168.xxx.xxx/test.html时由于配置的负载均衡会将请求平均分发到到这两台服务器中所以访问时会出现不同界面。 第四步关闭服务
#关闭Nginx
/usr/local/nginx/sbin/nginx -s quit
#关闭tomcat
/usr/local/tomcat8080/bin/shutdown.sh
/usr/local/tomcat8080/bin/shutdown.sh三、Nginx负载均衡分配策略介绍
1、轮询[默认]
轮询方式是Nginx负载默认的方式。 该策略会使得每个请求按时间顺序逐一分配到不同的后端服务器如果其中某个后端服务器 down 掉该策略能自动从轮询列表中剔除该服务。 轮询方式是将所有请求按顺序轮流地分配到后端服务器上它均衡地对待后端的每一台服务器而不关心服务器实际的连接数和当前的系统负载。 # upstream模块自定义服务组名upstream my_tomcat_server {server localhost:8080; # 服务器的ip:portserver 192.168.xxx.xxx:8081;}2、权重weight 该策略会指定每个服务的权重比例权重越高被分配的客户端请求也就越多weight 和访问比率成正比。主要用于后端服务器性能不均的情况。 weight指定轮询权值默认值为1。通常用于后端服务机器性能不统一将性能好的分配权重高来发挥服务器最大性能。
不同的后端服务器可能机器的配置和当前系统的负载并不相同因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重让其处理更多的请而配置低、负载高的机器给其分配较低的权重降低其系统负载加权轮询能很好地处理这一问题并将请求顺序且按照权重分配到后端。 upstream my_tomcat_server {server localhost:8080 weight2;server 192.168.xxx.xxx weight5; # 权重设置为552所以请求时会多跳转到这个服务}3、ip_hash哈希 该策略会按照每个请求按访问 ip 的 hash 结果分配这样每个访客固定访问一个后端服务器。有效解决了动态网页存在的session共享问题。 源地址哈希法根据获取客户端的IP地址通过哈希函数计算得到一个数值用该数值对服务器列表的大小进行取模运算得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡同一IP地址的客户端当后端服务器列表不变时它每次都会映射到同一台后端服务器进行访问。
注意ip_hash和 weight也可以配合使用。 upstream my_tomcat_server {ip_hash;server localhost:8080;server 192.168.xxx.xxx; }
# ip_hash和 weight也可以配合使用upstream my_tomcat_server {ip_hash;server localhost:8080 weight1;server 192.168.xxx.xxx weight2;}4、最少连接least_conn 该策略会将请求分配到连接数最少的服务上。 upstream my_tomcat_server {least_conn;server localhost:8080;server 192.168.xxx.xxx; }5、第三方策略
Nginx支持集成第三方的策略插件。
比如
fair此种算法可以依据页面大小和加载时间长短智能地进行负载均衡即响应时间短的优先分配。比上面更加智能的负载均衡算法。下载安装 Nginx的upstream_fair模块。url_hash按访问 url的 hash结果来分配请求使每个url定向到同一个后端服务器可以进一步提高后端缓存服务器的效率。下载安装 Nginx 的hash软件包。 – 求知若饥虚心若愚。