LVS + Keepalived 高可用群集 【DR模式】
Keepalived 起初是專門針對 LVS 設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查( Health Checking )功能——判斷 LVS 負載調度器、節點服務器的可用性,及時隔離並替換為新的服務器,當故障主機恢復後就會重新加入群集中。
Keepalived 采用 VRRP (虛擬路由冗余協議)熱備份協議,和HSRP一樣,只不過 HSRP 是思科私有的協議,VRRP 可以跑在很多設備上!VRRP 是以軟件的方式實現 Linux 服務器的多機熱備功能。
VRRP 工作原理:它是針對路由器的一種備份解決方案——由多臺路由器組成一個熱備份,通過公用的虛擬IP 地址對外 提供服務;一個組只有一個主路由,其他的路由器就會處於待命的狀態,每隔一定的時間 (可以人為配置)待命的路由設備就會詢問主路由器是否故障,如果一定的時間主路由沒有給予回答,待命的路由就會搶占主的位置,而繼續工作,此搶占會根據配置的優先級而決定。當然這裏是接替虛擬 IP地址再次提供服務,而訪問者在線下毫無感知!
這篇文章主要講 LVS + Keepalived 的高可用 ,所以有需要的可以看看 LVS 負載均衡群集詳解
使用 Keepalived 實現雙機熱備
1· 配置前 IP 地址、 操作系統、用途規劃,如下表
操作系統 | IP地址 | 用途規劃 |
---|---|---|
RedHat 6.5 | 192.168.100.20 | 主調度服務器 |
RedHat 6.5 | 192.168.100.30 | 備調度服務器 |
-------- | -------- | -------- |
RedHat 6.5 | 192.168.100.40 | 第一臺節點服務器 |
RedHat 6.5 | 192.168.100.50 | 第二胎節點服務器 |
-------- | -------- | -------- |
無操作系統 | 192.168.100.10 | 漂移地址(VIP) |
2·Keepalived 安裝與服務控制
(1)在編譯安裝 keepalived 之前,必須安裝內即可開發包 kernel-devel ,還有 openssl-devel 、popt-devel 等支持庫,當然 gcc 、gcc-c++ 沒有的也裝上,最後還需要用到 ipvsadm 管理工具。
[root@HedHat ~]# yum -y install popt-devel kernel-devel openssl-devel gcc gcc-c++
(2)使用指定的 Linux 內核位置對 keepalived 進行配置,並將安裝的路徑指定為根目錄,這樣就不需要再創建軟連接。只有再使用 LVS 時,才需要參數 --with-kernel-dir。解壓軟件包、配置完成後再執行 make && make install
[root@HedHat ~]# tar -zxvf keepalived-1.2.13.tar.gz
[root@HedHat ~]# cd keepalived-1.2.13
[root@HedHat keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.i686/
[root@HedHat keepalived-1.2.13]# make && make install
(3)執行完 make install 後,會自動生成 /etc/init.d/keepalived 腳本文件,但是還需要手動添加為系統服務,這樣就可以用 service、chkconfig 工具來對 Keepalived 服務程序進行管理。
[root@HedHat keepalived-1.2.13]# chkconfig --add keepalived
[root@HedHat keepalived-1.2.13]# chkconfig keepalived on
3·主服務器的配置
(1)Keepalived 服務的配置目錄在 /etc/keepalived/keepalived.conf 。下面是對主配置文件的詳解、與正確配置!
! Configuration File for keepalived
global_defs {
notification_email { //發送報警郵件[email protected]
br/>[email protected]
br/>[email protected]
notification_email_from [email protected] //指明報警郵件地址
smtp_server 192.168.200.1 //郵件地址
smtp_connect_timeout 30 //smtp 超時時間
router_id LVS_DR1 //本路由器的名稱
}vrrp_instance VI_1 { //定義 VRRP 熱備是咧
state MASTER //熱備狀態 MASTER 表示主服務器,BACKUP 表示備用服務器
interface eth0 //承載VIP的物理接口
virtual_router_id 51 //虛擬路由器的 ID 號,每個熱備組需要保持一致
priority 100 //優先級,數值越高,優先級越大
advert_int 1 //通告間隔秒數
authentication { //認證信息
auth_type PASS //認證類型
auth_pass 1111 //認證密碼字符串
}
virtual_ipaddress { //指定漂移地址 (VIP)
192.168.100.10
}
}virtual_server 192.168.100.10 80 { //LVS的配置段,設置LVS的VIP地址和端口
delay_loop 6 / /服務輪詢時間的間隔
lb_algo rr //調度算法為:輪詢 (rr)算法
lb_kind DR //群集類型為 DR
nat_mask 255.255.255.0 //子網掩碼,可選項
persistence_timeout 50 //連接保持時長
protocol TCP //支持的協議為 TCPreal_server 192.168.100.40 80 { //配置節點服務器的 IP地址和端口 weight 1 //權重 TCP_CHECK { //檢測健康方式 connect_port 80 //檢測健康狀態向 80 端口發送請求 connect_timeout 3 //超時時間 nb_get_retry 3 //重試次數 delay_before_retry 3 //重試間隔多少秒 } } real_server 192.168.100.50 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
}
4·備用服務器配置
這裏備用服務器和主服務器配置都一樣,下面僅列出不一樣的地方供參考。
router_id LVS_DR2//備用的服務器需要改名稱
vrrp_instance VI_1 { //定義 VRRP 熱備是咧
state BACKUP //熱備狀態 需要改為BACKUP
priority 90 //優先級需要小於主調度服務器
5配置負載調度器分配策略
(1)配置虛擬IP地址,采用虛接口的方式 (eth0:0),為網卡eth0綁定 VIP 地址,方便響應群集訪問。VIP 地址是:192.168.100.10
[root@HedHat ~]# cd /etc/sysconfig/network-scripts
[root@HedHat network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@HedHat network-scripts]# vim ifcfg-eth0:0
......... 省略部分信息
> DEVICE=eth0:0
> ONBOOT=yes
> IPADDR=192.168.100.10
> NETMACK=255.255.255.0
(2)配置負載分配策略,這裏需要用到 ipvsadm 管理工具,安裝工具、在配置策略
[root@HedHat ~]# yum install ipvsadm -y
[root@HedHat ~]# modprobe ip_vs
[root@HedHat ~]# ipvsadm -A -t 192.168.100.20:80 -s rr
[root@HedHat ~]# ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.40 -g -w 1
[root@HedHat ~]# ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.50 -g -w 1
[root@HedHat ~]# service ipvsadm save //保存分配策略
[root@HedHat ~]# chkconfig --add ipvsadm
[root@HedHat ~]# chkconfig ipvsadm on
(3)從調度服務器的分配策略也是一樣,修改IP地址即可,這裏不再演示
6配置第一臺節點服務器
(1)調整 /proc 響應參數,對於 DR 群集模式來說,由於LVS 負載調度器和各個節點需要公用 VIP 地址,就要調整Linux 內核的重定向參數
[root@HedHat ~]# vim /etc/sysctl.conf
.............省略部分信息
> net.ipv4.conf.all.arp_ignore = 1
> net.ipv4.conf.all.arp_announce = 2
> net.ipv4.conf.lo.arp_ignore = 1
> net.ipv4.conf.lo.arp_announce = 2
> > [root@HedHat ~]# sysctl -p
(2)使用虛接口 lo:0 來承載 VIP 地址,並為本機添加一條路由記錄,講訪問 VIP 的數據限制在本地,以避免通信紊亂。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
..........省略部分信息
> DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.255 //這裏註意需要子網掩碼4個255
ONBOOT=yes[root@localhost ~]# route add -host 192.168.100.10 dev lo:0
測試、總結
安裝httpd,創建測試頁面、啟動httpd服務器程序。
關閉防火墻、setenforce 0
訪問地址應該是 我們配置的VIP地址
模擬故障測試,關閉主調度服務器的虛接口 eth0:0 再次訪問VIP 看看是否成功,成功的話就證明 Keepalived 配置成功。
也可以通過調度服務器的 /var/log/messages 日誌文件,可以跟蹤故障切換過程
也可以執行“ipvsadm -ln” “ipvsadm -lnc” 查看負載分配情況
LVS + Keepalived 高可用群集 【DR模式】