Nginx+Keepalive高可用之主从配置

实验环境

操作系统:CentOS 7.4 1708

软件安装:yum -y install epel-release && yum -y install nginx keepalived

Nginx+Keepalived NodeA:18.50.129.72(master)

Nginx+Keepalived NodeB:18.50.129.73(slave)

VIP:18.50.129.74

实现目标

  1. 当Nginx服务停止后Keepalived会自动去启动此服务,如果无法启动将VIP转移至Slave节点
  2. 当Master节点Nginx配置文件更新后,Slave节点的Nginx配置文件及时同步

Node1的Keepalived配置

! Configuration File for keepalived

global_defs {
   router_id NodeA              #路由器标识,最好写主机名,用于标识
}

vrrp_script chk_nginx {
#配置检查方式,chk_nginx为自定义名称
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight 20                   #此值需要大于MASTER的priority减去BACKUP的priority
}

vrrp_instance VI_1 {
    state MASTER                #主节点为:MASTER,备节点为:BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
    #此为认证方式,MASTER和BACKUP统一
        auth_type PASS
        auth_pass 1314
    }
    track_script {
    #调用上面的检查脚本
        chk_nginx
    }
    virtual_ipaddress {
    #设定VIP地址
        18.50.129.74/24
    }
}

Node2的Keepalived配置

! Configuration File for keepalived

global_defs {
   router_id NodeB
}

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

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1314
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        18.50.129.74/24
    }
}

nginx_check.sh脚本内容:

#!/bin/bash

A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    nginx
    sleep 2
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        pkill keepalived
    fi
fi

脚本说明:

  1. 脚本逻辑为检测进程如果没有nginx就尝试启动一次,然后等礴两秒,再检测,如果还没有上进程就结束keepalived进程。这样VIP就会移动到备份节点
  2. 我这里是yum安装的Nginx,所以直接使用nginx命令可以启动nginx,如果你是源码安装,或者需要配置下环境变量或者更改下启动命令和绝对路径,并测试是否能正常启动
  3. 如果觉得等待两秒的时候过长可以更改为1秒

启动服务:

在NodeA和NodeB执行后面命令:systemctl start keepalived

测试:

  1. 查看两个节点的Nginx服务是否启动成功,如果keepalived启动成功会调用启动Nginx,前提需要保证Nginx能正常启动
  2. 在Master故意更改错Nginx配置文件,并停止Nginx服务过几秒查看VIP是否已经移动至NodeB,正常是会移动到NodeB节点
  3. 恢复Master节点,查看VIP是否回到Master,正常VIP会绑定到Master

小知识:

查看VIP使用:ip addr 命令

keepalived日志默认记录在:/var/log/messages

最后关于Nginx配置文件同步问题,我只说明了一下思路,不作演示,可以参考我自动运维上关文章, 我们可以使用salt来管理Nginx的配置文件,这样就可以做到指的更新,这样就解决了我们多台Nginx配置文件同步问题

时间: 2024-11-02 14:32:28

Nginx+Keepalive高可用之主从配置的相关文章

Nginx+keepalived高可用(双主模式)

负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.由于业务扩展,网站的访问量不断加大,负载越来越高.现需要在web前端放置nginx负载均衡,同时结合keepalived对前端nginx实现HA高可用.介绍下Nginx和keepalive1.Nginx Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:Nginx作为负载均衡服务器:Nginx 既可以在内部直

配置nginx+keepalived高可用负载均衡的时候。主从服务器都出现了VIP 阿里云问题

配置nginx+keepalived高可用负载均衡的时候.主从服务器都出现了VIP 出现这问题的场景是在阿里VPS云服务器网络环境中,因为路由交换层禁用了ARP的广播限制,造成KEEPALIVE主备协议无法通过广播的方式进行通信,造成主备两台服务器都强占HAVIP地址,出现同时两台服务器都有VIP地址的情况出现,必须通过配置来指定IP的两台服务器间进行通讯(阿里说明文档中解释只能支持两台使用同一个HAVIP地址),基于以下方法可以的情况下,多备方式用同样的方式也应该可行 ,有需要的兄弟可以测试下

keepalive高可用nginx(nginx动静分离)的实现

HA Cluster的配置前提: 1.各节点时间要同步: 2.确保iptables及selinux不会成为障碍: 3.(可选)各节点之间可通过主机名互相通信: 节点的名称设定与hosts文件中解析的主机名都要保持一致: # uname -n 获得的主机,与解析的主机名要相同: 4.(可选)各节点之间基于密钥认证的方式通过ssh互信通信: keepalive高可用nginx(nginx动静分离)的实现 一.各节点时间同步的实现方法 在centos中安装chrony,其根据时间协议配置文件将多台主机

安装配置keepalived2.0.18,实现nginx+keepalived高可用

一.环境服务器系统版本:CentOS 7两台服务器,一台做主节点,一台做备用节点:192.168.1.200(主节点)192.168.1.201(备用节点) 二.安装keepalived 2.0两台服务器都安装上 keepalived 2.0. 1.安装依赖包(libnl库-简化netlink 协议对象的实现.gcc-GNU编译器套件.openssl-devel-包含开发支持各种密码算法和协议的应用程序所需的文件的库包)#yum install -y libnl-devel libnl3-dev

keepalive高可用

准备两台主备主机,都安装keepalived yum install -y keepalived master上前期已安装nginxbackup 上使用yum 安装nginx yum install -y nginx 提示错误时没有可用软件包nginx,解决办法: yum install -y epel-release 在主(master)上编辑配置文件vim /etc/keepalived/keepalived.conf global_defs {notification_email { #如

LVS+Keepalived+Nginx+Tomcat高可用集群搭建(转)

LVS+Keepalived+Nginx+Tomcat高可用集群搭建 最近公司重整架构,十几台服务器而且还要尽可能节约成本.我就谷歌了一下在几种集群之前进行比较最终采用了Keepalived+Nginx做负债均衡高可用.虽然之前也研究过集群,看过很多集群方面的原理和架构,但毕竟没有真正操作过以下案例是在虚拟机中完成实验其实对于高可用搭建来说只用给出Keepalived和Nginx的配置即可后面的一些安装搭建完全是本人项目需要可以不用理睬仅供参考. 本文只是实验搭建记录方便以后在服务器中实施搭建.

使用HeartBeat实现高可用HA的配置过程详解

使用HeartBeat实现高可用HA的配置过程详解 一.写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务.常见的实现高可用的开源软件有 heartbeat 和 keepalived. 这样,一台 web 服务器一天24小时提供web服务,难免会存在 web 服务挂掉或服务器宕机宕机的情况,那么用户就访问不了服务了,这当然不是我们期望

keepalived+nginx实现高可用and负载均衡集群

keepalived+nginx实现高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(work

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke