Keepalived实现LVS-DR双机热备_2015101601
Keepalived實現LVS-DR模型的高可用
?
>>>拓撲結構簡介
?
本次實驗所使用的系統發行版本為:centos6.6
(nod1)路由器,為一臺linux主機模擬,共有兩個接口eth0內網172.16.0.0/16網段,并且該接口為內網RS的網關;eth1為外網192.168.1.0/24網段,為外網客戶端的網關
(nod55)為MASTER調度器,DIP為172.16.13.55/16,keepalived工作于搶占模式
(nod44)為BACKUP調度器,DIP為172.16.13.44/16,keepalived工作于搶占模式
(nod22)為RS1,運行httpd服務,負責提供web服務
(nod33)為RS2,運行httpd服務,負責提供web服務
(Client)使用一臺linux虛擬機模擬,網關指向nod1的eth1接口
實驗目的
利用keepalived,實現LVS-DR模型的雙機熱備。當nod55故障停機,nod44自動搶占VIP地址,并提供LVS調度功能;并且當nod55修復上線后,其自動搶占VIP,繼續作為MASTER服務器
?
實驗準備
在VMware中創建6臺,nod22、nod33、nod44、nod55各裝配有一塊網卡,為橋接模式,nod1的eth0網卡為橋接模式,wth1網卡為自定義網絡vmnet10;Client(nod66)網卡也為自定義網絡vmnet10
?
實驗配置:以下配置基本為當前生效,重啟生效,若想永久生效需自行修改保存對應的配置文件
關于keepalived配置參數介紹,請參見http://imsupeng.blog.51cto.com/10651675/1703673
?
(nod55)MASTER的配置:提前配置好eth0的IP為172.16.13.55/16,網關無需指定
>>>關閉selinux,清空防火墻規則
[root@nod55?~]#?setenforce?0 [root@nod55?~]#?iptables?–F?
>>>由于keepalive的配置前提必須(1、主備節點時間同步;2、主備節點主機名必須是使用hostname或uname –r命令獲取的一直,并且能互相解析);因此,需要修改主機名并添加主備節點的hosts文件解析
[root@nod55?~]#?sed?-i?'s/\(HOSTNAME=\).*/\1nod55/'?/etc/sysconfig/network?&&?hostname?nod55 [root@nod55?~]#?echo?-e?'127.0.0.1nod55\n172.16.13.44?nod44'?>>?/etc/hosts? ##172.16.13.44為BACKUP節點的DIP [root@nod55?~]#?crontab?-e???? ##編輯crontab任務計劃,添加如下內容,實現每3分鐘自動時間同步 */3?*?*?*?*?/usr/sbin/ntpdate?ntp.sjtu.edu.cn?&>?/dev/null?&&?/sbin/hwclock?-w?
?
>>>安裝keepalived,并進行配置;
[root@nod55?~]#?yum?install?-y??keepalived???##需事先配置好yum源 [root@nod55?~]#?vim?/etc/keepalived/keepalived.conf? ##編輯keepalived配置文件,將配置文件所有內容刪除,粘貼如下配置! Configuration File for keepalived
?
global_defs {???
??notification_email {
???????root@localhost
?? }
??notification_email_from kaadmin@nod55
??smtp_server 127.0.0.1
??smtp_connect_timeout 30
??router_id nod55???????? ##此項為當前主機的主機名
}
?
vrrp_script chk_down {
??????? script "[[-e /etc/keepalived/down ]] && exit 1 || exit 0"
??????? interval 1
??????? weight -2
}??????? ##此處為定義一個腳本,用于在線將主節點設置為維護模式,此處腳本的意義為:每隔一秒檢查一下/etc/keepalived/目錄下是否存在一個名為down的文件,此文件一旦存在,便會執行將調用此腳本的VRRP實例的優先級(priority)減去2.
?
vrrp_instance VI_1 {
???state MASTER ##此處聲明當前節點為MASTER節點
???interface eth0 ##聲明將VIP綁定在eth0網卡
???virtual_router_id 13???????? ##主備節點此處必須相同,若有多個VRRP實例,每個實例的此項不能相同
???priority 100????? ##設置優先級,主節點必須大于備節點
???advert_int 1???? ##keepalive的狀態通告周期時間/s
???authentication {
???????auth_type PASS??????? ##狀態通告信息使用明文驗證
???????auth_pass 5ffffc4b? ##狀態通告信息驗證密碼
??? }
???virtual_ipaddress {
???????172.16.13.100/32 dev eth0 label eth0:1????????? ##VIP地址
}
track_script {
???????? chk_down
}??????? ##此處為調用前面所定義的腳本
}
virtual_server 172.16.13.100 80 {
???delay_loop 3??? ##對RealServer的健康狀態探測的時間間隔
???lb_algo rr ##LVS的調度算法
???lb_kind DR??????? ##LVS的類型,這里使用的是DR模型
???nat_mask 255.255.255.255??? ##VIP的掩碼,需和VRRP實例中定義的掩碼一致
???protocol TCP
?
???real_server 172.16.13.22 80 {
???????weight 1
???????HTTP_GET {????? ##聲明狀態監測的方法
???????????url {
????????????? path /
????????????? status_code 200
???????????}
???????????connect_timeout 3
???????????nb_get_retry 3
???????????delay_before_retry 3
???????}
??? }
?
???real_server 172.16.13.33 80 {
???????weight 1
???????HTTP_GET {
???????????url {
????????????? path /
????????????? status_code 200
???????????}
???????????connect_timeout 3
???????????nb_get_retry 3
???????????delay_before_retry 3
???????}
??? }
?
}
?
>>>啟動keepalived進程,并添加至開機自動啟動
[root@nod55?~]#?service?keepalived?start [root@nod55?~]#?chkconfig?--add?keepalived;?chkconfig?keepalived?on?
?
(nod44)MASTER的配置:提前配置好eth0的IP為172.16.13.44/16,網關無需指定
>>>關閉selinux,清空防火墻規則
[root@nod44?~]#?setenforce?0 [root@nod44?~]#?iptables?–F?
>>>修改主機名并添加主備節點的hosts文件解析;設置時間同步
[root@nod44?~]#?sed?-i?'s/\(HOSTNAME=\).*/\1nod44/'?/etc/sysconfig/network?&&?hostname?nod44 [root@nod44?~]#?echo?-e?'127.0.0.1?nod44\n172.16.13.55nod55'?>>?/etc/hosts? ##172.16.13.55為MASTER節點的DIP [root@nod44?~]#?crontab?-e???? ##編輯crontab任務計劃,添加如下內容,實現每3分鐘自動時間同步 */3?*?*?*?*?/usr/sbin/ntpdate?ntp.sjtu.edu.cn?&>?/dev/null?&&?/sbin/hwclock?-w?
?
>>>安裝keepalived,并進行配置;
[root@nod44?~]#?yum?install?-y??keepalived?##需事先配置好yum源 [root@nod44?~]#?vim?/etc/keepalived/keepalived.conf##編輯keepalived配置文件,將配置文件所有內容刪除,粘貼如下配置! Configuration File for keepalived
global_defs {
??notification_email {
???????root@localhost
?? }
??notification_email_from kaadmin@nod44
??smtp_server 127.0.0.1
??smtp_connect_timeout 30
??router_id nod44
}
?
?
vrrp_instance VI_1 {
??? state BACKUP
???interface eth0
??? virtual_router_id 13
??? priority 99
???advert_int 1
???authentication {
???????auth_type PASS
???????auth_pass 5ffffc4b
??? }
???virtual_ipaddress {
???????172.16.13.100/32 dev eth0 label eth0:1
??? }
?
}
?
virtual_server 172.16.13.100 80 {
??? delay_loop3
???lb_algo rr
???lb_kind DR
???nat_mask 255.255.255.255
protocol TCP
?
???real_server 172.16.13.22 80 {
???????weight 1
???????HTTP_GET {
???????????url {
????????????? path /
????????????? status_code 200
???????????}
???????????connect_timeout 3
???????????nb_get_retry 3
???????????delay_before_retry 3
???????}
??? }
?
???real_server 172.16.13.33 80 {
???????weight 1
???????HTTP_GET {
???????????url {
????????????? path /
????????????? status_code 200
???????????}
???????????connect_timeout 3
???????????nb_get_retry 3
???????????delay_before_retry 3
???????}
??? }
?
}
?
>>>啟動keepalived進程,并添加至開機自動啟動
[root@nod44?~]#?service?keepalived?start [root@nod44?~]#?chkconfig?--add?keepalived;?chkconfig?keepalived?on?
?
(nod22)RS1的配置:提前配置好eth0的IP為172.16.13.22/16,網關需指向172.16.13.1(router的IP)
>>>關閉selinux,清空防火墻規則
[root@nod22?~]#?setenforce?0 [root@nod22?~]#?iptables?–F?
>>>安裝httpd,提供網頁文件并啟動httpd
[root@nod22?~]#?yum?install?-y?httpd?????##需事先配置好yum源 [root@nod22?~]#?echo?"nod22"?>/var/www/html/index.html [root@nod22?~]#?service?httpd?start?
>>>在物理機測試http服務是否正常
?
>>>在/root目錄下編寫如下腳本,命名為initset.sh(自定義腳本名),內容如下
由于LVS-DR模型RS上需要配置有VIP地址并隔離本機的VIP的ARP通告,以防影響VIP對外部請求的接收及調度,此腳本便是實現這些功能,并設置VIP地址到lo網卡的別名上,注意,此處隔離ARP通告和設置IP地址的順序不能隨便
#!/bin/sh # case?$1?in start)echo?1?>?/proc/sys/net/ipv4/conf/all/arp_ignoreecho?1?>?/proc/sys/net/ipv4/conf/lo/arp_ignoreecho?2?>?/proc/sys/net/ipv4/conf/all/arp_announceecho?2?>?/proc/sys/net/ipv4/conf/lo/arp_announceifconfig?lo:0?172.16.13.100/32?broadcast?172.16.13.100?up;; stop)ifconfig?lo:0?downecho?0?>?/proc/sys/net/ipv4/conf/all/arp_ignoreecho?0?>?/proc/sys/net/ipv4/conf/lo/arp_ignoreecho?0?>?/proc/sys/net/ipv4/conf/all/arp_announceecho?0?>?/proc/sys/net/ipv4/conf/lo/arp_announce;; Esac>>>運行此腳本,并向其傳遞start參數
[root@nod22?~]#?bash?/root/initset.sh?start?
?
(nod33)RS2的配置:提前配置好eth0的IP為172.16.13.33/16,網關需指向172.16.13.1(router的IP)
>>>關閉selinux,清空防火墻規則
[root@nod33?~]#?setenforce?0 [root@nod33?~]#?iptables?–F?
>>>安裝httpd,提供網頁文件并啟動httpd
[root@nod33?~]#?yum?install?-y?httpd?????##需事先配置好yum源 [root@nod33?~]#?echo?"nod33"?>/var/www/html/index.html [root@nod33?~]#?service?httpd?start?
>>>在物理機測試http服務是否正常
?
>>>在/root目錄下編寫如下腳本,命名為initset.sh(自定義腳本名),內容如下
#!/bin/sh # case?$1?in start)echo?1?>?/proc/sys/net/ipv4/conf/all/arp_ignoreecho?1?>?/proc/sys/net/ipv4/conf/lo/arp_ignoreecho?2?>?/proc/sys/net/ipv4/conf/all/arp_announceecho?2?>?/proc/sys/net/ipv4/conf/lo/arp_announceifconfig?lo:0?172.16.13.100/32?broadcast?172.16.13.100?up;; stop)ifconfig?lo:0?downecho?0?>?/proc/sys/net/ipv4/conf/all/arp_ignoreecho?0?>?/proc/sys/net/ipv4/conf/lo/arp_ignoreecho?0?>?/proc/sys/net/ipv4/conf/all/arp_announceecho?0?>?/proc/sys/net/ipv4/conf/lo/arp_announce;; Esac>>>運行此腳本,并向其傳遞start參數
[root@nod22?~]#?bash?/root/initset.sh?start?
?
(nod1)ROUTER的網卡配置,無需指定網關
>>>關閉selinux及清空防火墻規則
[root@nod1?~]#?iptables?-F [root@nod1?~]#?setenforce?0?
》》》開啟主機的核心轉發功能
[root@nod1?~]#?echo?1?>/proc/sys/net/ipv4/ip_forward?
>>>網卡配置
?
?
?
?
?
(Client)客戶端IP設置為192.168.1.12/24
@@@此處再次聲明:Client和ROUTER(nod1)的eth1連接在自定義網絡vmnet10上,MASTER、BACKUP及RS的網卡都為橋接模式
?
?
?
第一步:由于在定義keepalived時,配置文件中創建了降級維護的腳本,因此首先在MASTER節點(nod55)上測試keepalived主備節點是否正常
?
>>>在/etc/keepalived/目錄下創建一個名為“down”的文件,測試VIP是否能正常轉移
[root@nod55?~]#?cd?/etc/keepalived/ [root@nod55?keepalived]#?touch?down [root@nod55?keepalived]#?ls down?keepalived.conf?keepalived.conf.bak?
?
?
測試正常,將nod55的down文件刪除,使nod55再次成為MASTER節點
?
?
第二步:客戶端使用curl命令進行請求測試:
測試正常
?
第三部:將MASTER節點置為維護狀態(在nod55主機的/etc/keepalived目錄下創建名為down的文件),然后再從客戶端進行訪問測試
?
?
?
?
?
轉載于:https://blog.51cto.com/imsupeng/1703688
總結
以上是生活随笔為你收集整理的Keepalived实现LVS-DR双机热备_2015101601的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SD卡中FAT32文件格式快速入门(图文
- 下一篇: 利用运行时设置UITextField 光