keepalived+Lvs/DR集羣+高可用

keepalived+Lvs/DR集羣+高可用

keepalived+Lvs/DR集羣+高可用

keepalived是什麼
keepalived是集羣管理中保證集羣高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。

keepalived工作原理
keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議

虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master(主)和多個backup(備份),master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由爲該vip),master會發組播(224.?.?.?),當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,繼續提供服務,從而保證了高可用性。

軟件功能說明:
keepalived:實現中間件(代理服務器的高可用)。
LVS:是中間件軟件(即代理服務器軟件),是用來實現集羣的負載均衡。

+++++++++ 
+---------------------------> + Client + 192.168.11.1 win7/10
| +++++++++ 
| ________________|_________________ 
| | VIP eth0:1 192.168.10.100 | 
| +++++++++++++++++++++ +++++++++++++++++++++ 
| + Director master主 node11 + + Director backup備 node12 +
| +++++++++++++++++++++ +++++++++++++++++++++
| DIP 192.168.11.11 ens33網卡 DIP 192.168.11.12 ens33網卡
| |________
| _________________|________________
| | | 
| +++++++++++++++++ ++++++++++++++++++
+--------+ RealServer A node13 + + Real Server B node14 +
+++++++++++++++++ ++++++++++++++++++
192.168.11.13/24 192.168.11.14/24

分別在Director master、Director backup 上部署浮動資源(VIP IPVS策略)
測試2個Director在DR模式下都工作正常。測試完成後都撤掉浮動資源。

實驗準備:

先保證服務器防火牆和selinux都處於關閉狀態

這裏先臨時關閉一下

systemctl  stop   firewalld臨時關閉防火牆

setenforce  0 關閉selinux

getenforce  查selinux狀態

 

2臺Real Server ,ip設置爲192.168.11.13和192.168.11.14

1臺Director master,ip 設置爲192.168.11.11

1臺Director backup,ip設置爲192.168.11.12

實驗開始

在2臺real server部署apache服務

用yum安裝apache

yum  -y  install  httpd

systemctl  restart  httpd  啓動apache服務

systemctl  enable  httpd  設爲開機自啓

在默認網頁目錄中臨時添加內容

dFIBAAAAAAAA&ek=1&kp=1&pt=0&bo=1QEUAAAAAAADEPU!&tl=1&su=0218515809&tm=1554894000&sce=0-12-12&rf=2-9

做本地測試

dDYBAAAAAAAA&ek=1&kp=1&pt=0&bo=BAEiAAAAAAADEBI!&tl=1&su=057883121&tm=1554894000&sce=0-12-12&rf=2-9

vim lo.sh##寫入如下腳本

dDIBAAAAAAAA&ek=1&kp=1&pt=0&bo=sgFWAAAAAAADENA!&tl=1&su=031450833&tm=1554894000&sce=0-12-12&rf=2-9

加入可執行權限chmod +x lo.sh

運行腳本.  lo.sh

查一下ip

ip  a

dFMBAAAAAAAA&ek=1&kp=1&pt=0&bo=KgJXAAAAAAADEEo!&tl=1&su=07790113&tm=1554894000&sce=0-12-12&rf=2-9

會看到多出一個192.168.11.100的ip

再給這個腳本傳到另一臺real server

dFMBAAAAAAAA&ek=1&kp=1&pt=0&bo=KgJQAAAAAAADEE0!&tl=1&su=0128749553&tm=1554894000&sce=0-12-12&rf=2-9

到此13的機器就部署完了

現在部署另一臺real server

用yum安裝apache

yum  -y  install  httpd

systemctl  restart  httpd  啓動apache服務

systemctl  enable  httpd  設爲開機自啓

在默認網頁目錄中臨時添加內容,並做本地測試

dDYBAAAAAAAA&ek=1&kp=1&pt=0&bo=3QEyAAAAAAADENs!&tl=1&su=028554305&tm=1554894000&sce=0-12-12&rf=2-9

執行從13上傳過來的腳本、

. lo.sh

再次查看ip地址

dDYBAAAAAAAA&ek=1&kp=1&pt=0&bo=KgJRAAAAAAADEEw!&tl=1&su=0189239153&tm=1554894000&sce=0-12-12&rf=2-9

會發現多出一個ip地址。

到此,real server就部署好了。

 

現在部署Director master和Director backup

安裝keepalived和ipvsadm(主要用來查詢)

用yum安裝:

yum  -y  install  keepalived  ipvsadm

備份配置文件

cp  -av  /etc/keepalived/keepalived.conf{,.bak}

