centos7.2 搭建keepalived+lvs

centos7 系統安裝出來默認的網卡設備名變成了eno....看着不舒服,先來修改下網卡設備名
添加虛擬網卡後不要使用ifconfig查看,要使用ip addr來看虛擬網卡設備名一般爲ens37...


安裝系統前光標放在"install centos 7"使用tap建,在kernel最後面添加net.ifnames=0 biosdevname=0


已安裝好的系統

vim /etc/sysconfig/grub 
GRUB_CMDLINE_LINUX在其後面添加net.ifnames=0 biosdevname=0

grub2-mkconfig -o /boot/grub2/grub.cfg 

vim /etc/udev/rules.d/90-eno-fix.rules
將eno...改成eth0

網卡文件名和設備名全部改成eth開頭即可。
[root@node01 network-scripts]# ls
ifcfg-eth0   ifdown-eth   ifdown-post    ifdown-TeamPort  ifcfg-eth1
[root@node01 network-scripts]# cat ifcfg-eth0(這裏)
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0(這裏)
DEVICE=eth0(這裏)

reboot即可

修改網卡原文鏈接

這裏順帶提一下修改MAC電腦的密碼,開機按command+r進入重裝系統界面,調出命令行,輸入resetpassword回車,選擇用戶,根據提示來即可。


進入正題

selinux和firewalld關閉
1.wget http://www.keepalived.org/software/keepalived-1.2.22.tar.gz

2.wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26-1.src.rpm
rpm -ivh  ipvsadm-1.26-1.src.rpm
yum install -y ipvsadm

3.yum install -y gcc gcc+ openssl openssl-devel keepalived

4.tar -xf keepalived-1.2.22.tar.gz

5.cd keepalived-1.2.22/ && ./configure --prefix=/usr/local/ && make && make install

6.mkdir /etc/keepalived

7.cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

8.cd /etc/keepalived/ && vim keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost(不使用sendmail,修改爲本地)
   }
   notification_email_from root@localhost(這裏也是)
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS1 (這裏先修改爲LVS1)
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER(主)
    interface eth0  (綁定的網卡與你的網卡設備名一致)
    virtual_router_id 51(VRRP組名,兩個節點的設置必須一樣,以指明各個節點屬於同一VRRP組)
    priority 100(主節點的優先級(1-254之間),備用節點必須比主節點優先級低)
    advert_int 1(組播信息發送間隔,兩個節點設置必須一樣  )
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200 (VIP)
    }
}

virtual_server 192.168.10.200 8080 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
 persistence_timeout 0
    protocol TCP
    nat_mask 255.255.255.0

    real_server 192.168.10.20 8080 {
        weight 1
        SSL_GET {
            url {
              path /index.jsp
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}       

9.按同樣的方法配置另一節點並修改配置文件,可將次節點的配置文件複製到另一節點,並修改以下幾項: 
router_id  LVS2
state   BACKUP
priority   99
其它項不必修改。

10.兩邊都配置完成後先啓動主節點
systecmctl start keepalived

11.HTTP_GET:配置健康檢查

url { 
        path /index.jsp  健康檢查的頁面
        digest 625eddd79c61cf84c71c0c17448f8093  根據頁面計算出的MD5的值,這個值一定不能隨便寫,不然keepliv
}

下面說一下如何計算digest 

進入到/usr/local/keepalive/bin

./genhash -s 192.168.1.107 -p 8080 -u /index.jsp  
通過上訴命令計算digest  然後寫到配置文件上就可以了。

12.配置真實服務器

說明:一般真實互聯網應用都配置爲lb_kind = dr 模式,因爲這種模式效率是最高的,缺點就是配置稍微複雜一點,需要配置客戶端。

DR模式原理請參考:http://atong.blog.51cto.com/2393905/1348602

簡單說一下:  假設A爲前端負載均衡服務器, B,C爲後端真實服務器。 A接收到數據包以後,會把數據包的MAC地址改成B的(根據調度算法,假設發給B服務器),然後把數據包重新發出去,交換機收到數據包根據MAC地址找到B,把數據包交給B。 這時B會收到數據包,同時驗證請求IP地址,由於數據包裏的IP地址是給A的,所以正常情況下B會丟棄數據包,爲了防止這種情況,需要在B機器的迴環網卡上配置A的IP地址。並設置ARP壓制。

1:在真實服務器上運行腳本文件

#!/bin/bash    
#description : start realserver  
VIP=192.168.10.200 
/etc/rc.d/init.d/functions  
case "$1" in  
start)  
echo " start LVS of REALServer"  
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
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  
;;  
stop)  
/sbin/ifconfig lo:0 down  
echo "close LVS Directorserver"  
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
;;  
*)  
echo "Usage: $0 {start|stop}"  
exit 1  
esac   

VIP=192.168.10.200   大家只要修改這個地方爲虛擬IP即可,別的地方都不需要改。

2:需要對腳本授權 

chmod +x lvs_real.sh

3:如果腳本是在windows編輯在拷貝過去的會有問題,好像是回車換行符不同導致的。

sed -i 's/\r$//' lvs_real.sh

4:運行腳本

./lvs_real.sh

13.健康檢查方式
virtual_server 192.168.10.200 8080 {
   delay_loop 6
   lb_algo rr
   lb_kind DR
   nat_mask 255.255.255.0
   persistence_timeout 0
   protocol TCP
   real_server 192.168.10.129 8080 {
       weight 1
      TCP_CHECK {
        connect_port    8080
        connect_timeout 5
      }
   }
   real_server 192.168.10.130 8080 {
       weight 1
      TCP_CHECK {
        connect_port    8080
        connect_timeout 5
      }
   }
}

connect_timeout 5   :連接超時時間
nb_get_retry 3        :重連次數
delay_before_retry 3  :重連間隔時間
connect_port 8080        :檢測端口

原文1
原文2

下次想分享下6系統基於圖形化的lvs+keepalived

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