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服務web

    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.shvim

    #!/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

    在2二、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後回來了。後端

相關文章
相關標籤/搜索