Nginx+keepalived 高可用双机热备(主从模式)

摘要:
##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。可以设置多个,一行写一个virtual_ipaddress{10.11.1.130}track_script{chk_nginx#nginx存活状态检测脚本}}从节点keepalived.conf配置如下:!ConfigurationFileforkeepalivedglobal_defs{router_idweb_balance_02#标识本节点的名称,通常为hostname}##keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。

环境:centos7.6 最小化安装

主:10.11.1.32

从:10.11.1.33

VIP:10.11.1.130

修改主节点主机名:

hostnamectl set-hostname web_balance_01

修改从节点主机名:

hostnamectl set-hostname web_balance_02

一、安装nginx(两个节点都需要安装)

配置官方nginx源

cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

yum方式安装nginx

yum install nginx

二、安装keepalived(两个节点都需要安装)

安装环境依赖

yum -y install libnl libnl-devel

下载keepalived包,并解压

cd /tmp
wget https://www.keepalived.org/software/keepalived-2.0.19.tar.gz
tar -xf keepalived-2.0.19.tar.gz

编译安装

 ./configure --prefix=/usr/local/keepalived
make -j2
make install

拷贝启动脚本至/etc/init.d/目录下

cd /tmp/keepalived-2.0.19
cp keepalived/etc/init.d/keepalived /etc/init.d/
cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp etc/keepalived/keepalived.conf /etc/keepalived/

四、修改主节点keepalived.conf配置文件

cd /etc/keepalived/
cp -r keepalived.conf keepalived.conf_bak
vi keepalived.conf

主节点keepalived.conf配置如下:

! Configuration File for keepalived
 
global_defs {
    router_id web_balance_01   #标识本节点的名称,通常为hostname
}
 
## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
 
vrrp_script chk_nginx {
       script "/etc/keepalived/nginx_check.sh"
       interval 2  #每2秒检测一次nginx的运行状态
       weight -20  #失败一次,将自己的优先级-20
}
 
vrrp_instance VI_1 {
    state MASTER                  # 状态,主节点为MASTER,备份节点为BACKUP
    interface enp175s0f0                  # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
    virtual_router_id 51           #虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
    mcast_src_ip 10.11.1.32     # 本机IP地址
    priority 100                   # 节点优先级,值范围0~254,MASTER要比BACKUP高
    advert_int 1                   # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    nopreempt            #非抢占模式使用  
 
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
    virtual_ipaddress {
        10.11.1.130
    }
 
    track_script {
       chk_nginx  # nginx存活状态检测脚本
    }
}

从节点keepalived.conf配置如下:

! Configuration File for keepalived
 
global_defs {
    router_id web_balance_02   #标识本节点的名称,通常为hostname
}
 
## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
 
vrrp_script chk_nginx {
       script "/etc/keepalived/nginx_check.sh"
       interval 2  #每2秒检测一次nginx的运行状态
       weight -20  #失败一次,将自己的优先级-20
}
 
vrrp_instance VI_1 {
    state BACKUP                  # 状态,主节点为MASTER,备份节点为BACKUP
    interface enp175s0f0            # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
    virtual_router_id 51           #虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
    mcast_src_ip 10.11.1.33        # 本机IP地址
    priority 90                   # 节点优先级,值范围0~254,MASTER要比BACKUP高
    advert_int 1                   # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    nopreempt            #非抢占模式使用  
 
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
    virtual_ipaddress {
        10.11.1.130
    }
 
    track_script {
       chk_nginx  # nginx存活状态检测脚本
    }
}

五、创建nginx存在状态检测脚本(两个节点都需要创建)

cd /etc/keepalived
more nginx_check.sh 
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    systemctl restart nginx #尝试重新启动nginx
    sleep 2  #睡眠2秒
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点
    fi
fi

添加脚本执行权限

chmod +x /etc/keepalived/nginx_check.sh

六、依次启动主节点和从节点上的nginx和keepalived服务

systemctl start nginx
systemctl enable nginx
systemctl start keepalived
systemctl enable keepalived

七、在主节点上查询VIP绑定状态

Nginx+keepalived 高可用双机热备(主从模式)第1张

八、停止任意节点的nginx服务,检查keepalived 是否会通过脚本自动启动nginx服务

Nginx+keepalived 高可用双机热备(主从模式)第2张

九、停止主节点的keepalived服务可以看到VIP已经绑定到从节点上

Nginx+keepalived 高可用双机热备(主从模式)第3张

Nginx+keepalived 高可用双机热备(主从模式)第4张

参考:https://www.cnblogs.com/ZHUJIBlogs/p/10396328.html

https://blog.csdn.net/u012599988/article/details/82152224

免责声明:文章转载自《Nginx+keepalived 高可用双机热备(主从模式)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Fiddler显示响应时间交换机的带宽线速概念下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nginx配合IIS实现简单负载均衡

在linux下部署nginx这里就不多说了。这篇文章主要介绍nginx部署好后,如何配合iis实现负载均衡,没用过java不过原理应该是一样的。1.IIS 部署两个站点端口分别为8081和8082 8081站点和8082站点如下【随便写了个没有样式的很丑的页面】,我特意加了111和222区分 2.设置nginx配置文件,实现简单的负载均衡【推荐xsh...

nginx 之 https 证书配置

HTTPS原理和作用 为什么需要HTTPS 原因:HTTP不安全 传输数据被中间人盗用、信息泄露 数据内容劫持、篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 对称加密:加密秘钥和解密秘钥是对等的,一样的 非对称加密: HTTPS加密协议原理:   中间人伪造客户端和服务端:(中间人可以伪装成客户端和服务端,中间人可以对数据进行劫持,不...

CDH目录

配置文件都在:/etc/服务名, 看hadoop的classpath   |grep conf /etc/hadoop/conf log都在: /var/log/服务名  看scm的log: tail -1000 /var/log/cloudera-scm-server/cloudera-scm-server.log |grep error hive: /...

Centos之文件搜索命令find

find [搜索范围] [搜索条件] #搜索文件 find / -name install.log #避免大范围搜索,会非常耗费系统资源 #find是在系统当中搜索符合条件的文件名。如果需要匹配, 使用通配符匹配,通配符是完全匹配。 [root@localhost ~]# ls 222  anaconda-ks.cfg  牛逼  牛牛 [root@loca...

linux(10)-linux环境下jdk配置自定义环境变量/etc/profile.d以及卸载自带openjdk

一、删除系统自带OpenJDK 以下操作,请切换至root权限进行操作 1.1、输入:rpm -qa | grep jdk  会查询出系统自带的OpenJDK及版本 [root@localhost /]# rpm -qa |grep jdkjava-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64java...

nginx 流量拷贝模块 ngx_http_mirror_module 安装试用

1. 下载源码编译 https://nginx.org/download/nginx-1.13.4.tar.gz 2. 下载依赖模块包 这里直接yum 安装 yum -y install openssl openssl-devel yum -y install pcre-devel 3. 安装 可以直接默认 ./configure 我是为了添加htt...