1. 程式人生 > >LVS_DR+Keepalived高可用Web群集

LVS_DR+Keepalived高可用Web群集

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群集