Keepalive + LVS

     *********************html

    *********LVS*********linux

    *********************web

 

www.zh.linuxvirtualserver.org算法

 

ipvs(內核),ipvsadm(工做指令)數據庫

 

arptablesvim

 

arptables -A IN -d <virtual_ip> -j DROP服務器

arptables -A OUT -s <virtual_ip> -j managle-ip-s <real_ip>網絡

 

 

 

 

 

四種session

 

VS/NAT ;VS/TUN(隧道) ; VS/DR ; VS/fullNAT  (只有這個模式能夠跨VLAN併發

 

redhat6 中帶其10種內核鏈接調度算法

 

1)NAT

   NAT算法調度,指到server,但調度器輸入內網的數據包會源路返回到外網,這樣調度器的壓力會大,大約幾十臺的承受壓力即爲極限。

 

 

2)TUN(隧道)

   調度器經過隧道協議對數據包二次封裝,×××,到達Real Server 會解包,並拿到

clinet 的IP,並進行業務,支持廣域網。

 

3)DR

  只能在直連網絡,同一個交換機上進行操做。

 

 

 

 

 

*******測試DR********

 

   Client ——> VS ——> RS ——> Client

 

核心是MAC 的指定

 

首先

  在調度機上使用ipvsadm命令添加調度算法和調度地址:

  ipvsadm -A -t 172.25.254.168 -s rr    [採用rr輪詢]

  ipvasdm -a -t 172.25.254.168:80 -r 172.25.254.163 -g  [設置虛擬IP 168 的對應真實路由選擇IP 163]

  ipvasdm -a -t 172.25.254.168:80 -r 172.25.254.164 -g  [設置虛擬IP 168 的對應真實路由選擇IP 164]

  ipvsadm -l            [查看循環次數] 有時出錯時,它並不能正卻檢測,仍然會顯示次數。因此還須要用curl檢測。

 

 Real Server1 和 ~2 上 須要用 arptables 作策略更改,以防訪問到R Server 而不通過調度機,

 

方法一:更改內核文件

        RealServer 設置

   vi /etc/sysctl.conf

          net.ipv4.conf.all.arp_ignore = 1

          net.ipv4.conf.all.arp_announce = 2

   sysctl -p

 

(優)方法二:下載 arptables_jf.x86_64

        arptables -A IN -d 172.25.254.168 -j DROP   [丟掉進入到168的信息]

        arptables -A OUT -s 172.25.254.168 -j mangle --mangle-ip-s 172.25.254.163   [做爲本機168輸出的信息,轉換爲163輸出]

        /etc/init.d/arptables_jf save[切記保存,否則服務打不開]

 

 

*********NAT********

 

    Client ——> VS ——> RS

         .  <——   . <——

RS的網關必定爲VS。 NAT對VS(管理機)是不作任何操做的,只將它看成網關作地址轉發。

  cip ——> vip

      DNAT

      vip ——> rip

          rip ——> vip

              vip ——> cip

 

*******TUN**********(隧道)

 

要求,設備支持IP隧道協議。可用於廣義網,配置較爲複雜

 

   Clinet ——> VS ——> RS ——> Client

  cip ——> vip

         ip封裝

         vip ——> rip

                 vip ——> cip

 

******fullNAT********

 

必須更新內核,抗***能力強。支持多VLAN

 

 

 

 

 

 

帶有檢測功能的輪詢,ldirectord 服務。

在此以前 lpvsadm -C 清除之前寫入lvs的信息。

 

rpm -qd ldirectord 查看模板配置文件 /usr/share/doc/ldirectord-3.9.5/ldirectord.cf,並將配置文件移動到/etc/ha.d/ldirectord.cf

 

配置文件內容以下:

 

 24 # Sample for an http virtual service

 25 virtual=172.25.254.168:80

 26         real=172.25.254.163 gate            [真實所用服務機的地址]

 27         real=172.25.254.164 gate            [真實所用服務機的地址]

 28         fallback=127.0.0.1:80 gate          [全部服務機中止所跳到的最後的處理機上]

 29         service=http

 30         scheduler=rr

 31         #persistent=600                     [與存儲或數據庫等長久須要保持鏈接的設置有關]

 32         #netmask=255.255.255.255

 33         protocol=tcp

 34         checktype=negotiate                 [檢測類型爲:談判]

 35         checkport=80

 36         request="index.html"

 37 #       receive="Test Page"                 [必須確保兩個及其的服務頁面保持相同數據]

 38 #       virtualhost=www.x.y.z

 

 

 

使用已經配置好的heartbeat,給集羣服務中添加lvs

 

(1)修改heartbeat策略在集羣節點上,併發送給其它節點機。

vim /etc/ha.d/haresources

 

server1.example.com IPaddr::172.25.254.168/24/eth0 ldirectord httpd

 

(2)發送修改好的/etc/ha.d/ldirectord.cf 模板,給發送給其它節點機

 

(3)開啓Real Server機上的http 服務

 

(4)開啓heartbeat 在節點機上。

 

(5)測試,對hearbeat進行操做,ldirectord服務會因爲heartbeat服務,開啓在某節點機上,並運行lvs機制,從而保證Real Server的服務訪問正常運行。

 

 

                           ***********************************

                    ********使用 keepalived + lvs*******

                           **********************************

. keepalive 工做原理

     使用VRP協議

     Layer 3,4 &7 工做在IP/TCP協議棧的IP層,TCP層,及應用層,原理以下

     Layer 3: Keepalived 使用Layer3 的方式工做式時,Keepalived會按期向服務器羣中的服務器發送一個ICMP的數據包,若是發現某臺服務的IP地址沒有激活,Keepalived 便報告這臺服務器失效,並將它從服務器羣中剔除,這種狀況的典型例子是某臺服務器被非法關機。layer3的方式是  【以服務器的IP地址有效做爲服務器工做正常與否的標準】

Layer4主要以TCP端口的狀態來決定服務器工做正常與否。如web server的服務端口通常是80,若是Keepalived檢測到80端口沒有啓動,則Keepalived將把這臺服務器從服務器羣中剔除。

Layer7:Layer7就是工做在具體的應用層了,比Layer3,Layer4要複雜一點,在網絡上佔用的帶寬也要大一些。Keepalived將根據用戶的設定檢查服務器程序的運行是否正常,若是與用戶的設定不相符,則Keepalived將把服務器從服務器羣中剔除。

 

 

 

 

.下載,並使用 keepalived-1.2.24.tar.gz 配置 (網址 www.keepalive.org)

    1)首先解開rpm 包,並進入 keepalived-1.2.24 目錄。

開始安裝文件,並指定安裝目錄.防止配置文件分散

        安裝時根據所提示的信息一步步安裝(gcc,openssl*),直到建立出 make等類型文件,可使用 make && make install 命令

./configure --prefix=/usr/local/keepalived

        

        make && make install 操做以後,在/ust/local/keepalived 下會出向 keepalived 服務全部的信息.

        下載 mailx(類郵件軟件),方便服務自動發送信息

    2)開始製做文件鏈接,啓動服務

        ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

        ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

        ln -s /usr/local/keepalived/etc/keepalived /etc/

   

        chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

        ln -s /usr/local/keepalived/sbin/keepalived /sbin/

        

        /etc/init.d/keepalived start

    

    (3)vim /etc/keepalived/keepalived.conf


[行標]

 3      global_defs {

 4    notification_email {

 5      root@localhost

 6    }

 7    notification_email_from keepalived@server1.example.com

 8    smtp_server 172.0.0.1

 9    smtp_connect_timeout 30

 10    router_id LVS_DEVEL

 11    vrrp_skip_check_adv_addr

 12    vrrp_strict

 13    vrrp_garp_interval 0

 14    vrrp_gna_interval 0

 15 }

 16

 17 vrrp_instance VI_1 {

 18     state MASTER

 19     interface eth0

 20     virtual_router_id 166[主、備機的 virtual_router_id 必須相同,取值 0-255]

 21     priority 100

 22     advert_int 1

 23     authentication {

 24         auth_type PASS

 25         auth_pass 1111

 26     }

 27     virtual_ipaddress {

 28         172.25.254.168

 29     }

 30 }

 31

 32 virtual_server 172.25.254.166 80 {

 33     delay_loop 6

 34     lb_algo wrr[使用加權輪詢]

 35     lb_kind DR

 36    # persistence_timeout 50

 37     protocol TCP

 38

 39     real_server 172.25.254.163 80 {

 40         weight 2[權重]

 41         TCP_CHECK {

 42             connect_timeout 3

 43             nb_get_retry 3

 44             delay_before_retry 3

 45         }

 46     }

 47     real_server 172.25.254.164 80 {

 48         weight 1

 49         TCP_CHECK {

 50             connect_timeout 3

 51             nb_get_retry 3

 52             delay_before_retry 3

 53         }

 54     }

 55 }

 

     (4)配置完成server1.的信息後,

1.把 /usr/local/keepalived/ 目錄和目錄下的全部文件發送給 172.25.254.162 的 /usr/local中。


scp -r keepalived/ root@172.25.254.162:/usr/local

 

        2.在server2中 進行(2)步驟,把相應的文件鏈接到相應的文件。

  

        3.更改配置文件

  vim /etc/keepalived/keepalived.conf

[行標]

 18     state BACKUP[輔機該爲 BACKUP,此狀態由 priority決定,高爲MASTER ,低爲BACKUP]

         21     priority 50[輔機這個優先級要低於主機]

     

    (5)在Rules Server 機上添加 arptables 保證服務機上的數據 達到正常效果

(優)方法二:下載 arptables_jf.x86_64

        arptables -A IN -d 172.25.254.168 -j DROP   [丟掉進入到168的信息]

        arptables -A OUT -s 172.25.254.168 -j mangle --mangle-ip-s 172.25.254.163   [做爲本機168輸出的信息,轉換爲163輸出]

   

 

   6)再次添加一個 vsftpd 服務

       1.vim /etc/keepalived/keepalived.conf


   [行標]   

   3 global_defs {

  4    notification_email {

  5      root@localhost

  6    }

  7    notification_email_from keepalived@server2.example.com[修改郵件接受主機,誰是主機 就寫誰]

  8    smtp_server 172.0.0.1

  9    smtp_connect_timeout 30

  10    router_id LVS_DEVEL

  11    vrrp_skip_check_adv_addr

  12    vrrp_strict

  13    vrrp_garp_interval 0

  14    vrrp_gna_interval 0

  15 }

  16 vrrp_instance VI_1 {

  17     state MASTER

  18     interface eth0

  19     virtual_router_id 166 

  20     priority 100

 21     advert_int 1

 22     authentication {

 23         auth_type PASS

 24         auth_pass 1111

 25     }

 26     virtual_ipaddress {

 27         172.25.254.168

28   172.25.254.166[再次添加一個虛擬IP]

 29     }

 30 }

 31

32 virtual_server 172.25.254.166 21 {[開啓21端口]

 33     delay_loop 6

 34     lb_algo rr

 35     lb_kind DR

 36     persistence_timeout 50[會話保持時間,單爲是秒,這個選項對於動態網頁是很是有用的,爲集羣系統中session共享提供了一個很好的解決方案。有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話保持時間。須要注意的是,這個會話保持時間,是最大無響應超時時間,即斷開鏈接後,超出50秒,則會被分發到另外節點]

 37     protocol TCP

 38

 39     real_server 172.25.254.163 21 {

 40         weight 1

 41         TCP_CHECK {

 42             connect_timeout 3

 43             nb_get_retry 3

 44             delay_before_retry 3

45         }

 46     }

 47     real_server 172.25.254.164 21 {

 48         weight 1

 49         TCP_CHECK {

 50             connect_timeout 3

 51             nb_get_retry 3

 52             delay_before_retry 3

 53         }

 54     }

 55 }

 

      2.在 Rules Server 服務機上添加vsftpd 服務,而且添加 arptables 策略。(同上)

相關文章
相關標籤/搜索