1. 程式人生 > >nginx,keepalived高可用部署

nginx,keepalived高可用部署

環境

172.16.91.218  主

172.16.91.219

 

安裝包版本

nginx-1.14.0.tar.gz

keepalived-2.0.7.tar.gz

 

把 nginx,keepalived 壓縮包 上傳到 /usr/local/src/

 

兩個機器 都 安裝 nginx

 

  1. 安裝 依賴 包

yum install -y gcc-c++

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install -y openssl openssl-devel

 

  1. 把 nginx 解壓 放到 /usr/local/ 並重命名為 nginx

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf

 

  1. 編譯 安裝

cd  /usr/local/nginx/

make && make install

 

基本 命令使用

Nginx  啟動

Nginx  -s  stop  關閉 nginx

Nginx  -s  start  啟動nginx

 

 

兩臺機器 都要 安裝 keepalived

  1. 安裝 所需要 的依賴包

yum install -y gcc;

yum install -y openssl-devel;

yum install -y libnl;

yum install -y libnl-devel;

yum install -y libnfnetlink-devel;

 

  1. 解壓,並 放到 /usr/local /, 並 重新命名為 keepalived

 

  1. ./configure --prefix=/usr/local/keepalived/ --sysconf /etc

 

4

cd   /usr/local/keepalived/

make && make install

ln -s sbin/keepalived /sbin/

cd keepalived

cp etc/init.d/keepalived /etc/init.d/

chkconfig --add keepalived

chkconfig keepalived on

service keepalived start

 

 

 

 

 

主 伺服器   keepalived  的 keepalived 配置

! Configuration File for keepalived

 

global_defs {

  router_id LVS_DEVEL

}

 

vrrp_script chk_nginx_service {

  script "/usr/local/keepalived/nginx-ha-check.sh"

  interval 2

  weight -10

}

 

vrrp_instance VI_1 {

    state MASTER

    interface ens160

    virtual_router_id 51

    priority 100

    advert_int 1

   

    track_script {

       chk_nginx_service

    }

 

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        172.16.91.100

    }

}

 

virtual_server 172.16.91.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind NAT

    persistence_timeout 50

    protocol TCP

 

    real_server 172.16.91.218 80 {

        weight 1

        TCP_CHECK {

          connect_timeout 3

          delay_before_retry 3

          connect_port 80

        }   

 

    }

}

 

 

 

   

}

 

 

 

 

從 伺服器  keepalived  的 keepalived 配置

! Configuration File for keepalived

 

global_defs {

  router_id LVS_DEVEL

}

 

 

vrrp_script chk_nginx_service {

  script "/usr/local/keepalived/nginx-ha-check.sh"

  interval 2

  weight -10

}

 

vrrp_instance VI_1 {

    state BACKUP

    interface ens160

    virtual_router_id 51

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

       172.16.91.100

    }

 

    track_script {

       chk_nginx_service

    } 

  

}

 

virtual_server 172.16.91.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind NAT

    persistence_timeout 50

    protocol TCP

 

    real_server 172.16.91.219 80 {

        weight 1

        TCP_CHECK {

           connect_timeout 3

           delay_before_retry 3

           connect_port 80

        }

 

    }

}

 

 

 

}

 

 

 

觸發的指令碼

#! /bin/sh

A=`ps -C nginx --no-header | wc -l`

if [ $A -eq 0 ]

   then

   echo 'nginx server is died'

   service keepalived stop

fi

~    

 

 

 

Keepalived  配置檔案 講解

global_defs {

router_id LVS_DEVEL 執行 keepalived 伺服器的標識,在一個網路內應該是唯

一的

}

vrrp_instance VI_1 { #vrrp 例項定義部分

state MASTER #設定 lvs 的狀態,MASTER 和 BACKUP 兩種,必須大寫

interface ens33 #設定對外服務的介面

virtual_router_id 51 #設定虛擬路由標示,這個標示是一個數字,同一個 vr

rp 例項使用唯一標示

priority 100 #定義優先順序,數字越大優先順序越高,在一個 vrrp——instance 下,

master 的優先順序必須大於 backup

advert_int 1 #設定 master 與 backup 負載均衡器之間同步檢查的時間間隔,單

位是秒

authentication { #設定驗證型別和密碼

auth_type PASS

auth_pass 1111 #驗證密碼,同一個 vrrp_instance 下 MASTER 和 BACKU

P 密碼必須相同

}

virtual_ipaddress { #設定虛擬 ip 地址,可以設定多個,每行一個

192.168.11.100

}

}

virtual_server 192.168.11.100 80 { #設定虛擬伺服器,需要指定虛擬 ip 和服務

delay_loop 6 #健康檢查時間間隔

lb_algo rr #負載均衡排程演算法

lb_kind NAT #負載均衡轉發規則

persistence_timeout 50 #設定會話保持時間

protocol TCP #指定轉發協議型別,有 TCP 和 UDP 兩種

real_server 192.168.11.160 80 { #配置伺服器節點 1,需要指定 real serve

r 的真實 IP 地址和埠

weight 1 #設定權重,數字越大權重越高

TCP_CHECK { #realserver 的狀態監測設定部分單位秒

connect_timeout 3 #超時時間

delay_before_retry 3 #重試間隔

connect_port 80 #監測埠

}

}

}