1. 程式人生 > >CentOS 7.3 部署LVS + Keepalived 高可用集群

CentOS 7.3 部署LVS + Keepalived 高可用集群

entos ML outer sysconf 主服務器 網絡 F5 direct EDA

技術分享圖片
雙擊熱備

在這個高度信息化的IT時代,企業的生產系統,業務運營,銷售個支持
以及日常管理環節越來越依賴計算機信息和服務,使得對高可用(HA)
技術的應用需求大量上升,以便提供持續的,不間斷計算機或網絡

vs服務器和web-server他們必須在同一個網段內,因為LVS轉發包的時候,是直接修改了包目標的MAC地址,直接扔給了rs,基於MAC地址的修改是活動在OSI二層數據鏈路層的,工作在數據鏈路層的網絡設備就是交換機了,所以必須在一個交換機下面,也就是一個局域網內
為啥抑制real-server的ARP,是這樣的,我們在DR模式要更改web-server的ARP的模式,arp_ignore為1是說只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,我們都在回環接口上配置了一個VIP,當arp模式更改以後,那麽如果有誰在請求VIP的mac地址時,那麽那些web-server就會回答arp廣播報文了,只有lvs才會,如果沒有更改arp模式,那麽大家都喊我是VIP,這就亂套了。

Keepalived 雙機熱備

keepalived 起初是專門正對LVS 設計的一款強大的輔助工具,只要用來提供故障切換切換(FAilover)
和健康檢查功能---判斷LVS 負載調到器 
節點服務器的可用性,及時隔離並且替換新的服務器,當故障主機恢復後將其重新加入集群
yum install keepalived ipvsadm -y  //在線下載所需的軟件

實驗只準備環境為 4臺 centos 7.3

其中兩臺為調度服務器以主服務器一個為備份服務器
另外兩個提供節點服務器
yum install httpd -y //下載服務並且開啟
修改網卡配置

開始調試
技術分享圖片

先做簡單的先調試兩臺點服務器的配置
1. systemctl start httpd.service  //開啟服務 
2. echo "this is accp web" >/var/www/html/index.html  //生成首頁
3.cp ifcfg-lo ifcfg-lo:0 //復制回環網卡 並且進行修改
4. DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
ONBOOT=yes    //就留下這三行 
5. vim /etc/init.d/web.sh //添加啟動腳本致內如如下
VIP=192.168.100.10
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP   //啟動它的虛擬IP添加網段
                /sbin/route add -host $VIP dev 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              ///接受調度服務器給與的回饋
                sysctl -p >/dev/null 2>&1
                echo "RealServer Start OK "     //優化參數 都導入到null 中俗稱黑洞
                ;;
        stop)
                ifconfig lo:0 down                     //關閉 虛擬IP  並且關閉服務器給與的回饋
                route del $VIP /dev/null 2>&1
                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 "RealServer Stopd"
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0
6. ifup lo:0    //(建議最後開啟虛擬網卡)
7. service web.sh stop
8. service web.sh start(建議重啟服務)
9. firefox "http://127.0.0.1/"& //進行自測檢測會在後臺進行打開稍等片刻
兩臺配置都一樣 關閉防火墻 等一些阻擋訪問的一些服務

技術分享圖片
配置調度服務器

1. systemctl stop firewalld.service 關閉防火墻
2. 修改網卡模式 僅主機模式 
sysctl.conf這個文件是對Linux系統直接配置的文件,一些基本防護也可以從這個文件做起:
# net.ipv4.tcp_syncookies = 1
當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN×××。
3. vi /etc/sysctl.conf 
net.ipv4.ip_forward=1   //啟用IP轉發功能,做NAT服務或者路由時才會用到。
#proc響應關閉重定向功能 
//惡意用戶可以使用IP重定向來修改遠程主機中的路由表,在設計良好的網絡中,末端的重定向設置是不需要的,發送和接受重定向信息包都要關閉。
net.ipv4.conf.all.send_redirects = 0   
net.ipv4.conf.default.send_redirects = 0
關閉重定向功能
net.ipv4.conf.ens33.send_redirects = 0  

4. sysctl -p //即使生效
5. cp ifcfg-ens33 ifcfg-ens33:0
6. vim ifcfg-ens33:0
DEVICE=ens33:0 //名稱
ONBOOT=yes     //開啟網卡
IPADDR=192.168.100.10  //虛擬IP
NETMASK=255.255.255.0  //馬克地址
7. ifup ens33:0  //啟動虛擬網卡//如報錯則重啟服務
service network restart
做到這其實就可以訪問網頁來進行測試了

配置調度服務器進行雙機熱備 先做主服務器

1. vim /etc/init.d/dr.sh  //添加腳本
GW=192.168.100.1    //網關
VIP=192.168.100.10   //虛擬IP
RIP1=192.168.100.201  //節點服務器
RIP2=192.168.100.202  //節點服務器
case "$1" in
start)
        /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm  //保存若直接啟動會報錯
        systemctl start ipvsadm                        //開啟工具
        /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up  //開啟虛擬網卡
        /sbin/route add -host $VIP dev ens33:0   //開啟路由賺翻
        /sbin/ipvsadm -A -t $VIP:80 -s rr  //調度方法 輪詢
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g  //啟動ivsf 調度
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g   //指定D2 的模式
        echo "ipvsadm starting --------------------[ok]"
        ;;
        stop)
        /sbin/ipvsadm -C    //關閉時該清空的清空
        systemctl stop ipvsadm
        ifconfig ens33:0 down    //當掉的當
        route del $VIP
        echo "ipvsamd stoped----------------------[ok]"
         ;;
        status)
        if [ ! -e /var/lock/subsys/ipvsadm ];then   //檢測啟動的時候文件存不存在 若存在則顯示停止狀態
        echo "ipvsadm stoped---------------"
        exit 1
                else
                echo "ipvsamd Runing ---------[ok]"
        fi
        ;;
        *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        esac
        exit 0
2. chmod +x dr.sh
3. service dr.sh start
4. vim/etc/keepalived/
vim/etc/keepalived/    //在配置文件中對應的序列號
10    smtp_server 127.0.0.1
12    router_id LVS_01  //從的改成02
20     state MASTER  //為主服務器//BACKUP 從
22     virtual_router_id 10 //更具需求可以不改
27         auth_pass abc123  //預定義密碼
30         192.168.100.10  //留下一個並且對應到虛擬IP
34 virtual_server 192.168.100.10 80 //對應虛擬IP
37     lb_kind DR   //DR模式
41     real_server 192.168.100.221 80 {  //對應的真實的地址也就是提供服務的IP
43         TCP_CHECK {   //檢查
44             url {  //準備8DD 刪除8行自行添加
44             cpnnect_port 80  //聲明端口
41     real_server 192.168.100.221 80 {  //準備復制10行新成新的對應的證實地址IP
49     }  //此處粘貼  
       real_server 192.168.100.222 80 {
       TCP_CHECK {
            url {
            cpnnect_port 80   //一樣的內容 
systemctl start keepalived.service //啟動服務
systemctl status keepalived.service  //查看服務有沒有開啟
ip addr show dev ens33:0  //檢測虛擬網卡 啟用
備的服務器一樣的配置

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片技術分享圖片

CentOS 7.3 部署LVS + Keepalived 高可用集群