LVS(DR)+Keepalived 高可用集羣搭建

一、 簡介

(1)、LVS簡介

LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器, 用現在的觀點來看就是個4層(傳輸層tcp/udp)的負責均衡器。 它是一個由章文嵩博士發起的自由軟件項目,現在LVS已經是 Linux標準內核的一部分,在Linux2.4內核以前,使用LVS時必須要重新編譯內核以支持LVS功能模塊,但是從Linux2.4內核以後,已經完全內置了LVS的各個功能模塊,無需給內核打任何補丁,可以直接使用LVS提供的各種功能。
LVS目前有三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR);十種調度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

官方地址:http://www.linuxvirtualserver.org
http://www.linuxvirtualserver.org/zh/

(2)、Keepalived簡介

Keepalived是一個用C語言編寫的路由軟件。該項目的主要目標是爲Linux系統和基於Linux的基礎架構提供簡單而強大的負載均衡和高可用性設施。

二、 實驗環境

(1) 該測試爲LVS(DR模式)+Keepalived+Web(Nginx)HA/LB架構

LVS(DR)+Keepalived 高可用集羣搭建

(2) 測試服務器如下:

序號 IP 名稱 安裝軟件
1 192.168.100.51 LVS(主) Centos 7.3 Keepalived ipvsadm
2 192.168.100.52 LVS(備) Centos 7.3 Keepalived ipvsadm
3 192.168.100.53 Web(主) Centos 7.3 Nginx
4 192.168.100.54 Web(備) Centos 7.3 Nginx
5 192.168.100.50 VIP
6 192.168.100.127 測試PC(Windows 10)

備註:測試已關閉防火牆及selinux

三、 實驗

(1) 安裝ipvsadm、keepalived(以下操作在LVS(主)、LVS(備)上操作):

# yum install –y ipvsadm keepalived
# vi /etc/keepalived/keepalived.conf  #修改配置文件

(2) 配置LVS(以下操作在LVS(主)、LVS(備)上操作):

[root@t1 ~]# vi /etc/sysctl.conf
#打開轉發
net.ipv4.ip_forward =0 -> net.ipv4.ip_forward=1
#讓配置生效
[root@t1 ~]# sysctl –p    

(3) 配置keepalived以下操作在LVS(主)、LVS(備)上操作):


[root@t1 ~]# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.100.49       #因未配置smtp,這裏沒配置
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  #vrrp_strict               #若ping不同vip,可以註釋改項
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER      #LVS(主)爲MASTER,LVS(備)爲BACKUP
    interface ens33   #物理網卡名稱
    virtual_router_id 51   #主備需一致
    priority 150           # 優先級,主大於備
    advert_int 1           #心跳頻率
    authentication {       #主備一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.50/32 dev ens33    #虛擬VIP
    }
}

virtual_server 192.168.100.50 80 {
    delay_loop 6      # 健康檢查間隔時間(秒)
    lb_algo rr        # 調度算法(rr,輪詢)
    lb_kind DR        # DR模式
    persistence_timeout 50   #連接保持時間(秒)
    protocol TCP

    real_server 192.168.100.53 80 {       #web1服務器ip 端口
        weight 1
    TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.100.54 80 {
        weight 1
    TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

#配置完主從後啓動keepalived

[root@t1 ~]# systemctl start keepalived.service

#測試,在LVS主上可以看到vip

[root@t1 ~]# ip addr|grep ens33

LVS(DR)+Keepalived 高可用集羣搭建

[root@t1 ~]# ipvsadm –L

LVS(DR)+Keepalived 高可用集羣搭建

#若停止LVS(主),可以查看到自動漂移至LVS(從)

(4) 配置Web服務器(以下操作在Web(主)、Web(從)上操作):

#安裝nginx

[root@t3 ~]# yum install g++ gcc openssl openssl-devel pcre pcre-devel zlib-devel –y
[root@t3 ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[root@t3 ~]# tar zxvf nginx-1.14.2.tar.gz
[root@t3 ~]# cd nginx-1.14.2/
[root@t3 ~]# ./configure
[root@t3 ~]# make
[root@t3 ~]# make install

#爲方便測試,web(主)添加web1,web(備)添加web2


[root@t3 ~]# echo "hello,web1" > /usr/local/nginx/html/test.html
[root@t3 ~]# /usr/local/nginx/sbin/nginx

#配置web服務器,禁用Arp對虛擬IP的響應

[root@t3 ~]# vim /etc/sysctl.conf

net.ipv4.conf.ens33.arp_ignore=1
net.ipv4.conf.ens33.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

#配置web服務器,

[root@t3 ~]# ifconfig lo:0 192.168.100.50 netmask 255.255.255.255 broadcast 192.168.100.50 up
[root@t3 ~]# route add -host 192.168.100.50 dev lo:0

(5) 測試

1、在pc上,遊覽器訪問http://192.168.100.50/test.html
顯示,“hello,web1”;間隔50秒後(之前設置的連接時間)再次訪問顯示,“hello,web2”。

2、關閉web1上的nginx,訪問顯示,“hello,web2”

這裏就不貼圖了~

參考:
http://www.keepalived.org/index.html
http://www.linuxvirtualserver.org/zh/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章