keepalived+nginx 双主模式保障系统高可用

原创
2019/07/06 18:21
阅读数 299

准备两台VM。

192.168.199.128

192.168.199.132

分别在两台VM上安装nginx

1. nginx安装

1. 下载

https://www.openssl.org/source/

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre

http://zlib.net/

http://nginx.org/en/download.html

2. 依次减压

2.1. 安装openssl

进入解压根目录

./config && make && make install

2.2 pcre安装

进入解压根目录

./configure && make && make install

2.3 zlib安装

进入解压根目录

./configure && make && make install

2.4 nginx安装

2.4.1 编译

./configure --prefix=/home/softinstall/nginxinstall --with-openssl=/home/softinstall/nginx/openssl-1.1.1b --with-pcre=/home/softinstall/nginx/pcre-8.43 --with-zlib=/home/softinstall/nginx/zlib-1.2.11 --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

2.4.2 安装

make && make install

./configure --prefix=/usr/local --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --http-client-body-temp-path=/usr/local/var/tmp/nginx/client --http-proxy-temp-path=/usr/local/var/tmp/nginx/proxy --http-fastcgi-temp-path=/usr/local/var/tmp/nginx/fcgi --http-scgi-temp-path=/usr/local/var/tmp/nginx/scgi --http-uwsgi-temp-path=/usr/local/var/tmp/nginx/uwsgi --with-http_geoip_module --with-http_stub_status_module

 

 

2.keepalived安装

192.168.199.128

192.168.199.132

这两台VM上安装keepalived

yum install -y keepalived

安装成功后

  在/etc/keepalived/目录有keepalived.conf文件。分别修改该配置为

! Configuration File for keepalived

global_defs {
   router_id master-128
}

vrrp_script chk_nginx  {
   script "/etc/keepalived/check_nginx.sh"
   interval 2
   weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 80
    priority 100
    mcast_src_ip 192.168.199.128
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 9999
    }
   # 将 track_script 块加入 instance 配置块  #执行 Nginx 监控的服务
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.199.200
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 81
    priority 100
    mcast_src_ip 192.168.199.132
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 9999
    }
   # 将 track_script 块加入 instance 配置块  #执行 Nginx 监控的服务
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.199.201
    }
}

====================================================

! Configuration File for keepalived

global_defs {
   router_id master-132
}

vrrp_script chk_nginx  {
   script "/etc/keepalived/check_nginx.sh"
   interval 2
   weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 80
    priority 100
    mcast_src_ip 192.168.199.128
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 9999
    }
   # 将 track_script 块加入 instance 配置块  #执行 Nginx 监控的服务
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.199.200
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 81
    priority 100
    mcast_src_ip 192.168.199.132
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 9999
    }
   # 将 track_script 块加入 instance 配置块  #执行 Nginx 监控的服务
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.199.201
    }
}

======================================

然后在/etc/keepalived/下添加以下脚本,脚本名称为check_nginx.sh。(注意自己安装的nginx路径)

#!/bin/bash
A=`ps -C nginx --no-heading|wc -l`
if [ $A -eq 0 ];then
    echo "`date "+%Y-%m-%d--%H:%M:%S"` nginx stop" >> /var/log/check_ng.log
    /home/softinstall/nginxinstall/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-heading|wc -l` -eq 0 ];then
       echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
        killall keepalived
    fi
fi

===================================

然后启动nginx与keepalived

/home/softinstall/nginxinstall/sbin/nginx

 //开机启动

  systemctl enable keepalived.service

//启动keepalived

  systemctl start keepalived.service

  //停止,根据需要操作

  systemctl stop keepalived.service

==================================

验证:  http://192.168.199.200 或者http://192.168.199.201

1)查看master上keepalive及ip
    ps -ef|grep keepalive
    ip addr
  2)keepalived高可用测试
    #关闭node1上的keepalived
    systemctl stop keepalived.service
    #查看node1上的keepalived和ip
    ps -ef|grep keepalived
    ip addr
    #查看node2上的keepalived和ip
    ps -ef|grep keepalived
    ip addr

 

 

 

 

 

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部