1、Keepalivedhtml
①keepalived是專爲LVS和HA設計的一款健康檢查工具,支持故障自動切換和節點健康狀態檢查,可判斷LVS負載調度器和節點服務器的可用性,構建高可用性的LVS負載均衡羣集web
②官方網站:http://www.keepalived.org/瀏覽器
2、VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)服務器
①VRRP是由IETF提出的解決局域網中配置靜態網關出現單點失效現象的路由協議,其工做原理與CISCO的HSRP相似,即由多臺路由器組成一個熱備組,經過共用的虛擬IP地址對外提供服務,每一個熱備組內同一時刻只有一臺主路由器(master)提供服務,其餘路由器處於冗餘狀態(backup),若當前主路由器失效,則處於冗餘狀態的路由器會自動接替虛擬IP地址,繼續提供服務負載均衡
②VRRP與HSRP主要區別在於:HSRP是CISCO私有,而VRRP是公有的,目前廠商都支持;HSRP中不容許虛擬IP地址使用HSRP組內設備的真實IP地址,而VRRP中容許使用VRRP組內設置的IP地址ide
③虛擬IP地址,即虛擬路由器的IP地址能夠在熱備組內的路由器之間進行轉移,所以也稱爲漂移IP地址,其不須要手動配置,Keepalived會自動創建進行配置管理工具
3、keepalived主配置文件/etc/keepalived/keepalived.confoop
全局設置:global_defs { ... }測試
熱備設置:vrrp_instance 實例名稱 { ... }網站
樣例文件位於:/etc/keepalived/samples/...
state:設置本節點狀態,MASTER、SLAVE
priority:設置競選優先級,數值越大優先級越高
virtual_ipaddress { ... }:設置漂移IP地址
實驗一:使用Keepalived實現雙機熱備
1、基本配置
1、配置各Linux主機名
vi /etc/sysconfig/network
HOSTNAME=master.benet.com
vi /etc/hosts
172.16.16.173 master.benet.com
2、配置IP地址、關閉iptables
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.16.173
NETMASK=255.255.255.0
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot --------從新啓動虛擬機,其餘虛擬機配置與之相似
2、配置主服務器
1、安裝支持軟件
yum -y install kernel-devel openssl-devel popt-devel
2、編譯安裝Keepalived
tar zxf keepalived-1.2.2.tar.gz -C /usr/src
cd /usr/src/keepalived-1.2.2/
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686/
------將keepalived安裝到根目錄,同時指定Linux內核位置
make & make install
chkconfig --add keepalived ----將keepalived添加爲系統服務,方便管理
chkconfig keepalived on
3、修改主配置文件/etc/keepalived/keepalived.conf
vi /etc/keepalived/keepalived.conf
global_defs {
router_id master.benet.com -----指定本服務器的主機名
}
vrrp_instance VI_1 { -----定義VRRP實例
state MASTER ---- MASTER爲主路由器,SLAVE爲備用路由器
interface eth0 -----承載VIP地址的物理接口
virtual_router_id 51 -----熱備組ID號,每一個組應保持一致
priority 100 -----優先級,越大優先級越高
advert_int 1 -----心跳頻率
authentication { -----認證信息
auth_type PASS -----認證類型爲密碼
auth_pass 123456 ----密碼字符串
}
virtual_ipaddress { -----指定漂移IP地址
172.16.16.172
}
}
service keepalived start
ip addr show dev eth0 -----經過ip命令查看自動添加的虛擬IP地址
3、配置備用服務器
備用服務器的配置與主服務器基本相似,只有主配置文件keepalived.conf的部分配置項有所不一樣
1、安裝支持軟件
yum -y install kernel-devel openssl-devel popt-devel
2、編譯安裝Keepalived
tar zxf keepalived-1.2.2.tar.gz -C /usr/src
cd /usr/src/keepalived-1.2.2/
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686/
------將keepalived安裝到根目錄,同時指定Linux內核位置
make & make install
chkconfig --add keepalived ----將keepalived添加爲系統服務,方便管理
chkconfig keepalived on
3、修改主配置文件/etc/keepalived/keepalived.conf
vi /etc/keepalived/keepalived.conf
global_defs {
router_id backup.benet.com
}
vrrp_instance VI_1 {
state SLAVE ----- SLAVE表示備用路由器
priority 90 -----優先級數值應小於主服務器
authentication {
auth_type PASS
auth_pass 123456 ----密碼字符串與主服務器相同
}
virtual_ipaddress {
172.16.16.172 -----指定漂移IP地址
}
}
service keepalived start
ip addr show dev eth0
4、測試雙機熱備
Keepalived的日誌消息保存在/var/log/messages中,可查看此日誌文件觀察熱備狀態的變化
1、連通性測試
步驟:在客戶機上持續ping虛擬IP地址====>禁用主服務器的eth0網卡===>啓用主服務器的eth0網卡,觀察變化
ping -t 172.16.16.172
2、訪問Web服務測試
步驟:在主服務器和備用服務器上分別安裝httpd服務,並提供不一樣的web頁面====>禁用主服務器的eth0網卡===>啓用主服務器的eth0網卡,訪問測試
http://172.16.16.172
3、查看日誌文件
觀察日誌文件的變化
more /var/log/messages
實驗二:構建LVS+Keepalived高可用性羣集
本實驗案例以DR模式的LVS羣集爲基礎,經過LVS+Keepalived實現Web站點的負載均衡和高可用性,其中包括兩臺熱備的負載調度器、兩臺Web節點服務器、一臺NFS服務器、一臺客戶機
1、基本配置
配置各Linux主機名、關閉iptables等
2、配置主調度器
1、爲eth0、eth1、eth0:0配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.16.253
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.7.253
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=172.16.16.172
NETMASK=255.255.255.0
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot --------從新啓動虛擬機
2、調整/proc內核參數,關閉重定向響應
因爲負載調度器和各節點共用VIP地址,爲避免ARP解析異常,故關閉內核的重定向響應
vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
sysctl –p
3、加載模塊、安裝LVS羣集管理工具
modprobe ip_vs
rpm -ivh /mnt/iso/Packages/ipvsadm-1.25-9.el6.i686.rpm
yum -y install vsftpd -----配置yum倉庫,方便安裝軟件包
vi /etc/vsftpd/vsftpd.conf
anon_root=/mnt
service vsftpd start
chkconfig vsftpd on
4、編譯安裝Keepalived
yum -y install kernel-devel openssl-devel popt-devel
tar zxvf keepalived-1.2.2.tar.gz -C /usr/src
cd /usr/src/keepalived-1.2.2/
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686/
-----將keepalived安裝到根目錄,同時指定Linux內核位置
make & make install
chkconfig --add keepalived ----將keepalived添加爲系統服務,方便管理
chkconfig keepalived on
5、修改主配置文件/etc/keepalived/keepalived.conf
vi /etc/keepalived/keepalived.conf
global_defs {
router_id master.benet.com -----指定本服務器的主機名
}
vrrp_instance VI_1 { -----定義VRRP實例
state MASTER ----- MASTER爲主路由器,SLAVE爲備用路由器
interface eth0 -----承載VIP地址的物理接口
virtual_router_id 51 -----熱備組ID號,每一個組應保持一致
priority 100 -----優先級,越大優先級越高
advert_int 1 -----心跳頻率
authentication { -----認證信息
auth_type PASS -----認證類型爲密碼
auth_pass 123456 ----密碼字符串
}
virtual_ipaddress { -----指定漂移IP地址
172.16.16.172
}
}
virtual_server 172.16.16.172 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 172.16.16.21 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.16.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
service keepalived start
3、配置從調度器
從調度器折配置與主調度器基本相同,不一樣之處主要在於router_id、state、priority參數
vi /etc/keepalived/keepalived.conf
global_defs {
router_id master.benet.com
}
vrrp_instance VI_1 {
state SLAVE
priority 90
}
service keepalived start
4、配置NFS服務器
1、爲eth0配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.7.250
NETMASK=255.255.255.0
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot
2、安裝ntf-utils、rpcbind軟件包
yum -y install nfs-utils rpcbind
3、設置共享目錄
mkdir -p /opt/wwwroot
vi /etc/exports
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)
4、啓動服務並查看發佈的共享目錄
service rpcbind start
service nfs start
chkconfig rpcbind on
chkconfig nfs on
netstat -anpt | grep rpcbind -----使用111端口
showmount -e 127.0.0.1
5、配置節點服務器
1、爲eth0、eth1、lo:0配置IP地址,並添加路由記錄
①配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.16.21
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.7.21
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=172.16.16.172 -----此地址僅用做響應數據包的源地址
NETMASK=255.255.255.255 -----子網掩碼必須全爲1
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot -------從新啓動虛擬機,節點2的配置與之相似
②添加VIP本地訪問路由
vi /etc/rc.local
/sbin/route add -host 172.16.16.172 dev lo:0
route add -host 172.16.16.172 dev lo:0
2、調整/proc內核參數,關閉重定向響應
vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl –p
3、安裝rpcbind軟件包以實現訪問NFS共享資源
yum -y install nfs-utils rpcbind
service rpcbind start
chkconfig rpcbind on
showmount -e 192.168.7.250
4、掛載NFS共享目錄
mkdir -p /var/www/html
mount 192.168.7.250:/opt/wwwroot /var/www/html
vi /etc/fstab
192.168.7.250:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0
5、安裝httpd軟件包並建立測試頁面
yum –y install httpd
echo welcome to web! > /var/www/html/index.html
service httpd start
chkconfig httpd on
6、測試LVS羣集
在外網客戶機中訪問http://172.16.16.172能夠看到Web頁面內容
當主調度器失效時Web站點仍能夠訪問(可能須要刷新或從新打開瀏覽器),實現高可用性;只要有兩臺或以上Web節點服務器可用,則可實現負載均衡
只要保持至少一個Web節點服務器可用,則整個站點依然可用
more /var/log/messages ----查看日誌,跟蹤故障切換過程
ipvsadm -Ln -----查看節點狀態
ipvsadm -Lnc -----查看負載鏈接狀況
補充:啓用郵件通知功能(主、從調度器)
當節點狀態異常時發送通知
notification_email:設置收信人地址
notification_email_from:設置發信人地址
smtp_server:指定SMTP發信服務器
smtp_connect_timeout:SMTP鏈接超時
1、安裝sendmail軟件包
yum -y install sendmail
service sendmail start
chkconfig sendmail on
2、爲Keepalived添加郵件經過設置
vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@benet.com
}
notification_email_from ftp ftp@benet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id master.benet.com
}
3、中止某個節點的Web服務,過幾分鐘再恢復,查看通知郵件內容