nginx负载均衡器是一个很好很节约成本的一种选择,多数用在中小型的企业之中。前面我们对nginx负载均衡器的主机进行了详细的配置说明,现在就来对辅nginx负载均衡器来做配置介绍。大致的配置过程基本相同,首先我们可以检查一下它们的启用状态,详细的命令代码如下:
- [root@ltos html]# ip a
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:0c:29:ba:9b:e7 brd ff:ff:ff:ff:ff:ff
- inet 192.168.0.154/24 brd 192.168.0.255 scope global eth0
- inet 192.168.0.188/32 scope global eth0
- inet6 fe80::20c:29ff:feba:9be7/64 scope link
- valid_lft forever preferred_lft forever
- 3: sit0: <NOARP> mtu 1480 qdisc noop
- link/sit 0.0.0.0 brd 0.0.0.0
说明vip已经启动,这样主服务器就配置好了,辅机的配置大致一样,除了配置文件有少部分的变化,下面贴出辅nginx负载均衡器的配置文件:
- ! Configuration File for keepalived
- global_defs {
- notification_email {
- yuhongchun027@163.com
- }
- notification_email_from keepalived@chtopnet.com
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id LVS_DEVEL
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface eth0
- virtual_router_id 51
- mcast_src_ip 192.168.0.155<==辅nginx负载均衡器的IP的地址
- priority 100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass chtopnet
- }
- virtual_ipaddress {
- 192.168.0.188<==vip地址
- }
- }
#p#检查辅nginx负载均衡器配置
- [root@ltos html]# ip a
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:0c:29:ba:9b:e7 brd ff:ff:ff:ff:ff:ff
- inet 192.168.0.155/24 brd 192.168.0.255 scope global eth0
- inet 192.168.0.188/32 scope global eth0
- inet6 fe80::20c:29ff:feba:9be7/64 scope link
- valid_lft forever preferred_lft forever
- 3: sit0: <NOARP> mtu 1480 qdisc noop
- link/sit 0.0.0.0 brd 0.0.0.0
测试其效果方法很简单,分别在主、辅nginx负载均衡器上/var/www/html/下建立不同的主页及内容文件index.html,内容分别为192.168.0.154,192.168.0.155,然后用客户机上elinks http://192.168.0.188,主机down掉后辅机会马上接替提供服务,间隔时间几乎无法感觉出来;但如果是停掉master的nginx服务,keepalived就不能自动启动nginx服务了,这个也是相对于heartbeat2.X不完善的地方,即它不能做到服务级别-Nginx的HA。
◆这里要说明的是:
一、如何让master状态的主机挂掉后不抢占的办法:可将二台Nginx负载均衡器均设成backup状态是因为nopreempt(不抢占)只支持backup模式,而让哪一台backup成为master,这个由优先级priority为决定,这个配置是参考了《Keepalived权威指南》做法。
二、此种架构的缺点是备机服务器处于闲置状态,浪费了硬件资源,如果要有效的利用二台nginx负载均衡器,可参考张宴的金山逍遥网nginx负载均衡的双机热备的做法。
三、keepalived比较heartbeat2.X而言,它目前不能做nginx服务的HA,但由于目前nginx作反向代理/负载均衡器非常稳定,出现宕机的机率微乎其乎(关键是nginx的master进程超稳定),我做的一些基于nginx负载均衡的小项目已在线稳定一年以上(几乎从来没出现单nginx负载均衡挂掉的情况),所以这个可以应用于成熟的生产环境(例如新浪);在生产环境下,比起用shell脚本监控nginx的master状态,反而效果不如采用nagios/手机短信报警的方式更为高效。