文章目錄
-
- 一、keepalived :
-
- (1)keepalived是什麼
- (2)keepalived工作原理
- 二、配置步驟:
-
- 第一步:配置兩台 DR
- 第二步:配置第一台節點伺服器 web1
- 第三步:配置第二台節點伺服器 web2
- 第四步:用戶端測試
- 第五步:部署 keepalived
- 第六步:實驗結果驗證
一、keepalived :
(1)keepalived是什麼
keepalived是叢集管理中保證叢集高可用的一個服務軟體,其功能類似于heartbeat,用來防止單點故障。
1、keepalived的三個核心子產品:
- core核心子產品
- chech健康監測
- vrrp虛拟路由備援協定
2、Keepalived服務的三個重要功能:
- 管理LVS
- 對LVS叢集節點檢查
- 作為系統網絡服務的高可用功能
(2)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協定的。
二、配置步驟:
實驗環境說明:
(1)準備四台虛拟機,兩台為排程伺服器,兩台為節點伺服器;
(2)排程伺服器部署 LVS 和 keepalived ,實作負載均衡和雙機熱備;
(3)用戶端主機能夠通過虛拟ip位址,通路到背景的 Web伺服器的網頁;
(4)實驗結果驗證:其中一台 DR 當機,通路正常進行,所有服務照常運作。
角色 | IP位址 |
---|---|
排程伺服器 DR1(主) | 192.168.100.201 |
排程伺服器 DR2 (備) | 192.168.100.202 |
節點伺服器 web1 | 192.168.100.221 |
節點伺服器 web2 | 192.168.100.222 |
虛拟 IP | 192.168.100.10 |
用戶端測試機 win7 | 192.168.100.50 |
第一步:配置兩台 DR
(1)安裝 ipvsadm 和 keepalived 包
yum install ipvsadm keepalived -y
(2)修改 /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
sysctl -p 這條指令是讓以上配置生效
(3)配置虛拟網卡(ens33:0):
1、注意路徑:/etc/sysconfig/network-scripts/
2、直接複制已有的網卡資訊,加以修改即可:
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
删除原來所有資訊,添加以下代碼:
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
3、啟用虛拟網卡:
ifup ens33:0
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3MDNxMjN1ATMwMTMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
(4)編寫服務啟動腳本,路徑:/etc/init.d
1、vim dr.sh 腳本内容如下:
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10
RIP1=192.168.100.221
RIP2=192.168.100.222
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
2、添權重限,啟動腳本
chmod +x dr.sh
service dr.sh start
(5)第二台 DR 配置和第一台一模一樣,重複操作一下即可
第二步:配置第一台節點伺服器 web1
(1)安裝 httpd
yum install httpd -y
systemctl start httpd.service //開啟服務
(2)在站點寫一個測試網頁,待會後面友善驗證試驗結果
路徑:/var/www/html
echo "this is accp web" > index.html
(3)建立虛拟網卡
1、路徑:/etc/sysconfig/network-scripts/
2、複制網卡資訊加以修改
cp ifcfg-lo ifcfg-lo:0
3、vim ifcfg-lo:0
删除原來所有資訊,添加以下内容:
DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
ONBOOT=yes
(4)編寫服務啟動腳本,路徑:/etc/init.d
1、vim web.sh 腳本内容如下:
#!/bin/bash
VIP=192.168.100.10
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
2、添權重限,并執行
chmod +x web.sh //添權重限
service web.sh start //啟動服務
(5)開啟虛拟網卡
ifup lo:0
(6)測試網頁是否正常
第三步:配置第二台節點伺服器 web2
第二台web和第一台配置一模一樣,唯一不同的是,為了區分實驗效果,第二台的測試網頁内容換了:
路徑:/var/www/html
echo "this is benet web" > index.html
測試網頁是否正常:
第四步:用戶端測試
(1)配置好用戶端的IP位址
(2)測試
1、與 192.168.100.10 能否互通:
2、通路網頁是否正常
第五步:部署 keepalived
一、在第一台 DR 上部署:
(1)修改 keepalived.conf 檔案,路徑 /etc/keepalived/
修改以下内容:
(2)啟動服務
systemctl start keepalived.service
二、在第二台 DR 上部署:
(1)修改 keepalived.conf 檔案
(2)啟動服務
systemctl start keepalived.service
第六步:實驗結果驗證
由于部署了 LVS 和 keepalived,目的是,負載均衡和雙機熱備。
此時,我們模拟一下故障,宕掉其中一台 DR1,如果用戶端依舊可以和虛拟 IP位址 互通,且能夠正常通路網站的話,就說明 DR2 就代替 DR1 工作了,防止單點故障的效果實作了。
(1)故障模拟:宕掉 DR1
ifdown ens33:0
(2)結果驗證
1、在用戶端 ping 一下虛拟ip
2、網站也依舊能夠通路