LVS-keepalived實現高可用

前言前端

   LVS是基於內核實現負載均衡的,在小編的上一篇演示中咱們已經實現了LVS的NAT模式和DR模式,可是企業中只有負載均衡是不行的,若是一臺負載均衡器楚翔了故障,那麼就會致使整個集羣的不可用,因此這裏結合LVS咱們經過keepalived這個神器來實現高可用。linux

   高可用:一般來描述一個系統通過專門的設計,從而減小停工時間,而保持其服務的高度可用性。nginx

   首先咱們來認識一下keepalived:web

keepalived介紹數據庫

   1、功能:vim

      Keepalived的做用是檢測服務器的狀態,若是有一臺web服務器宕機,或工做出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其餘服務器代替該服務器的工做,當服務器工做正常後Keepalived自動將服務器加入到服務器羣中,這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器。centos

   2、特色及優勢:服務器

      (a)配置文件簡單:配置文件比較簡單,可經過簡單配置實現高可用功能網絡

      (b)穩定性強:keepalived是一個相似於layer3, 4 & 7交換機制的軟件,具有咱們平時說的第3層、第4層和第7層交換機的功能,經常使用於前端負載均衡器的高可用服務,當主服務器出現故障時,可快速進行切換,監測機制靈活,成功率高。app

      (c)成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。

      (d)應用範圍廣:由於keepalived可應用在多個層面,因此它幾乎能夠對全部應用作高可用,包括LVS、數據庫、http服務、nginx負載均衡等等

      (e)支持多種類型:支持主從模式、主主模式高可用,可根據業務場景靈活選擇。

   3、keepalived功能實現方式

      keepalived基於模塊來進行工做,在開啓服務的時候會開啓三個守護進程

   (a) 父進程:主要負責讀取配置文件初始化、監控2個子進程等,監控WacthDog模塊

   (b) 子進程1:負責監控vrrp Stack 模塊,經過Netlink Reflector模塊,控制內核中的netlink模塊,實現vrrp協議的功能。

   (c) 子進程2:負責監控Cheackers模塊,經過IPvs wrapper模塊控制內核中的IPVS ,至關於代替了ipvsadm的功能,能夠監控和負載後臺服務器,負責健康監測功能。

   4、keepalived基於vrrp協議工做

    VRRP協議:

    VRRP(VirtualRouter Redundancy Protocol,虛擬路由冗餘協

議)能夠認爲是實現路由器高可用的協議,簡單的說,當一個路由器故障時能夠由另外一個備份路由器繼續提供相同的服務。

   VRRP根據優先級來肯定虛擬路由器中每臺路由器的角色(Master

路由器或Backup路由器)。VRRP優先級的取值範圍爲0到255(數值越大代表優先級越高),可配置的範圍是1到254,優先級0爲系統保留給路由器放棄Master位置時候使用,255則是系統保留給IP地址擁有者使用。優先級越高,則越有可能成爲Master路由器。當兩臺優先級相同的路由器同時競爭Master時,比較接口IP地址大小。接口地址大者當選爲Master。

   5、配置文件:

   配置文件簡單結構:

      1、全局配置 global_defs

      2、虛擬路由配置 vrrp_instance

      3、虛擬服務器配置 virtual_server


接下來進入展現環節:

1、基於keepalived實現LVS-nat模式的高可用

1、實驗前準備及部署:

    關閉防火牆,關閉selinux

    客戶端到VS之間的IP段爲公網

       VS到RS之間的IP段爲私網

2、客戶端配置

客戶端IP:172.17.0.0/16網段,例如:172.17.253.70

     客戶端關閉防火牆、關閉selinux

   3、VS端配置

      (VS端即負載均衡器)

      VS端的VIP,172.17.252.60/16

      VS端的DIP,192.168.11.107/24

      在VS上:

      首先咱們得安裝keepalived和ipvsadm,ipvsadm不是用於部署LVS,LVS的實如今keepalived中就能夠實現,ipvsadm只是咱們藉助ipvsadm這個命令來進行查看ipvs規則。

      關閉防火牆,開啓路由轉發:

      (1)修改內存參數:

         echo 1 > /proc/sys/net/ipv4/ip_forward

      (2)修改配置文件:

         vim /etc/sysctl.conf

           net.ipv4.ip_forward = 1

      3.1 VS1的配置

        編輯keepalived配置文件:

