Nginx+Keepalived主從雙機熱備+自動切換


1 安裝配置nginx

參考: http://www.cnblogs.com/jager/p/4388202.html

2 安裝配置keepalived

tar xvf keepalived-1.2.18.tar.gz
cd keepalived-1.2.18

./configure
make && make install

cd /etc/
mkdir keepalived
vim /etc/keepalived/chk_nginx.keepalived.sh
chmod a+x /etc/keepalived/chk_nginx.keepalived.sh

cd /usr/local/etc/keepalived/
vim /usr/local/etc/keepalived/keepalived.conf
chk_nginx.keepalived.sh:



keepalived.conf:

keepalived.conf(另外一台備機上的)

  

3 啟動相關服務

  啟動nginx

/usr/local/nginx/sbin/nginx

  啟動 keepalived

killall  keepalived
keepalived -f /usr/local/etc/keepalived/keepalived.conf

 

4 keepalive自動切換演練

通過 ip a 可以查看到當前的vip連在哪台服務器上,測試自動切換可以killall keepalived來模擬nginx服務器宕機,然后再用ip a來查看當前的vip,比如nginx 主機宕機之后vip應該自動漂移到nginx備機服務器上,當nginx主機恢復之后keepalived自動將vip重新飄回主機

 

5 keepalive相關參數說明

! Configuration File for keepalived

global_defs {
   notification_email {
     admin@lvtao.net             #設置報警郵件地址,可以設置多個,每行一個。 需開啟本機的sendmail服務
   }
   notification_email_from  admin@lvtao.net        #設置郵件的發送地址
   smtp_server 127.0.0.1                           #設置smtp server地址
   smtp_connect_timeout 30                         #設置連接smtp server的超時時間
   router_id LVS_DEVEL                             #表示運行keepalived服務器的一個標識。發郵件時顯示在郵件主題的信息
}

vrrp_instance VI_1 {
    state MASTER              #指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器
    interface eth0            #指定HA監測網絡的接口
    virtual_router_id 51      #虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用唯一的標識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的
    priority 100              #定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級
    advert_int 1              #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {          #設置驗證類型和密碼
        auth_type PASS        #設置驗證類型,主要有PASS和AH兩種
        auth_pass 1111        #設置驗證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信
    }
    virtual_ipaddress {       #設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個
        10.0.0.148
    }
}

virtual_server 10.0.0.148 80 {      #設置虛擬服務器,需要指定虛擬IP地址和服務端口,IP與端口之間用空格隔開
    delay_loop 6                    #設置運行情況檢查時間,單位是秒
    lb_algo rr                      #設置負載調度算法,這里設置為rr,即輪詢算法
    lb_kind DR                      #設置LVS實現負載均衡的機制,有NAT、TUN、DR三個模式可選
    persistence_timeout 50          #會話保持時間,單位是秒。這個選項對動態網頁是非常有用的,為集群系統中的session共享提供了一個很好的解決方案。
                                    #有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話的保持時間。
                                    #需要注意的是,這個會話保持時間是最大無響應超時時間,也就是說,用戶在操作動態頁面時,如果50秒內沒有執行任何操作,
                                    #那么接下來的操作會被分發到另外的節點,但是如果用戶一直在操作動態頁面,則不受50秒的時間限制
    protocol TCP                    #指定轉發協議類型,有TCP和UDP兩種

    real_server 10.0.0.137 80 {     #配置服務節點1,需要指定real server的真實IP地址和端口,IP與端口之間用空格隔開
        weight 3                    #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設置權值大小可以為不同性能的服務器
                                    #分配不同的負載,可以為性能高的服務器設置較高的權值,而為性能較低的服務器設置相對較低的權值,這樣才能合理地利用和分配系統資源
        TCP_CHECK {                 #realserver的狀態檢測設置部分,單位是秒
            connect_timeout 10      #表示3秒無響應超時
            nb_get_retry 3          #表示重試次數
            delay_before_retry 3    #表示重試間隔
            connect_port 80
        }
    }
real_server 10.0.0.139 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }

 參考:http://www.linuxde.net/2013/06/14431.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM