nginx+keepalived 高可用主從配置


權重一、系統環境及軟件版本

  CentOS 6.6 x64
  keepalived-1.2.18.tar.gz
  nginx-1.6.2.tar.gz

  主服務器:192.168.38.64

  從服務器:192.168.38.66

  VIP : 192.168.38.100

二、nginx安裝 (主從安裝一致)

1.安裝依賴環境

  yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.上傳nginx到  opt 目錄

3.解壓安裝

  # tar -zxvf nginx-1.6.2.tar.gz

  # cd nginx-1.6.2
  # ./configure --prefix=/opt/nginx    (prefix=/opt/nginx   這個指定的是 nginx目錄)
  # make && make install

4.修改 nginx監聽端口 及 index.html

  # vi /opt/nginx/conf/nginx.conf

  

  vi /opt/nginx/html/index.html

  

  5. nginx 啟動及常用命令

  配置測試:      /opt/nginx/sbin/nginx -t    出現如下界面說明配置沒問題

  

  啟動 :  /opt/nginx/sbin/nginx

  重啟 :  /opt/nginx/sbin/nginx  -s reload

  停止  :  /opt/nginx/sbin/nginx -s stop

6.開機啟動 nginx

  vi /etc/rc.local

  加入:   /opt/nginx/sbin/nginx 

 7.修改防火牆開放端口

  vi /etc/sysconfig/iptables

  添加 :  -A INPUT -p tcp -m state --state NEW -m tcp --dport  8888 -j ACCEPT

  重啟防火牆   :    service iptables restart

8.問題

  啟動 nginx遇到的問題  

  

  vi /etc/ld.so.conf

  添加:   /opt/nginx/lib/

9.nginx的負載均衡

  nginx的負載均衡主要是 由upstream 這一模塊完成

  修改 nginx的配置文件

  vi /data/nginx/conf/nginx.conf

  添加如下內容:(web_pools 這個名稱可變)

  upstream web_pools {    
        server 10.0.6.108:7080 weight=1; 
        server 10.0.0.85:8980 weight=1; 
  }

  將server節點下的location節點中的proxy_pass配置為:http:// + upstream名稱即可

  結果如下:

  

  其中  weight是權重    backup是備用服務器 ,只有其它服務器宕機后,備用服務器才會啟動。

 三、keepalived 安裝

1.keepalived上傳到 opt目錄下

 2.解壓 安裝  

   tar -zxvf keepalived-1.2.18.tar.gz
  cd keepalived-1.2.18
  ./configure --prefix=/opt/keepalived
  make && make install

3.將 keepalived 安裝成 linux服務

   cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
   cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
   ln -s /opt/sbin/keepalived /usr/sbin/
   ln -s /opt/keepalived/sbin/keepalived /sbin/

 4.設置 keepalived 服務開機啟動

   chkconfig keepalived on

5.修改 Keepalived 配置文件

  vi /etc/keepalived/keepalived.conf 

  ! Configuration File for keepalived   (!、#都是注釋)

  global_defs {  #全局配置
  notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id LVS_01     #這個配置要唯一
  } 

  vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑
    interval 2 ## 檢測時間間隔
    weight -20 ## 如果條件成立,權重-20
  } 

  vrrp_instance VI_1 {   #實例  VI_1 名字可以隨意  但是不建議修改
    state MASTER   # 主服務器 MASTER     從服務器 BACKUP
    interface em1     #  em1 網卡
    virtual_router_id 51    # virtual_router_id  主備要一致
    priority 100    # 優先級  數字越大 優先級越高    priority 的值 主服務器要大於 從服務器
    advert_int 1   #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 
    authentication {   # 主從通信 驗證類型及密碼  
      auth_type PASS  #設置vrrp驗證類型,主要有PASS和AH兩種
      auth_pass 1111  #設置vrrp驗證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信
    } 

    ## 將 track_script 塊加入 instance 配置塊
    track_script {
      chk_nginx ## 執行 Nginx 監控的服務
    }

    virtual_ipaddress { 
    192.168.38.100/24    #VRRP HA 虛擬地址 如果有多個VIP,繼續換行填寫
    }
  } 

6.編寫 Nginx 狀態檢測腳本

  vi /etc/keepalived/nginx_check.sh

  內容如下:

  #!/bin/bash

  A=`ps -C nginx –no-header |wc -l`
  if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

      killall keepalived
    fi
  fi

  保存后,給腳本賦執行權限:

   chmod +x /etc/keepalived/nginx_check.sh

7.注意點: Keepalived主從配置文件不同點

  a.router_id  不一致

  b.state  主服務器是 MASTER ,從服務器是  BACKUP

  c.priority   主服務器 大於 從服務器

8.keepalived 命令

  啟動 : service keepalived start

  停止: service keepalived stop

  重啟: service keepalived restart

9.注意的問題

  a.vip沒綁定成功

    解決方案:

    ip addr   查看  本地ip所在網卡的名稱 ,然后修改 配置文件

    

 

    vi /etc/keepalived/keepalived.conf  

     

    保存后   service keepalived restart  重啟  keepalived服務即可

10.測試

  啟動主從nginx和keepalived 服務

  主從服務器分別:    ip add | grep 192.168.38.100 

  在 192.168.38.64 可看到 

  

  同時 在 192.168.38.66

  

  當殺死 主服務器上的 keepalived 則 從服務器 

  

  當再次啟動 主服務器上的 keepalived則結果主服務器上有結果,從服務器上沒結果。

        當殺死 nginx后,keepalived則會自動啟動 nginx服務

11. keepalived 腦裂 ( ip add | grep 192.168.38.100     在主從都有結果)

  解決方案:防火牆問題

  iptables -I INPUT 4 -p vrrp -j ACCEPT   

  service iptables save

  service iptables restart

    

 


免責聲明!

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



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