LVS_DR+Keepalived高可用Web群集
阿新 • • 發佈:2018-08-20
before 單點故障 device Opens cat var add with rip 一、Keepalived
1.概述
- keepalived使用HA(High Available雙機集群系統),指高可用性集群,是保證業務連續性的有效解決方案,一般有兩個或兩個以上的節點,且分為活動節點及備用節點。
- Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的只是修復故障的服務器。
- Keepalived使用VRRP協議實現故障轉換
2.特點
-
解決服務器單點故障問題
- 支持服務器健康狀態檢查和故障切換
3.VRRP(虛擬路由冗余協議)
-
將多個設備組成一個備份組
-
通過公用的虛擬IP對外提供服務
-
同一時刻只有一臺設備提供服務,其余設備處於冗余狀態
- 當當前在線設備故障後,由其他設備根據優先級自動替換虛擬IP
二、LVS_DR+Keepalived案例
環境準備:
服務器名稱 | 作用 | IP地址 |
---|---|---|
Web01 | 第一臺網站服務器 | 192.168.1.10 |
Web02 | 第二臺網站服務器 | 192.168.1.20 |
Lvs_ha01 | 第一臺網站負載均衡和高可用服務器 | 192.168.1.100 |
Lvs_ha02 | 第二臺網站負載均衡和高可用服務器 | 192.168.1.200 |
Gateway | 網關(代替路由器) | 192.168.1.1 |
- 群集VIP(virtual IP)地址:192.168.1.254
五臺服務器,兩臺Web、兩臺LVS,都一塊網卡設置為vmnet1;剩余一臺為網關,需兩塊網卡,第一塊vmnnet1、第二塊橋接
部署Web-1
1.配置IP地址
vim /etc/sysconfig/network-scrips/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
cp /etc/sysconfig/network-scrips/ifcfg-lo /etc/sysconfig/network-scrips/ifcfg-lo:0
vim /etc/sysconfig/network-scrips/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.1.254
NETMASK=255.255.255.255
/etc/init.d/network restart
2.配置安裝YUM
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
3.部署httpd
yum -y install httpd && echo "This is Web1" >/var/www/html/index.html
/etc/init.d/httpd start && chkconfig --level 35 httpd on
4.修改內核參數和路由
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
route add -host 192.168.1.254 dev lo:0 && echo "route add -host 192.168.1.254 dev lo:0" >>/etc/rc.local
部署Web-2
1.配置IP地址
vim /etc/sysconfig/network-scrips/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
cp /etc/sysconfig/network-scrips/ifcfg-lo /etc/sysconfig/network-scrips/ifcfg-lo:0
vim /etc/sysconfig/network-scrips/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.1.254
NETMASK=255.255.255.255
/etc/init.d/network restart
2.配置安裝YUM
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
3.部署httpd
yum -y install httpd && echo "This is Web2" >/var/www/html/index.html
/etc/init.d/httpd start && chkconfig --level 35 httpd on
4.修改內核參數和路由
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
route add -host 192.168.1.254 dev lo:0 && echo "route add -host 192.168.1.254 dev lo:0" >>/etc/rc.local
部署LVS+HA-1
1.配置IP
vim /etc/sysconfig/network-scrips/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
/etc/init.d/network restart
2.配置YUM並安裝依賴包
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
yum -y install kernel-devel openssl-devel popt-devel ipvsadm
3.安裝keepalived
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-431.el6.x86_64/
make &&make install
chkconfig --add keepalived && chkconfig keepalived on
4.編輯HA配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
router_id HA_TEST_R1 ##本服務器的名稱
}
vrrp_instance VI_1 { ##定義VRRP熱備實例
state MASTER ##MASTER表示主服務器
interface eth0 ##承載VIP地址的物理接口
virtual_router_id 1 ##虛擬路由器的ID號
priority 100 ##優先級,數值越大優先級越高
advert_int 1 ##通告間隔秒數(心跳頻率)
authentication { ##認證信息
auth_type PASS ##認證類型
auth_pass 123456 ##密碼字串
}
virtual_ipaddress {
192.168.1.254 ##指定漂移地址(VIP)
}
virtual_server 192.168.1.254 80 {
delay_loop 15 ##檢測時間間隔
lb_algo rr ##LVS調度算法
lb_kind DR ##LVS的模式
protocol TCP
real_server 192.168.1.10 80 {
weight 1 ##權值
TCP_CHECK {
connect_port 80 ##健康檢查端口
connect_timeout 3 ##連接超時時間
nb_get_retry 3 ##重連次數
delay_before_retry 4 ##重連時間
}
}
real_server 192.168.1.20 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
5.加載lvs模塊
modprobe ip_vs && echo "modprobe ip_vs" >>/etc/rc.local
部署LVS+HA-2
1.配置IP
vim /etc/sysconfig/network-scrips/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.200
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
/etc/init.d/network restart
2.配置YUM並安裝依賴包
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
yum -y install kernel-devel openssl-devel popt-devel ipvsadm
3.安裝keepalived
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-431.el6.x86_64/
make &&make install
chkconfig --add keepalived && chkconfig keepalived on
4.編輯HA配置文件
scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/
vim /etc/keepalived/keepalived.conf
global_defs {
router_id HA_TEST_R2 ##本服務器的名稱
}
vrrp_instance VI_1 { ##定義VRRP熱備實例
state BACKUP ##MASTER表示主服務器,BACKUP代表從
priority 60 ##優先級,數值越大優先級越高
5.加載lvs模塊
modprobe ip_vs && echo "modprobe ip_vs" >>/etc/rc.local
Gateway(充當連接公網的路由器)
1.配置IP
vim /etc/sysconfig/network-scrips/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scrips/ifcfg-eth0 /etc/sysconfig/network-scrips/ifcfg-eth1
vim /etc/sysconfig/network-scrips/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
/etc/init.d/network restart
2.開啟路由轉發
vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1
sysctl -p
3.編寫防火墻規則
/etc/init.d/iptables stop
iptables -t nat -I PREROUTING -d 192.168.10.139 -i eth1 (公網接口) -p tcp --dport 80 -j DNAT --to-destination 192.168.1.254:80
/etc/init.d/iptables save && chkconfig --level 35 iptables on
訪問測試
HA1:/etc/init.d/keepalived restart
HA2:/etc/init.d/keepalived restart //重啟keepalived服務
IE:http://192.168.10.139 //訪問公網地址測試故障轉移
LVS_DR+Keepalived高可用Web群集