nginx负载均衡

ngx_http_upstream_module七层负载均衡

相关参数:

upstream:定义后端服务器组,会引入一个新的上下文
server:在upstream上下文中server成员,以及相关的参数
least_conn;:最少连接调度算法,当server拥有不同的权重时其为wlc
ip_hash;:源地址hash调度方法
hash :基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者的组
合
keepalive connections;:为每个worker进程保留的空闲的长连接数量;
weight=number # 权重,默认为1;
max_fails=number # 失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用;
fail_timeout=time # 设置将服务器标记为不可用状态的超时时长;
max_conns # 当前的服务器的最大并发连接数;
backup # 将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用;
down # 标记为“不可用

负载均衡算法

轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔
除故障系统,使 用户访问不受影响。
weight(轮询权值):weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均
衡的情况下。或 者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源
ip_hash:每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,
并且可以有效解决 动态网页存在的session共享问题。
fair:比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智
能地进行负载均 衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。
Nginx本身不支持fair,如果需要这 种调度算法,则必须安装upstream_fair模块。
url_hash:按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步
提高后端缓存服 务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装
Nginx的hash软件包。

七层负载均衡

七层负载均衡是基于URL等应用层信息的负载均衡,也被成为“内容交换”,主要是通过报文中真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的服务器

以TCP为例,负载均衡器需要先跟客户端建立连接,才能接收到客户端应用层内容的报文,然后根据报文中的特定字段,再加上负载均衡设置的服务器选择方式,最终选定内部服务器。负载均衡器和客户端与服务器会分别建立TCP连接,在这种情况下更像一个代理服务器

七层负载对设备的要求更高,但是对内容的处理更为灵活,例如访问一个网站的游客量,可以把图片类的请求转发到特定的图片服务器并使用缓存技术,对文字类的请求可以转发到特定的文字服务器并使用压缩技术,极大提高网络的灵活性。而且七层负载的特性也决定了面对SYN Flood攻击时,会在负载均衡器这一步就被拦下,不会影响到后台服务器的正常运行

server1作为反向代理服务器,server3,4,5作为apache web站点

先在后面三台上面配置完apache,然后再server1进行反向代理服务器配置七层代理

[root@server1 ~]# vim /etc/nginx/conf.d/proxy.conf

upstream webs{
server 192.168.226.149 weight=2; #weight为权重,可加可不加
server 192.168.226.153 weight=2;
server 192.168.226.152 weight=6;


}
server {
listen *:8787;
server_name 192.168.226.148:8787;
location{
proxy_pass http://webs;
}
}

测试访问

[root@server1 ~]# for i in {1..20};do curl 192.168.226.148:8787; done
server3
server2
server3
server2
server3
server3
server4
server3
server3
server2
server3
server4
server4
server3
server3
server2
server3
server3
server3
server4

nginx-mod-stream四层负载均衡

四层负载均衡基于IP+端口,主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,最终决定内部的服务器,负载均衡器仅作转发功能。

以TCP为例,当负载均衡设备接收到第一个来自客户端的SYN请求时,会通过上述方式选择一个最佳服务器,然后修改报文中目标IP之后直接转发给改服务器,TCP的连接也是客户端跟服务器直接连接,负载均衡设备只起一个类似路由转发的功能

avatar

实验

yum默认没装这个模块,yum install -y nginx-mod-stream

vim /etc/nginx/nginx.conf

events {
    worker_connections 1024;
}
stream{
        upstream sshers{
                server 192.168.226.149:22;
                server 192.168.226.152:22;
                server 192.168.226.153:22;
                least_conn;#请求将被传递给当前拥有最少活跃连接的server,同时考虑权重weight的因素
}
        server{
                listen *:7878;
                proxy_pass sshers;
}
}

这里用ssh 7878端口远程登陆来测试

标签: none

评论已关闭