部署keepalived高可用服務

keepalived服務概念說明
keepalived軟件能幹什麼?
Keepalived軟件起初是專爲LVS負載均衡軟件設計的,
用來管理並監控LVS集羣系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能

Keepalived軟件主要是通過VRRP協議實現高可用功能的。
VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗餘協議)的縮寫,
VRRP出現的目的就是爲了解決靜態路由單點故障問題的,它能夠保證當個別節點宕機時,
整個網絡可以不間斷地運行

keepalived軟件工作原理?(重點)
原理 
1)VRRP協議,全稱Virtual Router Redundancy Protocol,中文名爲虛擬路由冗餘協議,
   VRRP的出現是爲了解決靜態路由的單點故障。
2)VRRP是用過IP多播的方式(默認多播地址(224.0.0.18))實現高可用對之間通信的。
3)工作時主節點發包,備節點接包,當備節點接收不到主節點發的數據包的時候,
   就啓動接管程序接管主節點的資源。備節點可以有多個,通過優先級競選,
   但一般Keepalived系統運維工作中都是一對。

keepalived軟件主要功能?
①. 管理LVS負載均衡軟件
②. 實現對LVS集羣節點健康檢查功能 
③. 作爲系統網絡服務的高可用功能
  1. 部署keepalived高可用服務:
    1)確認反向代理服務是否工作正常
    第一個里程:在lb01/lb02上測試web服務器是否可以正常
    curl -H host:www.etiantian.org 10.0.0.7/oldboy.html
    curl -H host:www.etiantian.org 10.0.0.8/oldboy.html
    curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
    curl -H host:bbs.etiantian.org 10.0.0.7/oldboy.html
    curl -H host:bbs.etiantian.org 10.0.0.8/oldboy.html
    curl -H host:bbs.etiantian.org 10.0.0.9/oldboy.html

    第二個里程:在瀏覽器上測試訪問lb01/lb02 注:兩個負載服務器上都需要部署nginx服務並開啓
    解析hosts文件,將域名解析爲10.0.0.5,進行測試訪問
    解析hosts文件,將域名解析爲10.0.0.6,進行測試訪問
    scp -rp /application/nginx/conf/nginx.conf 10.0.0.6:/application/nginx/conf/ ---測試前同步lb01和lb02配置文件

    2)安裝部署高可用keepalived服務 注:兩臺lb01和lb02都要部署
    第一個里程:安裝keepalived服務軟件
    yum install -y keepalived

    第二個里程:編寫keepalived配置文件
    vim /etc/keepalived/keepalived.conf

    man keepalived.conf --- 配置文件說明信息
    配置文件結構:
    GLOBAL CONFIGURATION --- 全局配置(
    VRRPD CONFIGURATION --- vrrp配置(

    LVS CONFIGURATION --- LVS服務相關配置

    lb01主負載均衡器配置
    ! Configuration File for keepalived
    global_defs {
    router_id lb01 -----不同處1
    }
    vrrp_instance gorup01 {
    state MASTER -----不同處2
    interface eth0
    virtual_router_id 51
    priority 150 -----不同處3
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3/24 dev eth0 label eth0:1
    }
    }
    /etc/init.d/keepalived reload

    lb02配置信息 注:ip a能看到eth0網卡上有多個地址
    ! Configuration File for keepalived
    global_defs {
    router_id lb02 -----不同處1
    }
    vrrp_instance group01 {
    state BACKUP -----不同處2
    interface eth0
    virtual_router_id 51
    priority 100 -----不同處3
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3/24 dev eth0 label eth0:1
    }
    }
    /etc/init.d/keepalived reload

    3)進行測試訪問 注:用谷歌瀏覽器進行訪問

  2. 部署keepalived高可用服務問題
    同時在keepalived高可用集羣中,出現了兩個虛擬IP地址信息,這種情況就稱爲腦裂

    腦裂情況出現原因:

    1. 心跳線出現問題
      網卡配置有問題
      交換設備有問題
      線纜連接有問題
    2. 有防火牆軟件阻止問題
    3. virtual_router_id配置數值不正確
      總之:只要備服務器收不到組播包,就會成爲主,而主資源沒有釋放,就會出現腦裂

    利用shell腳本實現監控管理:
    備用設備有VIP就是表示不正常

    1. 真正實現主備切換
    2. 出現腦裂情況了

    #!/bin/bash
    check_info=$(ip a|grep -c 10.0.0.3)
    if [ $check_info -ne 0 ]
    then
    echo "keepalived server error!!!"
    fi

  3. 實現nginx反向代理監控虛擬IP地址
    1)編寫nginx反向代理配置 注:lb01和lb02兩臺服務器都要配置
    server {
    listen 10.0.0.3:80;
    server_name www.etiantian.org;
    root html;
    index index.html index.htm;
    location / {
    proxy_pass http://oldboy;
    proxy_set_header host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    }
    server {
    listen 10.0.0.3:80;
    server_name bbs.etiantian.org;
    root html;
    index index.html index.htm;
    location / {
    proxy_pass http://oldboy;
    proxy_set_header host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    }
    /application/nginx/sbin/nginx -s stop
    /application/nginx/sbin/nginx
    netstat -lntup|grep nginx
    tcp 0 0 10.0.0.3:80 0.0.0.0:* LISTEN 53334/nginx

    實現監聽本地網卡上沒有的IP地址 注:lb01和lb02兩臺服務器都要配置
    [root@lb02 keepalived]# /application/nginx/sbin/nginx -t
    nginx: the configuration file /application/nginx-14.0/conf/nginx.conf syntax is ok
    nginx: [emerg] bind() to 10.0.0.3:80 failed (99: Cannot assign requested address)
    nginx: configuration file /application/nginx-14.0/conf/nginx.conf test failed
    解決方法:
    echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
    sysctl -p

  4. 將keepalived服務和反向代理nginx服務建立聯繫
    nginx反向代理服務停止,keepalived服務也停止
    1)編寫腳本
    vim /server/scripts/check_web
    #!/bin/bash
    web_info=$(ps -ef|grep [n]ginx|wc -l)
    if [ $web_info -lt 2 ]
    then
    /etc/init.d/keepalived stop
    fi

    chmod +x check_web.sh --- 修改腳本可執行權限
    2)修改nginx配置文件,實現監控nginx服務
    vim /etc/keepalived/keepalived.conf --------編輯keepalived服務配置文件
    vrrp_script check_web {
    #定義一個監控腳本,腳本必須有執行權限
    script "/server/scripts/check_web.sh"
    #指定腳本間隔時間
    interval 2
    #腳本執行完成,讓優先級值和權重值進行運算,從而實現主備切換
    weight 2
    } 注意:放在global和vrrp之間

    調用 注:放在virtual後面
    track_script {
    check_web
    }

  5. 實現高可用集羣架構中雙主配置(互爲主備配置)
    lb01
    vrrp_instance gorup01 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3/24 dev eth0 label eth0:1
    }
    }
    vrrp_instance gorup02 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.4/24 dev eth0 label eth0:1
    }
    }

    lb02
    vrrp_instance gorup01 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3/24 dev eth0 label eth0:1
    }
    }
    vrrp_instance gorup02 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 150
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.4/24 dev eth0 label eth0:1
    }
    }

    修改nginx反向代理監控地址信息
    www.etiantian.org 10.0.0.3:80
    bbs.etiantian.org 10.0.0.4:80

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