nginx+keepalived双主模式双主热备

2024-01-11 05:44

本文主要是介绍nginx+keepalived双主模式双主热备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、双主模式原理

1. nginx+keepalived主备模式缺点

2. 主备模式和双主模式的区别

二、配置文件

1. nginx01的keepalived.conf

2. nginx02的keepalived.conf

3. 检测nginx存活脚本文件nginx_check.sh

三、测试准备

1. 启动nginx01、nginx02

2. 启动keepalived

3. 查看网卡信息

四、测试

1. 测试VIP访问

2. 测试nginx检测脚本

3. 模拟nginx01宕机

4. 模拟nginx01修复宕机


主机名真实IPVIP
nginx0111.0.1.3111.0.1.29
nginx0211.0.1.3211.0.1.30

一、双主模式原理

1. nginx+keepalived主备模式缺点

双机主备存在一个问题,不管keepalived存活在哪台设备上,总有一台设备是空闲的,资源利用率并不高,双主模式可以很好解决该问题。

双主模式可以实现以下效果:

11.0.1.29 VIP1 默认访问11.0.1.31

11.0.1.30 VIP2 默认访问11.0.1.32

当其中一个nginx宕机,两个虚拟IP仍然可以正常使用,此时存活的nginx同是绑定2个虚拟IP

2. 主备模式和双主模式的区别

双主与主备的核心区别就是,主备模式只有一个vrrp实例(默认抢占模式:1个master1个backup),双主机需要两个虚拟IP,两个vrrp实例,两者互为主备,vrrp1实例中(nginx01为master,nginx02为backup)、vrrp2实例中(nginx01为backup,nginx02为master)

二、配置文件

1. nginx01的keepalived.conf

[root@nginx01 sbin]# cat /etc/keepalived/keepalived.conf
global_defs {router_id real-server1script_user rootenable_script_security}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2
}vrrp_instance VI_1 {state MASTERinterface ens33   virtual_router_id 151 priority 100 advert_int 5  authentication {auth_type  PASSauth_pass  1111}virtual_ipaddress {  11.0.1.29}track_script {                                                                                  chk_nginx}}vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 152priority 50advert_int 5authentication {auth_type  PASSauth_pass  2222}virtual_ipaddress {11.0.1.30}track_script {chk_nginx}
}

2. nginx02的keepalived.conf

[root@nginx02 sbin]# cat /etc/keepalived/keepalived.conf
global_defs {router_id real-server2script_user rootenable_script_security}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 151priority 50advert_int 5authentication {auth_type  PASSauth_pass  1111}virtual_ipaddress {11.0.1.29}track_script {                                                                                  chk_nginx}}vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 152priority 100advert_int 5authentication {auth_type  PASSauth_pass  2222}virtual_ipaddress {11.0.1.30}track_script {chk_nginx}
}

3. 检测nginx存活脚本文件nginx_check.sh

[root@nginx01 sbin]# cat /etc/keepalived/nginx_check.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confsleep 2counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; thensystemctl stop keepalivedfi
fi

三、测试准备

1. 启动nginx01、nginx02

cd /usr/local/ngins/sbin
./nginx

请确保真实IP可以访问到nginx01、nginx02

2. 启动keepalived

systemctl start keepalived

3. 查看网卡信息

nginx01的网卡信息

[root@nginx01 sbin]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:60:05:0e brd ff:ff:ff:ff:ff:ffinet 11.0.1.31/24 brd 11.0.1.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 11.0.1.29/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::a344:1c87:5caf:42cd/64 scope link noprefixroute valid_lft forever preferred_lft forever

nginx02的网卡信息

[root@nginx02 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:b9:97:26 brd ff:ff:ff:ff:ff:ffinet 11.0.1.32/24 brd 11.0.1.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 11.0.1.30/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::4ae3:fc87:6344:7062/64 scope link noprefixroute valid_lft forever preferred_lft forever

可以看出VIP成功绑定到各自的真实服务器IP

四、测试

1. 测试VIP访问

2. 测试nginx检测脚本

关闭nginx01上的nginx服务,查看脚本是否可以正常重启nginx

[root@nginx01 sbin]# ./nginx -s stop
[root@nginx01 sbin]# ps -aux | grep nginx
root       3598  0.0  0.0  20540   612 ?        Ss   22:48   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody     3600  0.0  0.0  20984  1304 ?        S    22:48   0:00 nginx: worker process
root       3650  0.0  0.0 112824   988 pts/0    R+   22:48   0:00 grep --color=auto nginx

重启成功,脚本生效。

3. 模拟nginx01宕机

停止nginx01上的keepalived进程或者直接将nginx01关机(效果一样),模拟nginx01宕机

[root@nginx01 sbin]# systemctl stop keepalived

nginx02网卡信息

nginx01网卡信息

访问nginx01的VIP11.0.1.29,但实际是11.0.1.32响应,因为VIP1漂移到nginx02上,此时nginx02同时绑定VIP1、VIP2。即使nginx01宕机,ngin01的VIP11.0.1.29仍然可以正常使用

4. 模拟nginx01修复宕机

重启nginx01的keepalived(或开机)

访问恢复正常 

模拟nginx02宕机效果也是一样,不再重复实验。

参考文档: 

玩转企业集群运维管理系列(十二):Keepalived 双主、非抢占模式及脑裂问题详解-腾讯云开发者社区-腾讯云

这篇关于nginx+keepalived双主模式双主热备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593341

相关文章

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Nginx更新SSL证书的实现步骤

《Nginx更新SSL证书的实现步骤》本文主要介绍了Nginx更新SSL证书的实现步骤,包括下载新证书、备份旧证书、配置新证书、验证配置及遇到问题时的解决方法,感兴趣的了解一下... 目录1 下载最新的SSL证书文件2 备份旧的SSL证书文件3 配置新证书4 验证配置5 遇到的http://www.cppc

Nginx之https证书配置实现

《Nginx之https证书配置实现》本文主要介绍了Nginx之https证书配置的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录背景介绍为什么不能部署在 IIS 或 NAT 设备上?具体实现证书获取nginx配置扩展结果验证

Nginx 访问控制的多种方法

《Nginx访问控制的多种方法》本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基... 目录一、IP 白名单与黑名单1. 允许/拒绝指定IP2. 全局黑名单二、基于路径、方法、参数的访问控制

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng