前言:
此时看官们对“nginx负载不平衡”大概比较关切,大家都需要分析一些“nginx负载不平衡”的相关资讯。那么小编也在网摘上汇集了一些有关“nginx负载不平衡””的相关资讯,希望看官们能喜欢,你们一起来学习一下吧!创作不易,关注、点赞,分享了解互联网前沿知识。
负载均衡概述
负载均衡(Load Balance)是应用于互联网后台系统架构设计中的各层,它将请求均匀分摊到多个操作单元上执行。
在实际的APP应用程序中,我们知道Web服务群集前总是有负载平衡服务,典型的负载平衡软件使用会根据网站规模的增加而使用不同的技术。 例如,中小型web APP应用程序Nginx就足够了,但对于大型站点和关键服务,可以使用LVS。
主流负载均衡软件
Nginx、LVS、HAProxy是目前使用最广泛的三种负载平衡软件。
最常用的负载均衡软件有LVS、HAProxy和Nginx,结合高可用软件有Heartbeat、Keepalived,可以搭建出承载海量请求的成熟架构如LVS+Keepalived、HAProxy+keepalived等。
Nginx的好处:
1、简单: Nginx安装和配置都非常简单,非常好用
2、重量轻:能承受高负荷压力
3、稳定:用于反向代理,停机概率非常低
4、节约: Nginx对网络稳定性的依赖非常小,理论上只要能ping就可以进行负载功能
5、强大:内置体检; 有很多功能
6、内存消耗少:成本低廉,可以跨平台
Nginx的缺点:Nginx不支持url来检测;Nginx仅能支持http和Email,这个它的弱势;LVS的好处:
1、抗负载能力强: LVS内存和cpu资源消耗较低,无流量产生,因此LVS是负载均衡软件中性能最强
2、配置性较低:配置性低,简化操作成本,降低操作失误概率
3、 工作比较稳定:自身有完整的双机热备方案,自身抗负载能力强
4,应用范围广: LVS几乎适用于所有APP应用
LVS的缺点:动作分不开2、大网站LVS Keepalived实施复杂,配置成本高HA代理的优点:
1、HAProxy支持虚拟主机,由前端命令实现
2.支持会话保留、cookie引导等。
3. 检测支持URL 检测后端的服务器的问题非常有用。
4.和LVS一样,这只是一个负载均衡软件,单纯从效率上来说,HAProxy的负载均衡速度比Nginx好,并发性也比Nginx好。
5、HAProxy可以负载均衡Mysql读取、发现和负载均衡后端的MySQL节点
6. 可以将请求的URL与header中的信息进行匹配,比lvs有更好的7层实现。
HAProxy 的缺点:
1、不支持POP/SMTP协议和SPDY协议。
2.不支持HTTP缓存功能。即它不能是网络服务器
3、重载配置的能力需要进程重启,这也是软重启,但是不使用Nginx重载更流畅,更易用。
4.对多进程模式的支持不够好
三者对比总结:
性能上LVS>HA>Nginx,功能性和便利性上Nginx>HA>LVS。
以下介绍安装说明
HAProxy安装配置说明
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
以主机pmonapp01、pmonapp02为例,两台主机均需要安装HAPorxy。HAProxy接收外部HTTP请求然后,分发给pmonapp01和pmonapp02上面的Tomcat服务,使pmonapp01和pmonapp02两台服务器上面的Tomcat服务统一对外提供服务端口为8080。
HAProxy安装以pmonapp01为例。
安装前准备
在/tmp目录创建plugin目录,用于临时存放HAProxy安装介质。
使用命令
执行顺序
命令
说明
1
mkdir -p /tmp/plugin
在/tmp/下创建plugin目录
执行示意
[root@pmondbs01 ~] # mkdir /tmp/plugin
然后以通过FTP方式上传haproxy-1.7.1.tar.gz。
安装HAProxy
HAProxy在不同的操作系统平台上,在安装时需要根据操作系统内核版本来指定不同的编译参数。
确定操作系统内核版本
使用uname -r命令查看操作系统内核信息。
[root@pmonapp01~] # uname -r
3.10.0-957.el7.x86_64
操作系统内核版本为3.10.0
HAProxy编译参数对照表:
参数
操作系统内核版本
linux22
Linux 2.2
linux24
Linux 2.4及以上
linux24e
带支持Working epoll的Linux 2.4
linux26
Linux 2.6及以上
linux2628
Linux2.6.28、3.x及以上
solaris
Solaris 8或10
freebsd
FreeBSD 5到10
netbsd
NetBSD
osx
Mac OS/X
openbsd
OpenBSD 5.7及以上
aix51
AIX 5.1
aix52
AIX 5.2
cygwin
Cygwin
haiku
Haiku
generic
其他任何操作或者版本
custom
人工调整每项参数
安装HAProxy
根据HAPorxy编译参数对照表得知HAProxy在pmonsapp01上的编译参数为linux2628。
使用命令
执行顺序
命令
说明
1
cd /tmp/plugin/
进入/tmp/plugin目录
2
tar -zxf haproxy-1.7.1.tar.gz
解压haproxy-1.7.1.tar.gz
3
cd haproxy-1.7.1/
进入haproxy-1.7.1
4
make TARGET=linux2628
编译haproxy
5
make install
安装haproxy
执行示意
[root@pmonapp01~] # cd /tmp/plugin/
[root@pmonapp01 plugin] # tar -zxf haproxy-1.7.1.tar.gz
[root@pmonapp01 plugin] # cd haproxy-1.7.1/
[root@pmonapp01 haproxy-1.7.1] # make TARGET=linux2628
[root@pmonapp01 haproxy-1.7.1] # make install
配置HAProxy
HAProxy配置包括创建启动脚本、创建配置文件、设置启动方式等,需要依次完成。
创建启动脚本
在解压之后的HAProxy安装介质中的examples/haproxy.init下提供有HAProxy的启动脚本,把该脚本复制到/etc/init.d下,然后赋予755权限,即完成HAProxy启动脚本创建。
使用命令
执行顺序
命令
说明
1
cp /usr/local/sbin/haproxy /usr/sbin/
复制haproxy启动程序到/usr/sbin目录下
2
cp /tmp/plugin/haproxy-1.7.1/examples/haproxy.init /etc/init.d/haproxy
复制haproxy启动脚本到/etc/init.d目录下
3
chmod 755 /etc/init.d/haproxy
赋予启动脚本755权限
执行示意
[root@pmonapp01 ~] # cp /usr/local/sbin/haproxy /usr/sbin/
[root@pmonapp01 ~] # cp /tmp/plugin/haproxy-1.7.1/examples/haproxy.init /etc/init.d/haproxy
[root@pmonapp01 ~] # chmod 755 /etc/init.d/haproxy
创建配置文件
首先在/etc目录下创建haproxy文件夹,然后将安装介质中conf文件夹下haproxy.cfg通过FTP方式上传至/etc/haproxy下,然后修改以下参数配置。
参数设置详情为:
参数
值
说明
bind
0.0.0.0:8080
HAProxy对外端口
server
web01 ip.81.47:8089 check inter 500 rise 2 fall 3 weight 5
HAProxy转发目标Server
server
web02 ip.81.48:8089 check inter 500 rise 2 fall 3 weight 5
HAProxy转发目标Server
使用命令
执行顺序
命令
说明
1
mkdir /etc/haproxy
在/etc/创建haproxy目录
2
vi /etc/haproxy/haproxy.cfg
编辑HAProxy配置文件
3
bind 0.0.0.0:8080
server web01 ip.81.47:8089 check inter 500 rise 2 fall 3 weight 5
server web02 ip.81.48:8089 check inter 500 rise 2 fall 3 weight 5
参数及参数值
执行示意
[root@pmonapp01 ~] # mkdir /etc/haproxy
[root@pmonapp01 ~] # vi /etc/haproxy/haproxy.cfg
global
maxconn 20000
ulimit-n 65535
log 127.0.0.1 local0
chroot /var/empty
nbproc 4
daemon
defaults
mode tcp
timeout queue 1m
timeout connect 1m
timeout client 1m
timeout server 1m
timeout check 10s
mode http
timeout queue 1m
timeout connect 1m
timeout client 1m
timeout server 1m
timeout check 10s
listen tomcat-proxy
bind 0.0.0.0:8080
mode http
log global
log 127.0.0.1 local0 err
option forwardfor
balance roundrobin
server web01 ip.81.47:8089 check inter 500 rise 2 fall 3 weight 5
server web02 ip.81.48:8089 check inter 500 rise 2 fall 3 weight 5
设置HAProxy启动方式
设置HAProxy随操作系统启动。
使用命令
执行顺序
命令
说明
1
chkconfig --add haproxy
添加haproxy启动随系统启动
2
chkconfig --level 12345 haproxy on
修改haproxy启动级别
执行示意
[root@pmonapp01 ~] # chkconfig --add haproxy
[root@pmonapp01 ~] # chkconfig --level 345 haproxy on
启动HAProxy
修改完配置之后务必重启HAProxy,重启命令service haproxy restart。
[root@pmonapp01 ~] # service haproxy restart
HAProxy负载均衡配置
两台转发服务器做负载均衡配置,假设情况如下:
主机名
IP地址
权重
pmonapp01
ip.81.47
50%
pmonapp02
ip.81.48
50%
修改pmonapp01的HAProxy配置文件
修改haproxy.cfg为如下结果。
[root@pmonapp01 ~] # vi /etc/haproxy/haproxy.cfg
global
maxconn 20000
ulimit-n 65535
log 127.0.0.1 local0
chroot /var/empty
nbproc 4
daemon
defaults
mode tcp
timeout queue 1m
timeout connect 1m
timeout client 1m
timeout server 1m
timeout check 10s
mode http
timeout queue 1m
timeout connect 1m
timeout client 1m
timeout server 1m
timeout check 10s
listen tomcat-proxy
bind 0.0.0.0:8080
mode http
log global
log 127.0.0.1 local0 err
option forwardfor
balance roundrobin
server web01 ip.81.47:8089 check inter 500 rise 2 fall 3 weight 5
server web02 ip.81.48:8089 check inter 500 rise 2 fall 3 weight 5
修改pmonapp02的HAProxy配置文件
修改haproxy.cfg为如下结果。
[root@pmonapp02 ~] # vi /etc/haproxy/haproxy.cfg
global
maxconn 20000
ulimit-n 65535
log 127.0.0.1 local0
chroot /var/empty
nbproc 4
daemon
defaults
mode tcp
timeout queue 1m
timeout connect 1m
timeout client 1m
timeout server 1m
timeout check 10s
mode http
timeout queue 1m
timeout connect 1m
timeout client 1m
timeout server 1m
timeout check 10s
listen tomcat-proxy
bind 0.0.0.0:8080
mode http
log global
log 127.0.0.1 local0 err
option forwardfor
balance roundrobin
server web01 ip.81.47:8089 check inter 500 rise 2 fall 3 weight 5
server web02 ip.81.48:8089 check inter 500 rise 2 fall 3 weight 5
重启HAProxy
HAProxy修改配置之后务必重启HAProxy配置才能生效,重启操作参考1.3.4启动HAProxy。
标签: #nginx负载不平衡