高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案
今天直接開門見山了,直接說配置吧。首先介紹下我這的環境
如有問題,請聯系我18500777133@sina.cn
| 192.168.1.7 | lvs1+keepalived master角色 |
| 192.168.1.8 | lvs2+keepalived backup角色 |
| 192.168.1.6 | web1-Nginx |
| 192.168.1.4 | web2-Nginx |
keepalived的vip是192.168.1.200,系統環境都是CentOs6.6 64位。
需要注意的是:
第一:確保client能夠直接訪問web服務器。因為在LVS-DR模式下web服務器回復client的時候,是直接回復給client的,不需要經過LVS,所以web服務器必須能夠和client的網絡互通。
第二,lvs服務器和web-server他們必須在同一個網段內,因為LVS轉發包的時候,是直接修改了包目標的MAC地址,直接扔給了rs,基于MAC地址的修改是活動在OSI二層數據鏈路層的,工作在數據鏈路層的網絡設備就是交換機了,所以必須在一個交換機下面,也就是一個局域網內。
第三為啥抑制real-server的ARP,是這樣的,我們在DR模式要更改web-server的ARP的模式,arp_ignore為1是說只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,我們都在回環接口上配置了一個VIP,當arp模式更改以后,那么如果有誰在請求VIP的mac地址時,那么那些web-server就會回答arp廣播報文了,只有lvs才會,如果沒有更改arp模式,那么大家都喊我是VIP,這就亂套了。
LVS+keepalived的調整
我們首先在LVS1和LVS2上開啟路由轉發的功能
[root@localhost ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #編輯這行 [root@localhost ~]# sysctl -p net.ipv4.ip_forward = 1接下來安裝keepalived,我這里采用yum安裝,命令yum install keepalived的,安裝完系統自帶的yum源即可,安裝完之后配置keepalived。
先看keepalived master的配置文件
再看看keepalived的backup配置:
[root@localhost ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {18500777133@sina.cn}notification_email_from Alexandre.Cassen@firewall.locrouter_id test-2 }vrrp_sync_group vg_1 {group {VI_1} }vrrp_instance VI_1 { state BACKUP # backup狀態interface eth0 virtual_router_id 51 # master和backup的id一致priority 90 #優先級比master低些advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/32 dev eth0} }virtual_server 192.168.1.200 80 {delay_loop 5lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.1.6 80 {weight 1HTTP_GET {url {path /digest e3eb0a1df437f3f97a64aca5952c8ea0}connect_timeout 1connect_port 80nb_get_retry 3delay_before_retry 1}}real_server 192.168.1.4 80 {weight 1HTTP_GET {url {path /test.htmldigest 1181c1834012245d785120e3505ed169}connect_timeout 2connect_port 80nb_get_retry 3delay_before_retry 1}}}我們這會用genhash來獲取web服務 url的校驗碼:
[root@localhost ~]# genhash -s 192.168.45.128 -p 80 -u / MD5SUM = e3eb0a1df437f3f97a64aca5952c8ea0 # 把這個校驗碼放在keepalived的配置文件即可。配置完后,暫且不著急啟動keepalived的服務。我們先行配置web服務器。
Web服務器的調整
兩臺web服務器都做同樣的操作
首先更改sysctl.conf的配置文件。命令如下:
添加虛擬IP以及路由,命令如下:
root@leo-virtual-machine:~# ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200 up @root@leo-virtual-machine:~# route add -host 192.168.1.200 dev lo:0 #先不添加這路由,如果出現無法訪問的時候再添加也不遲個人建議不要忘記在rc.local里面寫入增加VIP的添加命令,省去開機后人工配置的麻煩:
@root@leo-virtual-machine:~# cat /etc/rc.local ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200 route add -host 192.168.1.200 dev lo:0完成之后,后端啟動httpd服務
啟動keepalived的服務
在master服務器上啟動
[root@localhost ~]# service keepalived start [root@localhost ~]# tail /var/log/messages -f # 查看keepalived的日志,確保服務啟動正常 ''' Nov 19 17:09:28 localhost Keepalived_healthcheckers[14376]: Using LinkWatch kernel netlink reflector... Nov 19 17:09:28 localhost Keepalived_healthcheckers[14376]: Activating healthchecker for service [192.168.1.6]:80 # 后端real-server校驗成功,可以提供服務 Nov 19 17:09:28 localhost Keepalived_healthcheckers[14376]: Activating healthchecker for service [192.168.1.4]:80 # 后端real-server校驗成功,可以提供服務 Nov 19 17:09:28 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Transition to MASTER STATE # 設置本機為master角色 Nov 19 17:09:28 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election Nov 19 17:09:28 localhost Keepalived_vrrp[14377]: VRRP_Group(vg_1) Syncing instances to MASTER state Nov 19 17:09:29 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Entering MASTER STATE Nov 19 17:09:29 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) setting protocol VIPs. #設置VIP到本機上 Nov 19 17:09:29 localhost Keepalived_vrrp[14377]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.200 [root@localhost ~]# ip a|grep 'inet 'inet 127.0.0.1/8 scope host loinet 192.168.1.7/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.200/32 scope global eth0 # VIP已經在了。 You have new mail in /var/spool/mail/root在backup以同樣的命令啟動keepalived的,測試負載功能和高可用功能。
檢測服務是否可以高可用以及負載均衡
1 在keepalived的master上停止keepalived的服務,模擬服務器宕機啦。等2秒后,到keepalived的backup服務器上查看VIP是否漂移過去。此時用瀏覽器繼續訪問192.168.1.200,看web服務器能夠正常響應。且注意網頁,看是不是負載均的效果(根據權重,權重高的服務提供的網頁次數多。)
2 在第一步的基礎上,我們在keepalived的master上重新啟動keepalived的服務,等待3秒后,看VIP是否正常切回,切回后檢測web服務器是否可用。
轉載于:https://www.cnblogs.com/liaojiafa/p/6087276.html
總結
以上是生活随笔為你收集整理的高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server中的SQL语句优化与
- 下一篇: JS_ECMA基本语法中的几种封装的小函