環(huán)境準(zhǔn)備
IP | 配置 | VIP | |
node1 | 192.168.134.170 | LVS+Keepalived | 192.168.134.100 |
node3 | 192.168.134.172 | LVS+Keepalived | 192.168.134.100 |
node2 | 192.168.134.171 | 做web服務(wù)器使用 | |
node4 | 192.168.134.173 | 做web服務(wù)器使用 |
1、準(zhǔn)備node1與node3環(huán)境(安裝LVS與Keepalived)==>由于只是簡單的模擬測(cè)試,故環(huán)境安裝使用yum即可。(LVS使用DR模式)
yum install ipvsadm
2、準(zhǔn)備web服務(wù)器環(huán)境(兩臺(tái))
yum install httpd -y
3、寫測(cè)試實(shí)例(web服務(wù)器上)
echo "web test page ,ip is `hostname -I`" > /var/www/html/index.html
systemctl restart httpd
4、寫腳本準(zhǔn)備web環(huán)境
cat /etc/init.d/lvs_rs
#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR-RIP
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.95.10
. /etc/rc.d/init.d/functions
start() {
PID=`ifconfig | grep lo:10 | wc -l`
if [ $PID -ne 0 ];
then
echo "The LVS-DR-RIP Server is already running !"
else
/sbin/ifconfig lo:10 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:10
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/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
/bin/touch $LOCK
echo "starting LVS-DR-RIP server is ok !"
fi
}
stop() {
/sbin/route del -host $VIP dev lo:10
/sbin/ifconfig lo:10 down >/dev/null
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/eth0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
rm -rf $LOCK
echo "stopping LVS-DR-RIP server is ok !"
}
status() {
if [ -e $LOCK ];
then
echo "The LVS-DR-RIP Server is already running !"
else
echo "The LVS-DR-RIP Server is not running !"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $1 {start|stop|restart|status}"
exit 1
esac
exit 0
chomd +x /etc/init.d/lvs_rs # 添加執(zhí)行權(quán)限
/etc/init.d/lvs_rs start # 啟動(dòng)腳本
route -n # 查看路由
5、修改keeplaived服務(wù)器配置文件(實(shí)現(xiàn)健康檢查和故障切換功能)
! Configuration File for keepalived # 主配置文件
global_defs { # 全局配置
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL1
}
vrrp_instance VI_1 { # 實(shí)例一
state MASTER # 指定為主節(jié)點(diǎn)
# nopreempt 非搶占模式
interface ens33 # 指定VIP綁定網(wǎng)卡
virtual_router_id 51 # 指定實(shí)例的id
priority 100 # 指定主節(jié)點(diǎn)的優(yōu)先級(jí),主節(jié)點(diǎn)要高于備節(jié)點(diǎn)
advert_int 1 # 指定發(fā)送vrrp通告的間隔
authentication {
auth_type PASS # 指定認(rèn)證方式
auth_pass 1111 # 指定使用密碼
}
virtual_ipaddress { # 指定vip(需要與真實(shí)ip在同一個(gè)網(wǎng)段)
192.168.134.100
}
}
# 以下是做LVS配置
virtual_server 192.168.134.100 80 { # 指定所綁定的VIP及端口
delay_loop 6 # 健康檢查的時(shí)間間隔
lb_algo rr # 指定LVS調(diào)度算法
lb_kind DR # 指定LVS模式,此處我們選取的是DR模式,還有NAT和TUN模式
protocol TCP # 指定四層協(xié)議為TCP
real_server 192.168.134.171 80 { # 指定真實(shí)服務(wù)器地址
weight 1 # 設(shè)定真實(shí)主機(jī)的權(quán)重
TCP_CHECK { # 選中健康檢查方式為tcp-check
connect_timeout 3 # 連接超時(shí)時(shí)間
retry 3 # 重試次數(shù)
delay_before_retry 3 # 在重試之前延遲多少秒
connect_port 80 # 指定連接端口
}
}
real_server 192.168.134.173 80 { # 指定另一臺(tái)真實(shí)服務(wù)器
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
connect_port 80
}
}
}
備節(jié)點(diǎn)配置
修改以下三處即可
router_id LVS_DEVEL2
state BACKUP
priority 80
6、重啟Keepalived
systemctl restart keepalived.service # 先啟動(dòng)主,再啟動(dòng)備
ip a|grep 192.168.134.100 # 此時(shí)只有主機(jī)有VIP,備機(jī),沒有
7、測(cè)試(找客戶端寫以下測(cè)試來訪問,得到如下結(jié)果即正確)文章來源:http://www.zghlxwxcb.cn/news/detail-646213.html
for ((i=1;i<=6;i++)); do curl http://192.168.134.100; done
結(jié)果:
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.171 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.171 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.171 192.168.122.1
8、測(cè)試健康檢查與故障轉(zhuǎn)移文章來源地址http://www.zghlxwxcb.cn/news/detail-646213.html
健康檢查:
停掉一臺(tái)web服務(wù)器
systemctl stop httpd
此時(shí)客戶端訪問結(jié)果: 由于時(shí)間設(shè)置,需要一段時(shí)間后才可以出結(jié)果,雖然訪問結(jié)果少了一臺(tái)web服務(wù)器,但是可以被另一臺(tái)頂上,同樣不影響訪問。
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
故障轉(zhuǎn)移:
停掉一臺(tái)keepalived服務(wù)器
systemctl stop keepalived
此時(shí)VIP轉(zhuǎn)移至另一臺(tái)
[root@localhost keepalived]# ip a|grep 192.168.134.100
inet 192.168.134.100/32 scope global ens33
客戶端訪問結(jié)果正常(1:1輪詢)
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.171 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.171 192.168.122.1
web test page ,ip is 192.168.134.173 192.168.122.1
web test page ,ip is 192.168.134.171 192.168.122.1
在重新啟動(dòng)主keepalived后,vip又回到主機(jī),訪問仍舊正常。
到了這里,關(guān)于Keepalived+Lvs高可用高性能負(fù)載配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!