keepalived完全遵守VRRP協議包括競選機制,至於VRRP是什麼這裡不說了參考http://wenku.baidu.com/link?url=1UbkmHuQlGECgC90P7zF6u2xYyifLK0F-G_7pehNVUitZZExISjZ-B22TJKKGyYIZXh9X7uULA8 ...
keepalived完全遵守VRRP協議包括競選機制,至於VRRP是什麼這裡不說了參考http://wenku.baidu.com/link?url=1UbkmHuQlGECgC90P7zF6u2xYyifLK0F-G_7pehNVUitZZExISjZ-B22TJKKGyYIZXh9X7uULA8lA1nKw0NsyNGelrt_yQ317knkVyjwCqW,不同的是VRRP里的路由器在keepalive中變成伺服器
vrrp的術語:虛擬路由器、VRID、Master、Backup、VIP、VMAC、優先順序、搶占式、非搶占式;
HA Cluster的配置前提: 1、各節點時間要同步 (查看兩台主機時間是否同步的命令date; ssh [email protected] 'date' 2、確保iptables及selinux不會成為障礙
yum -y install keepalived
/etc/keepalived/keepalived.conf 就是keepalived的主配置文件 配置文件的說明可以使用命令 man keepalived.conf
vim /etc/keepalived/keepalived.conf
global_defs 定義的是全局配置段, notification_email表示keepalived在發生諸如主從切換操作時需要發送email通知,以及email發送給哪些郵件地址,郵件地址可以多個每行一個
notification_email_from 發件人郵箱地址 , smtp_server 表示發送email時使用的smtp伺服器地址 , smtp_connect_timeout:與郵件伺服器建立連接的超時時長
router_id LVS_DEVEL:物理節點的標識符;建議使用主機名
vrrp_instance 配置虛擬伺服器實例, state MASTER|BACKUP:在當前VRRP實例中此節點的初始狀態, interface vrrp用於綁定vip的介面 , virtual_router_id 當前VRRP實例的VRID,可用範圍為0-255,預設為51, priority 100 設置本節點的優先順序優先順序高的為master可用範圍0-255, advert int 檢查間隔預設為1秒, authentication 這裡設置認證, auth type 認證方式 auth pass 認證密碼 virtual_ipaddress 配置虛擬ip地址
lvs配置段
配置一臺backup:
在兩台主機上都啟動keepalived service keepalived start
ip addr list, 可以看到master上已經配置了vip了
如果把master停掉 vip就會漂移到backup, 根據上面的配置使用mail命令去查看本地郵件 f|from num 指針移動到指定郵件 查看backup是否轉變為master,或者在backup主機上使用ip addr list 查看綁定的介面上是否有vip地址來決定狀態是否轉換,前提是還得寫一個腳本來說明郵件的內容是什麼
接下來就寫這個腳本
腳本定義好了還得在配置文件中定義腳本怎麼引用
notify_master 如果該主機轉換成master則執行哪個腳本 notify_backup 轉換成backup執行哪個腳本 notify_fault 發生錯誤執行哪個腳本,notify這三條指令在master和backup都得給配置上
一臺master需要維護可以直接是用service keepalived stop 下麵介紹另外一種方法當一臺master主機需要維護時,通過腳本的方式使master降級為backup,不過預設情況下當原來的master恢復時會主動把master重新奪回
vrrp_script 定義哪一個腳本名 script 執行什麼腳本, interval 定義執行腳本的時間間隔, weight 如果script的執行狀態結果為失敗,則使priority減2
接下來還得在vrrp實例中調用該腳本
在track_script中調用前面定義過的腳本,腳本的目的是如果/etc/keepalived/目錄下有down文件則使該keepalived主機的priority減2,現在在另外一臺keepalived主機上也配置上
接下來在兩台keepalived主機上配置nginx並使nginx高可用,yum -y install nginx
rpm -ql nginx 查看一下網頁根目錄在哪 vim /usr/share/nginx/html/index.html
在後面添加了HAA
在後面添加了HA1,這樣兩nginx就配置上了
master在172.16.238.176上,接下來把master down掉,在/etc/keepalived/下 touch down創建一個down文件
master轉移到了192.168.238.177上了,現在的需要是創建一個腳本,能自動識別nginx作為反代伺服器是否線上,如果master上的nginx不線上立即將為backup,並使backup立即轉為master,實現nginx的高可用
killall -0 nginx 探測nginx是否線上,它不會殺死nginx進程,如果nginx線上則執行狀態返回值為0,反之為1,如果為1 就會使該keepalived主機的priority減5,降級為backup,如果從前的master nginx服務又啟動了,則會奪回master
在vrrp實例中調用該腳本
track_interface是監控網卡是否正常,它不需要定義腳本,有內置的腳本