1. 程式人生 > >LVS + Keepalived 高可用群集 【DR模式】

LVS + Keepalived 高可用群集 【DR模式】

ifcfg ofo net 解決方案 字符串 Linux 服務 openssl ilove roo

簡介

Keepalived 起初是專門針對 LVS 設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查( Health Checking )功能——判斷 LVS 負載調度器、節點服務器的可用性,及時隔離並替換為新的服務器,當故障主機恢復後就會重新加入群集中。


Keepalived 采用 VRRP (虛擬路由冗余協議)熱備份協議,和HSRP一樣,只不過 HSRP 是思科私有的協議,VRRP 可以跑在很多設備上!VRRP 是以軟件的方式實現 Linux 服務器的多機熱備功能。


VRRP 工作原理:它是針對路由器的一種備份解決方案——由多臺路由器組成一個熱備份,通過公用的虛擬IP 地址對外 提供服務;一個組只有一個主路由,其他的路由器就會處於待命的狀態,每隔一定的時間 (可以人為配置)待命的路由設備就會詢問主路由器是否故障,如果一定的時間主路由沒有給予回答,待命的路由就會搶占主的位置,而繼續工作,此搶占會根據配置的優先級而決定。當然這裏是接替虛擬 IP地址再次提供服務,而訪問者在線下毫無感知!


這篇文章主要講 LVS + Keepalived 的高可用 ,所以有需要的可以看看 LVS 負載均衡群集詳解

使用 Keepalived 實現雙機熱備

配置前 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)

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


主服務器的配置

(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 //支持的協議為 TCP

real_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
    }
}

}


備用服務器配置

這裏備用服務器和主服務器配置都一樣,下面僅列出不一樣的地方供參考。
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模式】