輔助nginx負載均衡器的配置說明
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/手機短信報警的方式更為高效。