您好,登錄后才能下訂單哦!
Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,并將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
1、keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。
2、虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
3、keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。
調度服務器DR1(主): 192.168.100.66 centos7-1
調度服務器DR2(備): 192.168.100.77 centos7-2
節點服務器web1: 192.168.100.88 centos7-3
節點服務器web2: 192.168.100.99 centos7-4
漂移地址vip: 192.168.100.100
客戶端client: 192.168.100.200 windows7
1、安裝ipvsadm、keepalived軟件包
[root@dr1 ~]# yum install ipvsadm keepalived -y
2、修改網卡模式為僅主機并固定IP:192.168.100.66
[root@dr1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.100.66
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@dr1 ~]# service network restart
Restarting network (via systemctl): [ 確定 ]
[root@dr1 ~]# vim /etc/sysctl.conf
#添加路由轉發功能
net.ipv4.ip_forward=1
#proc響應關閉重定向功能
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects=0
#生效路由轉發功能
[root@dr1 ~]# sysctl -p
3、構建虛擬網卡
[root@dr1 ~]# cd /etc/sysconfig/network-scripts/
[root@dr1 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@dr1 network-scripts]# vim ifcfg-ens33:0
#刪除原有內容
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.100
NETWASK=255.255.255.0
#啟用虛擬網卡
[root@dr1 network-scripts]# ifup ens33:0
4、添加服務啟動腳本
[root@dr1 ~]# cd /etc/init.d/
[root@dr1 init.d]# vim dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.100
RIP1=192.168.100.88
RIP2=192.168.100.99
case "$1" in
start)
/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev ens33:0
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
echo "ipvsadm starting------------------[ok]"
;;
stop)
/sbin/ipvsadm -C
systemctl stop ipvsadm
ifconfig ens33:0 down
route del $VIP
echo "ipvsamd stoped--------------------[ok]"
;;
status)
if [ ! -e ar/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped--------------------"
exit 1
else
echo "ipvsamd Runing-------------[ok]"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
#授予腳本執行權限
[root@dr1 init.d]# chmod +x dr.sh
#啟動腳本
[root@dr1 init.d]# service dr.sh start
#查看ipvsadm 狀態
[root@dr1 init.d]# systemctl status ipvsadm #查看服務開啟狀態
#關閉防火墻與安全功能
[root@dr1 init.d]# systemctl stop firewalld.service
[root@dr1 init.d]# setenforce 0
1.安裝ipvsdam、keepalived軟件包
[root@dr2 ~]# yum install ipvsdam keepalived -y
2.修改網卡模式為僅主機并固定IP:192.168.100.77
[root@dr2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.100.77
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@dr2 ~]# service network restart
Restarting network (via systemctl): [ 確定 ]
[root@dr2 ~]# vim /etc/sysctl.conf
#添加路由轉發功能
net.ipv4.ip_forward=1
#proc響應關閉重定向功能
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects=0
#生效路由轉發功能
[root@dr1 ~]# sysctl -p
3、構建虛擬網卡
[root@dr1 ~]# cd /etc/sysconfig/network-scripts/
[root@dr1 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@dr1 network-scripts]# vim ifcfg-ens33:0
#刪除原有內容
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.100
NETWASK=255.255.255.0
#啟用虛擬網卡
[root@dr2 ~]# ifup ens33:0
4、添加服務啟動腳本
[root@dr2 ~]# cd /etc/init.d/
[root@dr2 ~]# vim dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.100
RIP1=192.168.100.88
RIP2=192.168.100.99
case "$1" in
start)
/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev ens33:0
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
echo "ipvsadm starting------------------[ok]"
;;
stop)
/sbin/ipvsadm -C
systemctl stop ipvsadm
ifconfig ens33:0 down
route del $VIP
echo "ipvsamd stoped--------------------[ok]"
;;
stop)
/sbin/ipvsadm -C
systemctl stop ipvsadm
ifconfig ens33:0 down
route del $VIP
echo "ipvsamd stoped--------------------[ok]"
;;
status)
if [ ! -e ar/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped--------------------"
exit 1
else
echo "ipvsamd Runing-------------[ok]"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
[root@dr2 ~]# chmod +x dr.sh
[root@dr2 ~]# service dr.sh start
[root@dr2 ~]# systemctl status ipvsadm #查看服務開啟狀態
[root@dr2 ~]# systemctl stop firewalld.service
[root@dr2 ~]# setenforce 0
1.安裝httpd軟件包
[root@web-1 ~]# yum install httpd -y
2.修改網卡模式:僅主機并固定IP:192.168.100.88
[root@web-1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.100.88
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@web-1 ~]# service network restart #重啟網卡
[root@web-1 ~]# systemctl stop firewalld.service #關閉防火墻
[root@web-1 ~]# setenforce 0
[root@web-1 ~]# systemctl start httpd.service #啟動網站服務
3.創建網站首頁
[root@web-1 ~]# cd /var/www/html/
[root@web-1 ~]# echo "this is accp web" > index.html
4.創建虛擬網卡
[root@web-1 ~]# cd /etc/sysconfig/network-scripts/
[root@web-1 ~]# cp ifcfg-lo ifcfg-lo:0
[root@web-1 ~]# vim ifcfg-lo:0
#刪除原來所有信息,添加以下內容:
DEVICE=Lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.0
ONBOOT=yes
5.編寫服務啟動腳本
[root@web-1 ~]# cd /etc/init.d/
[root@web-1 ~]# vim web.sh #控制服務啟動腳本
#!/bin/bash
VIP=192.168.100.100
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
sysctl -p > /dev/null 2>&1
echo "RealServer Start OK "
;;
stop)
ifconfig lo:0 down
route del $VIP /dev/null 2>&1
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
[root@web-1 ~]# chmod +x web.sh
[root@web-1 ~]# service web.sh start
[root@web-1 ~]# ifup lo:0
在web2節點服務器上查看IP,可以看到虛擬IP就說明沒問題:ifconfig
firefox "http://127.0.0.1/" & #直接訪問網站
[root@web-1 ~]# service web.sh stop
[root@web-1 ~]# service web.sh start #建議重啟服務
1.安裝httpd軟件包
[root@web-2 ~]# yum install httpd -y
2.調整網卡模式為僅主機并固定IP:192.168.100.99
[root@web-2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.100.99
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@web-2 ~]# service network restart #重啟網卡
[root@web-2 ~]# systemctl stop firewalld.service #關閉防火墻
[root@web-2 ~]# setenforce 0
[root@web-2 ~]# systemctl start httpd.service
[root@web-2 ~]# systemctl status httpd.service
[root@web-2 ~]# cd /var/www/html/
[root@web-2 ~]# echo "this is benet web" > index.html
[root@web-2 ~]# cd /etc/sysconfig/network-scripts/
[root@web-2 ~]# cp ifcfg-lo ifcfg-lo:0
[root@web-2 ~]# vim ifcfg-lo:0
DEVICE=Lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.0
ONBOOT=yes
[root@web-2 ~]# cd /etc/init.d/
[root@web-2 ~]# vim web.sh #控制服務啟動腳本
#!/bin/bash
VIP=192.168.100.100
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
sysctl -p > /dev/null 2>&1
echo "RealServer Start OK "
;;
stop)
ifconfig lo:0 down
route del $VIP /dev/null 2>&1
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
[root@web-2 ~]# chmod +x web.sh
[root@web-2 ~]# service web.sh start
#開啟虛擬網卡
[root@web-2 ~]# ifup lo:0
firefox "http://127.0.0.1/" & #直接訪問網站
#關閉并重啟服務
[root@web-2 ~]# service web.sh stop
[root@web-2 ~]# service web.sh start
1.使用win7,調整網卡為僅主機模式
2.使用客戶機嘗試聯通服務器
C:\Users\czt>ping 192.168.100.100
正在 Ping 192.168.100.100具有 32 字節的數據:
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
192.168.100.100 的 Ping 統計信息:
數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
最短 = 0ms,最長 = 0ms,平均 = 0ms
3.使用客戶機瀏覽網頁,輸入http://192.168.100.100/
[root@dr1 ~]# cd /etc/keepalived/
[root@dr1 ~]# vim keepalived.conf
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1 #指向本地
smtp_connect_timeout 30
router_id LVS_01 #指定名稱,備份服務器不同名稱,另一臺為02
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #備份服務器將MASTER換為BACKUP
interface eth0
virtual_router_id 10 #組號相同
priority 100 #優先級,備小于主
advert_int 1
authentication {
auth_type PASS
auth_pass abc123 #驗證密碼
}
virtual_ipaddress {
192.168.100.100 #虛擬IP
}
}
virtual_server 192.168.100.100 80 { #虛擬IP及端口號
delay_loop 6
lb_algo rr
lb_kind DR #改為DR
persistence_timeout 50
protocol TCP
real_server 192.168.100.88 80 { #節點服務器1
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.100.99 80 { #節點服務器2
weight 1
TCP_CHECK { #修改為TCP_CHECK
connect_port 80 #添加端口
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#啟動keepalived服務
[root@dr1 ~]# systemctl start keepalived.service
1.模擬down掉一臺調度服務器
[root@dr1 init.d]# ifdown ens33:0
2.在win7上嘗試互聯服務器,如果在win7上還能ping通,就說明另一臺調度服務器已經接替并開始工作
C:\Users\czt>ping 192.168.100.100
正在 Ping 192.168.100.66 具有 32 字節的數據:
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
來自 192.168.100.100 的回復: 字節=32 時間<1ms TTL=64
192.168.100.100 的 Ping 統計信息:
數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
最短 = 0ms,最長 = 0ms,平均 = 0ms
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。