LVS+keepalived DR架構簡單實踐筆記

                              LVS + KEEPALIVED 實現DR架構的負載均衡
                                                  來自:dogdogcom.blog.51cto.com


LVS DR架構拓撲圖
 

 

 
1.      firewall 上
1)#Vi /etc/sysctl.conf --打開IP_FORWARD
#sysctl -p
2)iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.1.1.100
 意思是將80端口的請求全丟給10.1.1.100去處理
2. 在DR 上
1)
網關設成:10.1.1.254
2)安裝ipvsadm
     yum install ipvsadm
3
)#Vi /etc/sysctl.conf --打開IP_FORWARD
4)安裝配置keepalived

#tar xvf keepalived-1.1.20.tar.gz -C /usr/src/
#cd /usr/src/keepalived
./configure && make && make install
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
#service keepalived start|stop
 
#vim /etc/keepalived/keepalived.conf      
#這個直接修改成這樣就可以了,原來的先備份下(配置文件我按照高可用來配置的,單個LVS也可以用。)

vrrp_instance VI_1 {
    state MASTER            ---DR
    interface eth0          ---通過eth0 來測試心跳
    virtual_router_id 51        --ID值,---從LVS需要相同ID
    priority 88                --從服務器ID值要比88小
    advert_int 1
    authentication {
        auth_type PASS                         ---驗證方式
        auth_pass 123
}                                              
#如果你不用2臺DR做高可用調度,上面可以省略。
    virtual_ipaddress {
        10.1.1.100                             ----定義VIP爲哪個IP
    }
}
virtual_server 10.1.1.100 80 {                       -----調度VIP的80端口設置,如果mysql就3306
    delay_loop 6
    lb_algo rr                                   ---輪叫
    lb_kind DR                                  ----DR架構 記得大寫
    nat_mask 255.255.255.0
    protocol TCP
    real_server 10.1.1.2 80 {                           -----兩個WEB服務器的設置
        weight 1                             ----權重
        TCP_CHECK {                       ---這個設置幾秒鐘測試一下這服務有沒有掛.
           connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
        real_server 10.1.1.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
}

重啓service keepalived restart
運行ipvsadm 查看是否成功

[root@lvs1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP 10.1.1.100:http rr
 -> nginx1.dog.com:http          Route   1      0          0
 -> nginx2.dog.com:http          Route   1      0          0
-----------------------------------------------------------------------
 
下面設置兩臺WEB服務器,都一樣的設置
1,
vim /etc/sysctl.conf
打開轉發
net.ipv4.ip_forward = 1
在最後面添加下面四行,作用是本地ARP不作迴應。
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
----------------------------------------------
#sysctl -p

2.#Ifconfig lo:1 10.1.1.100/32     --增加一塊本地網卡記住,要開機就運行這命令/etc/rc.local
3.網關設成:10.1.1.254
完成-------------

增加高可用LVS2
配置基本和LVS1一樣 只需修改下配置文件

vim /etc/keepalived/keepalived.conf
state BACKUP  
priority 9              ---比主LVS小哦
其他一樣

測試,輸入http://192.168.68.71 測試需要關閉瀏覽器在重新登入來測試,不然又緩存。總會只連到其中一臺WEB服務器。

關於SESSION同步問題,可以參考我博客的memcached共享SESSION,或者利用NFS共享SESSION。

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