一 . keepalived簡介html
keepalived是什麼?
node
keepalived是集羣管理中保證集羣高可用的一個服務軟件,其功能相似於heartbeat,用來防止單點故障。
keepalived工做原理mysql
keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,能夠認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master(主)和多個backup(備份),master上面有一個對外提供服務的vip(該路由器所在局域網內其餘機器的默認路由爲該vip),master會發組播(224.0.0.18),當backup收不到vrrp包時就認爲master宕掉了,這時就須要根據VRRP的優先級(priority)來選舉一個backup當master。這樣的話就能夠保證路由器的高可用了。
keepalived主要有三個模塊,分別是core(核心)、check(檢測)和vrrp(虛擬路由冗餘協議)。core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件(keepalived.conf)的加載和解析。check負責健康檢查,包括常見的各類檢查方式(TCP、腳本檢測進程狀態等)。vrrp模塊是來實現VRRP協議的。
keepalived的常見組合:
keepalived+LVS
keepalived+nginx
keepalived+mysql-proxy
keepalived+mycat
keepalived+LVS
Keepalived 是一個基於VRRP協議來實現的LVS服務高可用方案,能夠利用其來避免單點故障。一個LVS服務會有2臺服務器運行Keepalived,一臺爲主服務器(MASTER),一臺爲備份服務器(BACKUP),可是對外表現爲一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候, 備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。linux
二 . keepalived+LVS\DR的搭建nginx
實驗拓撲圖
web
實驗準備
算法
客戶端/服務器 | IP地址 |
Client | 192.168.11.1 |
Director master (node11) |
192.168.11.11/24 |
Director Backup (node12) | 192.168.11.12/24 |
Real Server (node13) | 192.168.11.13/24 |
Real Server (node14) | 192.168.11.14/24 |
四臺服務器均關閉防火牆和selinuxsql
systemctl stop firewalld #關閉防火牆apache
systemctl status firrewalld #查看防火牆vim
setenforce 0 #關閉selinux
getenforce #查看selinux是否關閉
服務部署流程
首先簡單部署後端服務器(real server) , 後端web服務器能夠是apache , nginx 等服務
在node13和node14上部署apache服務 , 並設置主頁
node13(192.168.11.13)上的操做
yum install -y httpd #用yum安裝httpd軟件 echo 'www.node13.com' > /var/www/html/index.html #設置apache主頁 , node13上作 systemctl start httpd #重啓服務 curl 192.168.11.13 #內測httpd服務
vim lo.sh #編輯腳本,內容以下 #!/bin/bash ifconfig lo:1 192.168.11.100 netmask 255.255.255.255 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce chmod +x lo.sh #給腳本執行權限 bash lo.sh #運行腳本,出現下圖片中的IP則表示正確 scp lo.sh root@192.168.11.14:/root/ #把lo.sh上傳到192.168.11.14的root家目錄中
node14(192.168.11.14)上的操做
yum install -y httpd #用yum安裝httpd軟件 echo 'www.node14.com' > /var/www/html/index.html #設置apache主頁 , node13上作 systemctl start httpd #重啓服務 curl 192.168.11.13 #內測httpd服務 bash lo.sh
部署Master Director Server 服務(192.168.11.11)
yum install -y keepalived ipvsadm #安裝keepalived軟件和ipvsadm命令 cd /etc/keepalived cp -av keepalived.conf{,.bak} #備份keepalived主配置文件
vim keepalived.conf #編輯keepalived配置文件 , 以下圖
配置文件詳解:
配置好keepalived文件定義集羣后 , 重啓服務 , 查看IP和ipvsadm集羣信息
systemctl restart keepalived #重啓服務 ip a #此處查看ip信息 , 會多出一個vrrp的虛擬IP(VIP地址)
ipvsadm -Ln #查看ipvsadm集羣VIP所對應的後端web服務器IP信息
把配置文件keepalived.conf配置文件傳到192.168.11.12備服務器上
[root@node11 keepalived]# scp keepalived.conf root@192.168.11.12:/etc/keepalived/
部署Backup Director Server 服務(192.168.11.12)
yum install -y keepalived ipvsadm vim /etc/keepalived/keepalived.conf
systemctl restart keepalived #重啓keepalived服務
修改好配置文件重啓服務後 , 此時ip a 查看ip地址信息 , 發現VIP地址併爲出現 , 緣由是主服務器未down掉
配置好主備服務後 , 進行測試:
測試結果每訪問3次192.168.11.14 , 再訪問一次192.168.11.13 ,(LVS調度算法權重)成功負載均衡進行輪詢
此時僞裝把主服務器192.168.11.11down掉 , 查看192.168.11.12的IP狀態 ,並再次執行測試
關閉node11的keepalived服務
查看192.168.11.12上的IP信息 , 發現成功繼承VIP:192.168.11.100,並繼續承當起負載均衡器 , 實現高可用
再次測試:
抓包分析:
keepalived經過vrrp協議進行組播的做用:是爲了競選出由哪臺keepalived主機接管業務(使用VIP的)。誰的priority優先級高(即票數多),誰就有VIP地址。
當master和backup都在運行keepalived服務時:在備服務器node12抓取vrrp包 , 發現是192.168.11.11在不間斷髮送vrrp組播node11(master)發送的組播信息:
node12(backup)接收的組播信息:
src:192.168.11.11
dest:224.0.0.18
keepalived集羣中其餘主機接收的組播信息:
src:192.168.11.11
dest:224.0.0.18
當192.168.11.11down掉後 , 192.168.11.12競選 ,開始由192.168.11.11不間斷髮送vrrp包變成192.168.11.12開始不間斷髮送vrrp組播
node12發送的組播信息:
src:192.168.11.12
dest:224.0.0.18
keepalived集羣中其餘主機接收的組播信息:
src:192.168.11.12
dest:224.0.0.18