首頁  >  文章  >  運維  >  nginx+keepalived高可用主從設定的方法

nginx+keepalived高可用主從設定的方法

王林
王林轉載
2023-05-29 14:16:061537瀏覽

一、系統環境及軟體版本

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-developenssl 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

nginx+keepalived高可用主從設定的方法

vi /opt/nginx/html/index.html

nginx+keepalived高可用主從設定的方法

#5. nginx 啟動及常用指令

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

nginx+keepalived高可用主從設定的方法

啟動:/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遇到的問題

nginx+keepalived高可用主從設定的方法##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:7080weight=1;
   server 10.0.0.85:8980weight=1;
  }

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

結果如下:

##其中weight是權重backup是備用伺服器,只有其它伺服器宕機後,備用伺服器才會啟動。 nginx+keepalived高可用主從設定的方法

三、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 指令

#  啟動: servicekeepalived start

  停止:servicekeepalived stop

  重啟: servicekeepalived restart

9.注意的問題

##a.vip.

解決方案:ip addr 查看本機ip所在網路卡的名稱,然後修改設定檔

vi /etc/keepalived/keepalived.conf

nginx+keepalived高可用主從設定的方法

儲存後servicekeepalived restart 重啟keepalived服務即可

nginx+keepalived高可用主從設定的方法10.測試

##啟動主從nginx和keepalived 服務

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

#在192.168.38.64 可看到

#同時在192.168.38.66

nginx+keepalived高可用主從設定的方法

同時在192.168.38.66

nginx+keepalived高可用主從設定的方法

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

nginx+keepalived高可用主從設定的方法

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

当杀死 nginx后,keepalived则会自动启动 nginx服务

11. keepalived脑裂 (ip add | grep 192.168.38.100 在主从都有结果)

解决方案:防火墙问题

iptables-iinput4-pvrrp-jaccept  

service iptables save

service iptables restart

nginx+keepalived高可用主從設定的方法

以上是nginx+keepalived高可用主從設定的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除