【Nginx】Linux keepalived+nginx实现主从模式

Linux keepalived+nginx实现主从模式

简述:

双机高可用方法目前分为两种:

主从模式:一台主服务器和一台从服务器,当配置了虚拟vip的主服务器发送故障时,从服务器将自动接管虚拟ip,服务将不会中断。但主服务器不出现故障的时候,从服务器永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。

主主模式:开启两个虚拟服务,一台服务器这个虚拟组A中设置为主节点,另一台服务器在虚拟组B中设置为主节点,这样就有两个虚拟IP,两个机器都是主节点,也都是从节点,当一台机器故障了,非故障机器就会拥有两个虚拟ip,也会负担所有的请求。

主从环境

VIP:172.30.100.8

keepalived+nginx1(主):172.30.100.126

keepalived+nginx1(备):172.30.100.127

服务检测策略

对于nginx服务状态检测的方式是脚本检测,当nginx进程为0时,会尝试着启动nginx服务;如果启动失败,则停止keepalived服务,这样虚拟VIP会漂移到从节点。

脚本中sleep的时间一定要小于keepalived的配置文件中脚本执行间隔时间。

#!/bin/bash

NGX_STATUS=ps -C nginx --no-header |wc -l

if [ $NGX_STATUS -eq 0 ];then

复制代码
/app/nginx/sbin/nginx

sleep 1

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

    systemctl stop keepalived

fi

fi

主节点配置

! Configuration File for keepalived

全局配置

global_defs {

notification_email {

复制代码
 root@localhost.localdomain

}

notification_email_from root@localhost.localdomain

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS1

vrrp_skip_check_adv_addr

#vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

vrrp_mcast_group4 224.18.18.18

}

检测脚本配置参数

vrrp_script chk_ngx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

设置虚拟服务

vrrp_instance VI1 {

复制代码
state MASTER

interface eth0

virtual_router_id 111

priority 100

advert_int 1

authentication {

    auth_type PASS

    auth_pass 1111

}

track_script {

    chk_ngx

}

virtual_ipaddress {

    172.30.100.8

}

}

从节点配置

! Configuration File for keepalived

global_defs {

notification_email {

复制代码
 root@localhost.localdomain

}

notification_email_from root@localhost.localdomain

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS2

vrrp_skip_check_adv_addr

#vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

vrrp_mcast_group4 224.18.18.18

}

vrrp_script chk_ngx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

vrrp_instance VI1 {

复制代码
state SLAVE

interface eth0

virtual_router_id 111

priority 70

advert_int 1

authentication {

    auth_type PASS

    auth_pass 1111

}

track_script {

    chk_ngx

}

virtual_ipaddress {

    172.30.100.8

}

}

相关推荐
A星空1231 小时前
一、Linux嵌入式的I2C驱动开发
linux·c++·驱动开发·i2c
释怀不想释怀1 小时前
Linux环境变量
linux·运维·服务器
zzzsde1 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
凡人叶枫1 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
yuanmenghao2 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
qq_297574672 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
70asunflower2 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
神梦流3 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫3 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习