實驗環境:

? ? RS1:rip(172.16.125.7),安裝httpd軟件包;

? ? RS2:rip(172.16.125.8),安裝httpd軟件包;

? ? director1(7-1.lcs.com):vip(172.16.125.100),dip(172.16.125.5),安裝nginx、keepalived軟件包。

? ? director2(7-2.lcs.com):vip(172.16.125.110),dip(172.16.125.6),安裝nginx、keepalived軟件包。

? ? 首先關閉所有節點上iptables和selinux,同時進行時間同步。

使用雙主模型實現nginx的高可用:

(1)在兩臺keepalived高可用主機上安裝keepalived和nginx軟件包,并提供配置文件。

? ? a.首先使用時間同步,保證節點上的時間是同步的。

? ? b.首先使用nginx反向代理實現后臺RS上的web服務的負載均衡,在nginx的主配置文件(/etc/nginx/nginx.conf)中,進行修改。

? ??? ? 在http段中添加upstream,將后端兩臺RS加入到該upstream中。

upstream?myblancer?{server?172.16.125.7:80;server?172.16.125.8:80;}

????????在server段中location /{}中加入代理,實現負載均衡調度。

location?/?{proxy_pass?http://myblancer;}

????c.進行檢測,是否實現了后端RS的輪詢調度。

????????wKiom1YuUPyiYNh5AABqOkG5Czo963.jpg

????????wKioL1YuUS-BOV2PAABtt-hkyzo971.jpg

(2)上述說明已經通過nginx的反向代理實現了http服務的負載均衡。在此處就可以開始配置keepalived的主配置文件,實現對nginx的高可用。詳細配置文件如下:

? ? keepalived的配置文件1:

global_defs?{notification_email?{root@localhostfailover@firewall.locsysadmin@firewall.loc}notification_email_from?Alexandre.Cassen@firewall.locsmtp_server?127.0.0.1smtp_connect_timeout?30router_id?LVS_DEVEL
}
vrrp_script?chk_nginx?{?script?"killall?-0?nginx?&>?/dev/null"interval?1weight?-20
}vrrp_instance?VI_1?{state?MASTERinterface?eno16777736virtual_router_id?100priority?100advert_int?1authentication?{auth_type?PASSauth_pass?100}virtual_ipaddress?{172.16.125.100/16?dev?eno16777736?label?eno16777736:0}track_script?{chk_nginx??}
}vrrp_instance?VI_2?{state?BACKUPinterface?eno16777736virtual_router_id?110priority?90advert_int?1authentication?{auth_type?PASSauth_pass?110}virtual_ipaddress?{172.16.125.110/16?dev?eno16777736?label?eno16777736:1}track_script?{chk_nginx}
}

????keepalived配置文件2:

global_defs?{notification_email?{root@localhostfailover@firewall.locsysadmin@firewall.loc}notification_email_from?Alexandre.Cassen@firewall.locsmtp_server?127.0.0.1smtp_connect_timeout?30router_id?LVS_DEVEL
}
vrrp_script?chk_nginx?{script?"killall?-0?nginx?&>?/dev/null"interval?1weight?-20
}?
vrrp_instance?VI_1?{state?BACKUPinterface?eno16777736virtual_router_id?100priority?90advert_int?1authentication?{auth_type?PASSauth_pass?100}virtual_ipaddress?{172.16.125.100/16?dev?eno16777736?label?eno16777736:0}track_script?{chk_nginx}
}vrrp_instance?VI_2?{state?MASTERinterface?eno16777736virtual_router_id?110priority?100advert_int?1authentication?{auth_type?PASSauth_pass?110}virtual_ipaddress?{172.16.125.110/16?dev?eno16777736?label?eno16777736:1}track_script?{chk_nginx}
}

????使用如下這個腳本檢測nginx服務的狀態,如果nginx服務發生了問題,那么在該服務器上的vip會自動流動到另一臺高可用服務器上。使用下邊這個腳本要保證高可用服務器上有killall命令,該命令是由psmisc軟件包提供

vrrp_script?chk_nginx?{script?"killall?-0?nginx?&>?/dev/null"interval?1weight?-20
}

????????通過這一步的keepalived的配置,keepalived服務已經配置完成,那么在這兩臺director上啟動keepalived和nginx服務。

? ??? ? a.查看兩臺director上vip是否已經添加成功。

????????wKioL1YuUVbDb7KpAAIaH9Q5ahM879.jpg

????????wKiom1YuUSTBUZZYAAHjvD_h5R8330.jpg

????????b.分別訪問vip(172.16.125.100)和vip(172.16.125.110)

????????wKioL1YuUYrjUdE4AADFuKwNZRg368.jpg

????c.在director1上關閉nginx服務,檢測到vip已經消失,轉移到director2上。

????????wKiom1YuUYCz6I-iAAF45PdWVKI906.jpg

????????wKioL1YuUbKy2RVrAAJA2xYx9So321.jpg



????????