您的位置:首页 > 运维架构 > Nginx

nginx,keepalived高可用部署

2018-10-31 18:35 417 查看

环境

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

      

 

    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.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 #监测端口

}

}

}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: