1. 程式人生 > >LVS高可用實現

LVS高可用實現

LVS-DR

問題:LVS由於沒有健康行檢查功能,當後端RS出現問題的時候還是會調度到損壞的RS服務器上
解決:1 編寫腳本(編寫一個for循環腳本,VS服務器每過1s使用curl命令訪問一下後端的RS服務器,查看$?是否為0,不為0就使用ipvsadm -d刪除即可)
        2 ldirectord:可以對後端RS實現健康性檢查

ldirectord實現:

在VS服務器上操作

1 下載
                訪問ldirectord的官方站點:
                        在google瀏覽器輸入ldirectord訪問官方站download page --> The Linux-HA Download Software Page --> OBS Repositories --> 根據系統版本選擇 --> ldirectord-3.9.6-0rc1.1.2.x86_64.rpm

    2  安裝
                yum install ldirectord-3.9.6-0rc1.1.2.x86_64.rpm           
                    #使用yum方式安裝,因為依賴了太多perl包
    3 rpm -ql ldirectord                                          
        #查看此工具附帶的程序以及應用信息
             /etc/ha.d
                /etc/ha.d/resource.d
                /etc/ha.d/resource.d/ldirectord
                /etc/logrotate.d/ldirectord
                /usr/lib/ocf/resource.d/heartbeat/ldirectord
                /usr/lib/systemd/system/ldirectord.service
                /usr/sbin/ldirectord
                /usr/share/doc/ldirectord-3.9.6
                /usr/share/doc/ldirectord-3.9.6/COPYING
                /usr/share/doc/ldirectord-3.9.6/ldirectord.cf
                /usr/share/man/man8/ldirectord.8.gz
4 cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d  
    #將ldirectord.cf文件復制到/etc/ha.d下,不用更改文件名,作為配置文件

5 vim /etc/ha.d/ldrectord.cf

                checktimeout=3         #後端服務器的超時時間,默認為3s,如果後端RS超過3s沒有回應,則認為RS服務器出現問題
                checkinterval=1        #探測間隔,每隔1s探測一次RS服務器;
                fallback=127.0.0.1:80  #如果後端RS全宕機的話,也不向客戶端返回錯誤信息,而是跳轉到指定IP地址的服務器上返回一個自定義的錯誤信息,此處為本機;
                autoreload=yes         #當文件更改後會自動加載,無需重啟ldirectord服務
                logfile="/var/log/ldirectord.log" #打開記錄日誌的功能,ldirectord的日誌會保存在指定位置
                # Sample for an http virtual service
                virtual=10.0.0.100:80                                       #VIP地址以及端口號
                        real=192.168.27.144:80 gate 1                       #RS1服務器地址以及端口號 gate:DR模式 1:權重
                        real=192.168.27.145:80 gate 3               #RS2服務器地址以及端口號 gate:DR模式 3:權重
                        service=http                                            #服務的名稱
                        scheduler=wrr                                       #指定算法類型,權重不同,所以使用wrr
                        #persistent=600                                     #是否保持持久連接,默認被註釋
                        #netmask=255.255.255.255                  #子網掩碼,不用管,默認被註釋
                        protocol=tcp                                           #使用的協議類型
                        checktype=negotiate                             #檢查後端RS的80端口以及網頁文件
                        checkport=80                                        #被檢查的端口
                        request="test.html"                                #被檢查的頁面文件

在RS服務器分別操作

                            echo "test" > /var/www/html/test.html               #在RS服務器上創建名為test.html的文件並且內容為test;
                            receive="test"                                      #查看頁面文件中是否存在這個字符串
                        #virtualhost=www.x.y.z                              #把這行註釋,不用加

6 啟動

systemctl start ldirectord                                    #啟動此項服務,啟動後會自動添加ipvsadm策略

7 驗證

1 在RS1服務器上更改test.html的文件內容;
                    echo 123 > /var/www/html/test.html

                2 在VS服務器上查看策略;
                    ipvsadm -ln             #此時就會減少一臺RS服務器,如果都以同樣的方式更改,就會返回sorry server服務器的信息

https與http認定為一個服務使用,打標簽方式

            1 在VS服務器上操作
                vim /etc/ha.d/ldrectord.cf
                    virtual=10             #改成標簽名稱即可,其它的不用改
                    #protocol=tcp          #使用標簽模式,註釋協議這一行

LVS高可用實現