CentOS7構建LVS+Keepalived高可用方案

  • 負載均衡(LB)軟件
    常見負載均衡軟件有:LVS、Nginx、Haproxy
    LVS:
    1). 基於4層網絡協議,幾乎無流量產生,這個特點也決定這幾個負載均衡軟件裏負載能力最強,內存、CPU佔用資源也低。
    2). 應用範圍廣,不僅對Web服務做負載均衡,而且可結合其他應用做負載,如LVS+MySQL負載均衡。
    3). 配置簡單, 可配置東西較少。
    4). 無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。
    5). 有個虛IP概念。
    Nginx:
    1). 基於7層網絡協議,對Http應用做分流策略,如配置域名。
    2). 高負載、穩定。支持上萬高併發。負載能力小於LVS。
    3). 安裝配置簡單,支持的正則比Haproxy豐富。且對網絡穩定性的依賴非常小。
    4). 可通過端口檢測到服務器內部的故障,如根據服務器處理網頁返回的狀態碼、超時等,把返回錯誤的請求重新提交到另一個節點。
    5). 作Web服務器。
    6). 反向代理\負載均衡。
    Haproxy:
    1). 支持虛擬主機,可工作在4層、7層。
    2). 負載均衡效率上來講Haproxy比Nginx更出色,在併發處理上也是優於Nginx。
    3). 能夠補充Nginx的一些缺點,如支持Session的保持,Cookie的引導。同時支持通過獲取指定的url來檢測後端服務器的狀態。
    4). 支持負載均衡策略較多。如roundrobin簡單輪詢、leastconn最少服務器連接數、static-rr權重輪詢、uri哈希、sourceIP哈希、url_param請求的URL參數等。
  • LVS+Keepalived
    LVS 是一個開源的軟件,可實現 Linux平臺下的負載均衡。LVS 是 Linux Virtual Server 的縮寫,意思是 Linux 虛擬服務器。 Linux 內核2.4版本後,LVS 已經是 Linux 內核標準的一部分。
    LVS主要工作是提供調度算法,把客戶端請求按照需求調度在Real Server上,Keepalived 主要工作是提供 LVS 控制器的一個冗餘,並且對Real Server做健康檢查,發現Real Server故障,就把它從 LVS 集羣中剔除,Real Server只負責提供服務。如LVS+Keepalived+Nginx模式,Nginx作爲Real Server。
    LVS轉發模式
    VS/NAT(Virtual Server via Network Address Translation):通過網絡地址轉換,調度器重寫請求報文的目標地址,請求到後端Real Server,後端Real Server的響應報文通過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。客戶請求哪裏來從哪兒返回。
    VS/TUN(Virtual Server via IP Tunneling):在使用上面的NAT 技術時,由於請求和響應報文都必須經過調度器地址重寫,當客戶請求越來越多時,調度器的處理能力將成爲瓶頸。爲了解決這個問題,調度器把請求報文通過 IP 隧道轉發至Real Server,而Real Server將響應直接返回給客戶,所以調度器只處理請求報文。由於一般網絡服務應答比請求報文大許多,採用 VS/TUN 技術後,集羣系統的最大吞吐量可提高 10 倍。
    VS/DR (Virtual Server via Direct Routing):VS/DR 通過改寫請求報文的 MAC 地址,將請求發送到Real Server,而後端的Real Server將響應直接返回給客戶。同 VS/TUN 技術一樣,VS/DR 技術可極大地提高集羣系統的伸縮性。後面就按此VS/DR模式作爲操作例子。
  • LVS(VS/DR)+Keepalived高可用集羣實例
    OS環境:CentOS7
    CentOS7構建LVS+Keepalived高可用方案
    1). 在20、21上安裝ipvsadm和keepalived軟件
    yum -y install ipvsadm
    yum -y install keepalived

    啓動keepalived服務

    systemctl start keepalived.service

    使用配置LVS的時候,不能直接配置內核中的ipvs,需使用ipvs的管理工具ipvsadm進行管理。用於查看lvs轉發及代理情況的工具。
    2).修改keepalived配置文件
    20的Master配置文件如下:
    vim /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived
    global_defs {
    notification_email {
     admin@localhost
    }
    notification_email_from root@localhost
    router_id LVS_01   #表示運行keepalived服務器的一個標識,發郵件時顯示在郵件主題的信息
    vrrp_skip_check_adv_addr
    vrrp_garp_interval 0
    vrrp_gna_interval 0
    }
    vrrp_instance VI_1 {
    state MASTER    #指定keepalived的角色Master
    interface ens192     #網卡,ip a查看
    virtual_router_id 100     #虛擬路由標識,主備兩個節點的設置必須一樣,以指明各個節點屬於同一VRRP組 
    priority 100    #定義優先級,Master的priority要高於slave
    advert_int 1    #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位秒
    authentication {    #設置驗證類型和密碼
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.20.1.99/24 dev ens192    #設置VIP
    }
    }
    virtual_server 10.20.1.99 443 {    #設置虛擬服務器,需指定虛擬IP地址和服務端口
    delay_loop 3    #健康時間檢查,單位秒
    lb_algo rr    #負載均衡調度算法wlc|rr
    lb_kind DR    #設置LVS實現負載均衡機制,有NAT、TUN、DR三個模式
    persistence_timeout 50    #會話保持時間,單位秒。此選項對動態網頁是非常有用
    protocol TCP    #指定轉發協議類型,有TCP和UDP
    real_server 10.20.1.22 443 {    #Real Server服務器,這裏爲Nginx服務器
        weight 1    #設置權重
        TCP_CHECK {    #設置檢查方式,可以設置HTTP_GET | SSL_GET
            connect_port 443    #檢測Real Server的偵聽端口
            connect_timeout 5    #超時時間,單位秒。如果在這個時間內無返回,則說明一次監測失敗
            retry 3    #設置多少次監測失敗,就判斷這個Real Server死掉
            delay_before_retry 3    #重試間隔
        }
    }
    real_server 10.20.1.23 443 {
        weight 1
        TCP_CHECK {
            connect_port 443
            connect_timeout 5
            retry 3            
            delay_before_retry 3
        }
    }
    }

    21的slave的/etc/keepalived/keepalived.conf配置,需更改state Backup和修改priority的值小於master的priority。
    Master服務器上查看IP,VIP在Master上。
    CentOS7構建LVS+Keepalived高可用方案
    ipvsadm命令查看規則。
    CentOS7構建LVS+Keepalived高可用方案
    3). Real Server配置
    因爲VS/DR模式,在後端Real Server即Nginx服務器上配置腳本。配置兩臺Nginx服務器上爲迴環地址lo:0綁定VIP地址、ARP廣播。
    vim /opt/scripts/lvs_rs.sh

    #!/bin/bash
    vip=10.20.1.99
    ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
    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

    在22、23服務器上分別執行。
    CentOS7構建LVS+Keepalived高可用方案
    4). 測試LVS+Keepalived高可用羣集
    客戶端的瀏覽器中,能夠通過LVS+Keepalived羣集的VIP地址漂移(10.20.1.99)正常訪問web,驗證羣集構建成功。
    先在20Master上將keepalived.service服務器關閉,查看IP情況:
    CentOS7構建LVS+Keepalived高可用方案
    發現VIP沒了。
    然後在21Slave上查看VIP是否漂移過來了:
    CentOS7構建LVS+Keepalived高可用方案
    發現VIP已經來到Slave上了。
    這時,將20Master上將keepalived.service服務又重新啓動,VIP後回來了。

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