LVS DR+keepalived實現HA+LB

來源:互聯網
上載者:User

標籤:lvs-dr

首先需要4台伺服器

2台dir分別是  dirmaster  dirslave

2台RS 分別運行nginx測試服務

dir

192.168.186.129

192.168.186.135

RS

192.168.186.130

192.168.186.132

  1. 首先搭建LVS-DR服務

    a.dir上面安裝ipvsadm

    yum install ipvsadm

b.更改ipvsadm設定檔

    vim /etc/usr/local/sbin/lvs_dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward     #dir伺服器行開啟路由轉寄功能
ipv=/sbin/ipvsadm
vip=192.168.186.110
rs1=192.168.186.130
rs2=192.168.186.132

#設定vip

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
$ipv -C  
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1


兩台rs上:vim /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=192.168.186.110
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce   


c.然後director上執行: bash /usr/local/sbin/lvs_dr.sh
兩台rs上執行: bash /usr/local/sbin/lvs_dr_rs.sh
Windows下瀏覽器測試訪問


以上完成後,即可實現RS的負載平衡,每次請求根據權重的設定而分攤

但是如果當某一個RS服務停止時,那麼用戶端請求依然會直接到停止服務的RS上。


2.增加keepalived服務


注意:前面雖然我們已經配置過一些操作,但是下面我們使用keepaliave操作和之前的操作是有些衝突的,所以若是之前配置過DR,請首先做如下操作:dr上執行:

$ipv -C
ifconfig eth0:0  down

前面的lvs雖然已經配置成功也實現了負載平衡,但是我們測試的時候發現,當某台real server把nginx進程停掉,那麼director照樣會把請求轉寄過去,這樣就造成了某些請求不正常。所以需要有一種機制用來檢測real server的狀態,這就是keepalived。它的作用除了可以檢測rs狀態外,還可以檢測備用director的狀態,也就是說keepalived可以實現ha叢集的功能,當然了也需要一台備用director.

a.主機和備用機上都要安裝上keepalived

 yum install -y keepalived

安裝好後,編輯設定檔  
vim /etc/keepalived/keepalived.conf   //加入如下:
vrrp_instance VI_1 {
    state MASTER   #待命伺服器上為 BACKUP
    interface eth0
    virtual_router_id 51
    priority 100  #待命伺服器上為90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.186.110
    }
}
virtual_server 192.168.186.110 80 {
    delay_loop 6                  #(每隔10秒查詢realserver狀態)
    lb_algo wlc                  #(lvs 演算法)
    lb_kind DR                  #(Direct Route)
    persistence_timeout 60        #(同一IP的串連60秒內被分配到同一台realserver)
    protocol TCP                #(用TCP協議檢查realserver狀態)

    real_server 192.168.186.100 80 {
        weight 100               #(權重)
        TCP_CHECK {
        connect_timeout 10       #(10秒無響應逾時)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
real_server 192.168.186.101 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

以上為主director的設定檔,從director的設定檔只需要修改
state MASTER  -> state BACKUP
priority 100 -> priority 90
配置完keepalived後,需要開啟連接埠轉寄(主從都要做):
echo 1 > /proc/sys/net/ipv4/ip_forward
然後,兩個rs上執行 /usr/local/sbin/lvs_dr_rs.sh 指令碼
最後,兩個director上啟動keepalived服務(先主後從):
/etc/init.d/keepalived start
另外,需要注意的是,啟動keepalived服務會自動產生vip和ipvsadm規則,不需要再去執行上面提到的/usr/local/sbin/lvs_dr.sh 指令碼。

這篇主要寫了怎麼搭建服務,講解我轉寄了一篇文章~~~

本文出自 “熊仔的部落格” 部落格,請務必保留此出處http://9821177.blog.51cto.com/9811177/1715642

LVS DR+keepalived實現HA+LB

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.