bc38cd538d958858807f8ca4301dd325.png

3.2VS2的配置

        編輯keepalived配置文件

7f7eb76785a478f74e8133f90fcb0a68.png

   4、開啓keepalived服務

      centos6:service keepalived start

      centos7:systemctl startkeepalived

      若是開啓不了是配置文件的錯誤,語法有錯

5、RS端配置:

      RS1 地址爲:192.168.1.7

      RS2 地址爲:192.168.1.9

      將路由指向DIP

      routeadd default gw 192.168.11.107 dev ens34

      開啓web服務功能

      httpd或 nginx

6、能夠進行測試了!

    實驗結果圖

4f34ff0fca099f607d096718cd78b211.png


2、基於keepalived實現LVS-dr模式的高可用

 1、實驗前準備:

     關閉防火牆、selinux

     實際的生產環境中的網絡是:

     client--公網--VS---私網---RS

 可是在教室環境中,因爲網卡的限制,因此只能配置同一個網段的IP

2、網絡地址分配

        ac88cf74449783f9871a478faf7bd9b5.png

3、客戶端配置;

  關閉防火牆,關閉selinux

添加默認網關到VIP,這是在實驗的環境中爲了使數據包發往VS服務器所作的特殊操做,在真實的網絡環境中,客戶端是可以找到VIP的。

    route add default gw 192.17.1.17 dev ens34

4、VS端配置:

(1)VS1端配置:

    開啓路由轉發:

    echo 1 > /proc/sys/net/ipv4/ip_forward

   

    vim /etc/sysctl.conf

    net.ipv4.ip_forward = 1

    安裝keepalived請自動yum安裝

        編輯keepalived配置文件:

7bcc0d42d891877646349e1b93585a19.png

啓動keepalived;

       centos6 ;serverkeepalived start

       centos7 : systemctl start keepalived

可安裝ipvsadm工具,使用ipvsadm命令進行查看ipvs規則

ip a 查看VIP綁定狀況

   (2)VS2端配置:

    開啓路由轉發:

    echo 1 > /proc/sys/net/ipv4/ip_forward

   

    vim /etc/sysctl.conf

    net.ipv4.ip_forward = 1 VS2的配置

   VS2的配置文件跟VS1的配置文件幾乎相同,只須要將一下幾點進行修改就能夠了,這裏小編就不在進行配置文件展現了:

   不一樣點:

(1)虛擬路由中的stateBACKUP

(2)虛擬路由中的priority要比master中低

啓動keepalived;

    centos6 ;serverkeepalived start

centos7 : systemctl start keepalived

5、RS端配置

    關閉防火牆,關閉selinux

    在迴環網卡上配置VIP:

    ifconfig lo:1 192.17.1.17 netmask255.255.255.255 broadcast 192.17.1.17 up

    route add -host 192.17.1.17 dev lo

    配置arptable,將ARP廣播關閉:

    echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

    echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

    開啓web服務:(以httpd示例)

    yum install httpd

    centos6 : server httpd start

    centos7 : systemctl start httpd

 

6、在客戶端訪問輸入VIP地址進行訪問測試

    curl http://192.17.1.17/

    能夠用for循環測試:

    for i in $(seq 10) ; do curlhttp://192.17.1.17 ;done

結果展現:

    服務開啓狀況:

9852f73a021560f36c5f23832c0fcd8c.png

b2d605eed9ce2c191a72a0f6daed1006.png

測試:

8e96c609fc00e35a3937dc6392e749e8.png

停掉一個keepalived服務:

d98b45e41eaefdef443bb4b01a9d8218.png

查看另外一臺負載器是否接替了工做:

d79d6176569cc9d5d6989ffa24c1959a.png

停掉服務後測試:

c4424d1ba7773fd19266d682bcd04b95.png

相關文章
相關標籤/搜索