【nginx+keepalived】nginx+keepalived搭建高可用

1、結構及環境

1.1 環境介紹

操做系統:centos7javascript

nginx+keepalived:106.53.73.200  masterphp

nginx+keepalived:182.254.184.102  backupcss

VIP:106.53.73.222  負載均衡器上配置的域名都解析到這個VIP上html

1.2 環境安裝

PS:兩臺服務器都需安裝nginx和keepalived(nginx已經安裝,這裏不做解釋)java

安裝依賴:node

# yum -y install gcc pcre-devel zlib-devel openssl-devel

關閉selinux和防火牆:linux

# 查看selinux
# getenforce 
Disabled

# 設置selinux(臨時修改)
# setenforce 0

# 永久修改(寫進配置文件,重啓服務器生效)
# vim /etc/sysconfig/selinux
SELINUX=enforcing 改成 SELINUX=disabled
# 查看狀態(關閉只需將status改成stop便可)
# systemctl  status firewalld

下載最新安裝包:nginx

# wget https://www.keepalived.org/software/keepalived-2.0.19.tar.gz
[root@VM_0_10_centos tmp]# tar -zxvf keepalived-2.0.19.tar.gz
[root@VM_0_10_centos tmp]# cd keepalived-2.0.19/
[root@VM_0_10_centos keepalived-2.0.19]# ./configure

出現如下錯誤,是沒有安裝依賴包,安裝依賴包便可shell

[root@VM_0_10_centos keepalived-2.0.19]# yum -y install libnl libnl-devel
[root@VM_0_10_centos keepalived-2.0.19]# yum -y install libnfnetlink-devel

再次編譯安裝便可:apache

[root@VM_0_10_centos keepalived-2.0.19]# make && make install

加入到系統啓動服務:

# 將nginx和keepalived加入到開機自啓
[root@VM_0_10_centos keepalived-2.0.19]# cp -r /tmp/keepalived-2.0.19/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
[root@VM_0_10_centos keepalived-2.0.19]# cp -r /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@VM_0_10_centos keepalived-2.0.19]# mkdir /etc/keepalived
[root@VM_0_10_centos keepalived-2.0.19]# cp -r /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@VM_0_10_centos keepalived-2.0.19]# cp -r /usr/local/sbin/keepalived /usr/sbin/
[root@VM_0_10_centos keepalived-2.0.19]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local 
[root@VM_0_10_centos keepalived-2.0.19]# echo "/etc/init.d/keepalived start" >> /etc/rc.local

1.3 配置nginx服務

參考博客:http://www.javashuo.com/article/p-hrnbfcpv-bb.html

配置文件接入:

[root@centos6-1 conf]# vim /usr/local/nginx/conf/nginx.conf
user  www;
worker_processes  8;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;

    ######
    ## set access log format
    ######
    log_format  main  '$http_x_forwarded_for $remote_addr $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_cookie" $host $request_time';
    #######
    ## http setting
    #######
    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout  65;
    #便於測試,緩存功能先取消
    #proxy_cache_path /var/www/cache levels=1:2 keys_zone=mycache:20m max_size=2048m inactive=60m;
    #proxy_temp_path /var/www/cache/tmp;

    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    fastcgi_buffer_size 256k;
    fastcgi_buffers 8 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;

    client_header_timeout 600s;
    client_body_timeout 600s;
   # client_max_body_size 50m;
    client_max_body_size 100m;               #容許客戶端請求的最大單個文件字節數
    client_body_buffer_size 256k;            #緩衝區代理緩衝請求的最大字節數,能夠理解爲先保存到本地再傳給用戶

    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
    gzip_vary on;

    ## includes vhosts
    include vhosts/*.conf;
}
[root@centos6-1 conf]# mkdir /usr/local/nginx/conf/vhosts
[root@centos6-1 conf]# mkdir /var/www/cache
[root@centos6-1 conf]# ulimit 65535
[root@centos6-1 conf]# cd vhosts/
[root@centos6-1 vhosts]# vim LB.conf 
upstream LB-WWW {
      ip_hash;
      server 192.168.139.129:8080 max_fails=3 fail_timeout=30s;     
      #max_fails = 3 爲容許失敗的次數,默認值爲1
      server 192.168.139.130:8080 max_fails=3 fail_timeout=30s;     
      #fail_timeout = 30s 當max_fails次失敗後,暫停將請求分發到該後端服務器的時間
    }

  server {
      listen      80;
      server_name dev.hanginx.com;

      access_log  /usr/local/nginx/logs/dev-access.log;
      error_log  /usr/local/nginx/logs/dev-error.log;
      location / {
         proxy_pass http://LB-WWW;
         proxy_redirect off ;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header REMOTE-HOST $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_connect_timeout 300;   #跟後端服務器鏈接超時時間,發起握手等候響應時間
         proxy_send_timeout 300;      #後端服務器回傳時間,就是在規定時間內後端服務器必須傳完全部數據
         proxy_read_timeout 600;      #鏈接成功後等待後端服務器的響應時間,已經進入後端的排隊之中等候處理
         proxy_buffer_size 256k;      #代理請求緩衝區,會保存用戶的頭信息以供nginx進行處理
         proxy_buffers 4 256k;        #同上,告訴nginx保存單個用幾個buffer最大用多少空間
         proxy_busy_buffers_size 256k;      #若是系統很忙時候能夠申請最大的proxy_buffers
         proxy_temp_file_write_size 256k;   #proxy緩存臨時文件的大小
         proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
         proxy_max_temp_file_size 128m;
       # proxy_cache mycache;        
         proxy_cache_valid 200 302 60m;
         proxy_cache_valid 404 1m;
        }
    }

在兩個tomcat服務下建立index文件進行測試,經過ip訪問以下(需重啓nginx和tomcat服務)

本身本人的配置文件是在nginx.conf配置文件中配置的,而不是經過include接入的方式:

[root@VM_0_10_centos ~]# less /usr/local/nginx/conf/nginx.conf
#user  nobody;
user apache apache;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    
#便於測試,緩存功能先取消
    #proxy_cache_path /var/www/cache levels=1:2 keys_zone=mycache:20m max_size=2048m inactive=60m;
    #proxy_temp_path /var/www/cache/tmp;

    client_max_body_size 100m;               #容許客戶端請求的最大單個文件字節數
    client_body_buffer_size 256k;            #緩衝區代理緩衝請求的最大字節數,能夠理解爲先保存到本地再傳給用戶

    #gzip  on;
    #20190827添加
    upstream testTomcat{
        #設置分權,權重越高優先訪問
        server 106.53.73.200:8888 weight=1;
        server 182.254.184.102:8888 weight=1;
    }
    
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        #全部請求都在這裏去找分配
        location / {
            #root   html;
            index  index.html index.htm index.php;
            #使用test分配規則,即剛剛自定義添加的upstream節點
            proxy_pass http://testTomcat/test/;
           # proxy_pass http://testTomcat/;
           proxy_redirect off ;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header REMOTE-HOST $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_connect_timeout 300;   #跟後端服務器鏈接超時時間,發起握手等候響應時間
         proxy_send_timeout 300;      #後端服務器回傳時間,就是在規定時間內後端服務器必須傳完全部數據
         proxy_read_timeout 600;      #鏈接成功後等待後端服務器的響應時間,已經進入後端的排隊之中等候處理
         proxy_buffer_size 256k;      #代理請求緩衝區,會保存用戶的頭信息以供nginx進行處理
         proxy_buffers 4 256k;        #同上,告訴nginx保存單個用幾個buffer最大用多少空間
         proxy_busy_buffers_size 256k;      #若是系統很忙時候能夠申請最大的proxy_buffers
         proxy_temp_file_write_size 256k;   #proxy緩存臨時文件的大小
         proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
         proxy_max_temp_file_size 128m;
       # proxy_cache mycache;        
         proxy_cache_valid 200 302 60m;
         proxy_cache_valid 404 1m;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
      location ~ \.php$ {
          root           html;
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
         # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
      }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

1.4 配置keepalived服務

配置以前須要配置好郵件服務,固然,不配置郵件服務也沒影響

mail配置參考博客:http://www.javashuo.com/article/p-vgzwqdau-bu.html

master服務(106.53.73.200)配置:

# 修改以前先備份
[root@VM_0_10_centos ~]# cd /etc/keepalived/
[root@VM_0_10_centos keepalived]# pwd
/etc/keepalived
[root@VM_0_10_centos keepalived]# cp -r keepalived.conf keepalived.conf.bak
[root@VM_0_10_centos keepalived]# less keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {           # 指定keepalived在發生事件時(好比切換)發送通知郵件的郵箱
     acassen@firewall.loc         # 設置報警郵件地址,能夠設置多個,每行一個。 需開啓本機的sendmail服務
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc     # keepalived在發生諸如切換操做時須要發送email通知地址
   smtp_server 192.168.200.1      # 指定發送email的smtp服務器
   smtp_connect_timeout 30        # 設置鏈接smtp server的超時時間
   router_id MASTER-200           # 運行keepalived的機器的一個標識,一般可設爲hostname。故障發生時,發郵件時顯示在郵件主題中的信息。
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#調用 shell 腳本對 haproxy 服務進行監控
vrrp_script check_pid {
  script "/etc/keepalived/check_pid.sh /var/run/nginx/nginx.pid" 
  interval 2    # 檢測間隔
  weight -5     # 權重起伏
  fall 2                     # 檢測連續2次失敗纔算肯定是真失敗。會用weight減小優先級(1-255之間)
  rise 1                     # 檢測1次成功就算成功。但不修改優先級
}

vrrp_instance VI_1 {
    state MASTER    # 指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器。注意這裏的state指定instance(Initial)的初始狀態,就是
說在配置好後,這臺服務器的初始狀態就是這裏指定的,但這裏指定的不算,仍是得要經過競選經過優先級來肯定。若是這裏設置爲MASTER,但如若他的優先級不及另一臺,那麼這臺在發送通告時,會發送本身的優先級,另一臺發現優先級不如本身的高,那麼他會就回搶佔爲MASTER    interface eth0          # 指定HA監測網絡的接口。實例綁定的網卡,由於在配置虛擬IP的時候必須是在已有的網卡上添加的
    mcast_src_ip 106.53.73.200  # 發送多播數據包時的源IP地址,這裏注意了,這裏實際上就是在哪一個地址上發送VRRP通告,這個很是重要,必定要選擇穩定的網卡端口來
發送,這裏至關於heartbeat的心跳端口,若是沒有設置那麼就用默認的綁定的網卡的IP,也就是interface指定的IP地址    virtual_router_id 51         # 虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用惟一的標識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的
    priority 101                 # 定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級
    advert_int 1                 # 設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {             # 設置驗證類型和密碼。主從必須同樣
        auth_type PASS           # 設置vrrp驗證類型,主要有PASS和AH兩種    
        auth_pass keepalived
    }
    virtual_ipaddress {    #VRRP HA 虛擬地址 若是有多個VIP,繼續換行填寫
        106.53.73.222
    }
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc     # keepalived在發生諸如切換操做時須要發送email通知地址
   smtp_server 192.168.200.1      # 指定發送email的smtp服務器
   smtp_connect_timeout 30        # 設置鏈接smtp server的超時時間
   router_id MASTER-200           # 運行keepalived的機器的一個標識,一般可設爲hostname。故障發生時,發郵件時顯示在郵件主題中的信息。
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#調用 shell 腳本對 haproxy 服務進行監控
vrrp_script check_pid {
  script "/etc/keepalived/check_pid.sh /var/run/nginx/nginx.pid" 
  interval 2    # 檢測間隔
  weight -5     # 權重起伏
  fall 2                     # 檢測連續2次失敗纔算肯定是真失敗。會用weight減小優先級(1-255之間)
  rise 1                     # 檢測1次成功就算成功。但不修改優先級
}

vrrp_instance VI_1 {
    state MASTER    # 指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器。注意這裏的state指定instance(Initial)的初始狀態,就是
說在配置好後,這臺服務器的初始狀態就是這裏指定的,但這裏指定的不算,仍是得要經過競選經過優先級來肯定。若是這裏設置爲MASTER,但如若他的優先級不及另一臺,那麼這臺在發送通告時,會發送本身的優先級,另一臺發現優先級不如本身的高,那麼他會就回搶佔爲MASTER    interface eth0          # 指定HA監測網絡的接口。實例綁定的網卡,由於在配置虛擬IP的時候必須是在已有的網卡上添加的
    mcast_src_ip 106.53.73.200  # 發送多播數據包時的源IP地址,這裏注意了,這裏實際上就是在哪一個地址上發送VRRP通告,這個很是重要,必定要選擇穩定的網卡端口來
發送,這裏至關於heartbeat的心跳端口,若是沒有設置那麼就用默認的綁定的網卡的IP,也就是interface指定的IP地址    virtual_router_id 51         # 虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用惟一的標識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的
    priority 101                 # 定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級
    advert_int 1                 # 設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {             # 設置驗證類型和密碼。主從必須同樣
        auth_type PASS           # 設置vrrp驗證類型,主要有PASS和AH兩種    
        auth_pass keepalived
    }
    virtual_ipaddress {    #VRRP HA 虛擬地址 若是有多個VIP,繼續換行填寫
        106.53.73.222
    }
    #服務端口監控
     track_script {
        check_pid
    }
}
[root@VM_0_10_centos keepalived]# less check_pid.sh
#!/bin/bash

#keepalived 根據進程 Pid 監控服務腳本
#
#使用方法:
#vrrp_script check_pid {#建立一個vrrp_script腳本,檢查配置
#    script "/etc/keepalived/check_pid.sh /var/run/nginx.pid" #配置須要監控進程的PID 文件完整路徑
#    interval 2 #檢查腳本的頻率,單位(秒)
#    weight -5  #權重起伏
#}
PidPath=$1
echo $PidPath
if [ -e $PidPath ];then
        echo "$PidPath is run !!!"
        exit 0;
else
        echo "$PidPath File does not exist !!!"
        exit -1;
fi

backup服務(182.254.184.102)配置:

[root@VM_0_16_centos tomcat-8.5.45]# cd /etc/keepalived/
[root@VM_0_16_centos keepalived]# ls
keepalived.conf
[root@VM_0_16_centos keepalived]# pwd
/etc/keepalived
[root@VM_0_16_centos keepalived]# cp -r keepalived.conf keepalived.conf.bak
[root@VM_0_16_centos keepalived]# cp /thyclient/keepalived.conf .
cp: overwrite ‘./keepalived.conf’? y
[root@VM_0_16_centos keepalived]# less keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {           # 指定keepalived在發生事件時(好比切換)發送通知郵件的郵箱
     acassen@firewall.loc         # 設置報警郵件地址,能夠設置多個,每行一個。 需開啓本機的sendmail服務
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc     # keepalived在發生諸如切換操做時須要發送email通知地址
   smtp_server 192.168.200.1      # 指定發送email的smtp服務器
   smtp_connect_timeout 30        # 設置鏈接smtp server的超時時間
   router_id BACKUP-102           # 運行keepalived的機器的一個標識,一般可設爲hostname。故障發生時,發郵件時顯示在郵件主題中的信息。
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#調用 shell 腳本對 haproxy 服務進行監控
vrrp_script check_pid {
  script "/etc/keepalived/check_pid.sh /var/run/nginx/nginx.pid" 
  interval 2    # 檢測間隔
  weight -5     # 權重起伏
  fall 2                     # 檢測連續2次失敗纔算肯定是真失敗。會用weight減小優先級(1-255之間)
  rise 1                     # 檢測1次成功就算成功。但不修改優先級
}

vrrp_instance VI_1 {
    state BACKUP    # 指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器。注意這裏的state指定instance(Initial)的初始狀態,就是
說在配置好後,這臺服務器的初始狀態就是這裏指定的,但這裏指定的不算,仍是得要經過競選經過優先級來肯定。若是這裏設置爲MASTER,但如若他的優先級不及另一臺,那麼這臺在發送通告時,會發送本身的優先級,另一臺發現優先級不如本身的高,那麼他會就回搶佔爲MASTER    interface eth0          # 指定HA監測網絡的接口。實例綁定的網卡,由於在配置虛擬IP的時候必須是在已有的網卡上添加的
    mcast_src_ip 182.254.184.102  # 發送多播數據包時的源IP地址,這裏注意了,這裏實際上就是在哪一個地址上發送VRRP通告,這個很是重要,必定要選擇穩定的網卡端口
來發送,這裏至關於heartbeat的心跳端口,若是沒有設置那麼就用默認的綁定的網卡的IP,也就是interface指定的IP地址    virtual_router_id 51         # 虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用惟一的標識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的
    priority 100                 # 定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級
    advert_int 1                 # 設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {             # 設置驗證類型和密碼。主從必須同樣
        auth_type PASS           # 設置vrrp驗證類型,主要有PASS和AH兩種    
        auth_pass keepalived
    }
    virtual_ipaddress {    #VRRP HA 虛擬地址 若是有多個VIP,繼續換行填寫
        106.53.73.222
    }
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc     # keepalived在發生諸如切換操做時須要發送email通知地址
   smtp_server 192.168.200.1      # 指定發送email的smtp服務器
   smtp_connect_timeout 30        # 設置鏈接smtp server的超時時間
   router_id BACKUP-102           # 運行keepalived的機器的一個標識,一般可設爲hostname。故障發生時,發郵件時顯示在郵件主題中的信息。
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#調用 shell 腳本對 haproxy 服務進行監控
vrrp_script check_pid {
  script "/etc/keepalived/check_pid.sh /var/run/nginx.pid" 
  interval 2    # 檢測間隔
  weight -5     # 權重起伏
  fall 2                     # 檢測連續2次失敗纔算肯定是真失敗。會用weight減小優先級(1-255之間)
  rise 1                     # 檢測1次成功就算成功。但不修改優先級
}

vrrp_instance VI_1 {
    state BACKUP    # 指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器。注意這裏的state指定instance(Initial)的初始狀態,就是
說在配置好後,這臺服務器的初始狀態就是這裏指定的,但這裏指定的不算,仍是得要經過競選經過優先級來肯定。若是這裏設置爲MASTER,但如若他的優先級不及另一臺,那麼這臺在發送通告時,會發送本身的優先級,另一臺發現優先級不如本身的高,那麼他會就回搶佔爲MASTER    interface eth0          # 指定HA監測網絡的接口。實例綁定的網卡,由於在配置虛擬IP的時候必須是在已有的網卡上添加的
    mcast_src_ip 182.254.184.102  # 發送多播數據包時的源IP地址,這裏注意了,這裏實際上就是在哪一個地址上發送VRRP通告,這個很是重要,必定要選擇穩定的網卡端口
來發送,這裏至關於heartbeat的心跳端口,若是沒有設置那麼就用默認的綁定的網卡的IP,也就是interface指定的IP地址    virtual_router_id 51         # 虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用惟一的標識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的
    priority 100                 # 定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級
    advert_int 1                 # 設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {             # 設置驗證類型和密碼。主從必須同樣
        auth_type PASS           # 設置vrrp驗證類型,主要有PASS和AH兩種    
        auth_pass keepalived
    }
    virtual_ipaddress {    #VRRP HA 虛擬地址 若是有多個VIP,繼續換行填寫
        106.53.73.222
    }
    #服務端口監控
     track_script {
        check_pid
    }
}

1.5 配置好以後驗證keepalived

1)前後在master、slave服務器上啓動nginx和keepalived,保證這兩個服務都正常開啓:

[root@VM_0_10_centos keepalived]# /usr/local/nginx/sbin/nginx -s reload
[root@VM_0_10_centos keepalived]# /etc/init.d/keepalived restart

這裏使用ip a查看vip、地址,並無顯示

 

解決:將keepalived.conf文件中的virtual_router_id參數設置成其它便可,如:7九、8九、101。只要取值範圍在取值0-255就行。(我這裏是改成了79,上面配置文件中也已修改)

而後重啓keepalived服務便可

 

 2)查看backup服務的vip地址(目前是沒有的)

 

咱們將master服務的keepalived服務中止,看下backup主機的vip地址是否漂移過去

[root@VM_0_10_centos keepalived]# /etc/init.d/keepalived stop
Stopping keepalived (via systemctl):                       [  OK  ]

master主機的vip地址已經沒有了

 

在backup主機上查看,此時從服務已經接管

 

 

 

參考博客

http://www.javashuo.com/article/p-hrnbfcpv-bb.html

http://www.javashuo.com/article/p-cprbqzfe-kw.html

http://www.javashuo.com/article/p-vgzwqdau-bu.html

相關文章
相關標籤/搜索