修改配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { 全局定義,說明:在實驗測試環境中,以下內容可以隨便寫,但是master和backup的router_id必須相同 
notification_email { 設置通知郵箱
root@localhost 管理員的郵箱地址 
}
notification_email_from keepalived@localhost 通知郵件的發件人郵箱
smtp_server 127.0.0.1 郵箱服務器IP地址
smtp_connect_timeout 30 郵件服務器連接超時時間爲30秒
router_id dr1 路由器ID名稱,同一個keepalived高可用集羣中master和backup的ID名稱必須相同
#vrrp_strict 一定要註釋掉此行,否則無法通過VIP地址訪問調度器
}

vrrp_instance VI_1 { vrrp虛擬路由冗餘協議的實例設置 ,實例名稱爲VI_1
state MASTER 狀態,主爲MASTER,備爲BACKUP狀態 
interface ens33 //心跳檢測網卡接口,要根據實際情況寫網卡接口名,用ip a查網卡接口名
virtual_router_id 51 //master主和backup備兩邊必須一樣,此處是集羣的羣號
priority 100 //優先級,MASTER的值必須高於BACKUP的值,類似於現實生活中的競選的票數
advert_int 1 //檢查間隔,單位秒。vrrp的組播地址是224.0.0.18
authentication { 身份認證配置
auth_type PASS //認證類型爲密碼方式,主備要一致
auth_pass 1111 //認證密碼爲1111,主備要一致
}
virtual_ipaddress {
192.168.11.100 //VIP,可多個IP,每行一個IP地址
192.168.11.111
}
}

virtual_server 192.168.11.100 80 { //LVS 配置(即調度器的配置),此行等同於ipvsadm -At 192.168.11.100:80 -s wrr命令
delay_loop 3 //服務論詢的時間間隔 
lb_algo wrr //LVS 調度算法
lb_kind DR // LVS 集羣模式
protocol TCP //指定協議爲TCP協議
real_server 192.168.11.13 80 { //RS後端真實服務器的IP及端口號,等同於ipvsadm -at 192.168.11.100:80 -r 192.168.11.13:80 -g -w 1命令
weight 1
TCP_CHECK { //RS健康檢查,如果RS主機上的80端口業務異常關閉了,用ipvsadm -Ln查不到此RS的IP信息
connect_timeout 3 //連接超時時間爲3秒
}
}
real_server 192.168.11.14 80 {
weight 1
TCP_CHECK {
connect_timeout 3
  }
}
}

dL4AAAAAAAAA&ek=1&kp=1&pt=0&bo=mwHqAQAAAAADEEQ!&tl=1&su=0189197937&tm=1554894000&sce=0-12-12&rf=2-9

dFMBAAAAAAAA&ek=1&kp=1&pt=0&bo=HAF7AAAAAAADEFM!&tl=1&su=0128066513&tm=1554894000&sce=0-12-12&rf=2-9

修改好配置文件後:傳給備服務器

cd   /etc/keepalived

dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=KgJNAAAAAAADEFA!&tl=1&su=0202287121&tm=1554894000&sce=0-12-12&rf=2-9

傳成功後:

在備服務器上,修改配置文件

vim   /etc/keepalived/keepalived.conf

dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=swFCAAAAAAADEMU!&tl=1&su=0250796481&tm=1554894000&sce=0-12-12&rf=2-9

最後,在Director上啓動服務。

systemctl  restart  keepalived  [centos7專用命令]

service keepalived  restart  [centos6和7通用命令]

查ipvsadm的集羣信息

dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=KgJVAAAAAAADEEg!&tl=1&su=0241684977&tm=1554894000&sce=0-12-12&rf=2-9

到此服務就部署完成了。

最後,測試

根據權重會有以下結果

dLkAAAAAAAAA&ek=1&kp=1&pt=0&bo=1wEZAQAAAAADEPs!&tl=1&su=031907345&tm=1554894000&sce=0-12-12&rf=2-9

最後,在192.168.11.11 master服務器上關掉keepalived服務

systemctl  stop  keepalived

用ip  a查一下ip地址

 dL4AAAAAAAAA&ek=1&kp=1&pt=0&bo=KgKCAAAAAAADEJ8!&tl=1&su=0239505041&tm=1554894000&sce=0-12-12&rf=2-9

會發現vip不見了

去backup服務器上查ip地址

dFMBAAAAAAAA&ek=1&kp=1&pt=0&bo=KgKUAAAAAAADEIk!&tl=1&su=0111835025&tm=1554894000&sce=0-12-12&rf=2-9

到此,服務全部結束

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章