背景知識:
keepalived:Keepalived的作用是檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,并將有故障的web 服務器從系統中剔除,當web服務器工作正常后Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web服務器。
LVS:LVS是linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。
實驗系統:CentOS 6.6_x86_64
實驗前提:提前準備好編譯環境,防火墻和selinux都關閉
實驗說明:本實驗共有4臺主機,其中keep1和keep2為2臺前端的keepalived服務器,real1和real2為LVS中的realserver,ip地址對應如拓撲圖。
實驗軟件:httpd-2.2.15 keepalived-1.2.19
實驗拓撲:
一、配置realserver
1.安裝httpd:
yum -y install httpd
2.配置內核參數:
echo 1 > /PRoc/sys/net/ipv4/conf/lo/arp_ignore //僅在請求的地址配置在請求報文的接口進行響應echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announce //表示僅通告網絡直連的接口的地址echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
3.增加測試頁面并配置VIP:
real1上:
ifconfig lo:0 192.168.19.150 netmask 255.255.255.255 broadcast 192.168.19.150 up //配置VIPifconfig lo:1 192.168.19.151 netmask 255.255.255.255 broadcast 192.168.19.151 uproute add -host 192.168.19.150 dev lo:0 //配置路由route add -host 192.168.19.151 dev lo:1vim /var/www/html/index.html---------------------------------------------<h1>realserver1</h1>---------------------------------------------service httpd start
real2上:
ifconfig lo:0 192.168.19.150 netmask 255.255.255.255 broadcast 192.168.19.150 upifconfig lo:1 192.168.19.151 netmask 255.255.255.255 broadcast 192.168.19.151 uproute add -host 192.168.19.150 dev lo:0route add -host 192.168.19.151 dev lo:1vim /var/www/html/index.html---------------------------------------------<h1>realserver2</h1>---------------------------------------------service httpd start
二、安裝并配置keepalived
1.編譯安裝keepalived,在keep1和keep2上操作:
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gztar xf keepalived-1.2.19.tar.gz cd keepalived-1.2.19./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.30.3.el6.x86_64/ //內核版本換成自己主機的make && make installchkconfig --add keepalivedchkconfig keepalived onyum -y install ipvsadm //安裝LVS工具
2.配置keepalived:
keep1上:
vim /etc/keepalived/keepalived.conf----------------------------------------------------vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 31 priority 100 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.150 }}vrrp_instance VI_2 { state BACKUP interface eth0 virtual_router_id 41 priority 99 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.151 }}virtual_server 192.168.19.150 80 { delay_loop 6 lb_algo rr //LVS算法 lb_kind DR //調度類型 protocol TCP real_server 192.168.19.29 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } } real_server 192.168.19.34 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } }}virtual_server 192.168.19.151 80 { delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.19.29 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } } real_server 192.168.19.34 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } }}
keep2上:
vim /etc/keepalived/keepalived.conf ----------------------------------------------
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 31 priority 99 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.150 }}vrrp_instance VI_2 { state MASTER interface eth0 virtual_router_id 41 priority 100 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.151 }}virtual_server 192.168.19.150 80 { delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.19.29 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } } real_server 192.168.19.34 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } }}virtual_server 192.168.19.151 80 { delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.19.29 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } } real_server 192.168.19.34 80 { weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 nb_get_retry 2 delay_before_retry 1 connect_port 80 } }}
3.兩臺機器啟動keepalived:
service keepalived startipvsadm -L -n //用LVS工具查看keepalived運行ip addr show //查看VIP
兩臺機器上LVS規則都已經生效,且2個VIP分別運行在2個節點:
keep1上:
keep2上:
分別打開測試頁面進行測試:
停掉任何一個節點,資源都會自動轉移:
至此,演示完畢,謝謝!如有問題,請與我聯系,QQ:82800452
新聞熱點
疑難解答