Nginx的HA高可用的搭建

1. 什么是高可用

高可用(High Availability, HA)是一种系统设计策略,旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时,仍能持续稳定地运行。它通过实现冗余性、故障转移、负载均衡、数据一致性、监控自动化、预防性维护、灾难恢复计划以及服务级别协议等关键要素,来减少服务中断时间,提升服务的可靠性和稳定性。

2. 高可用的原理 -- keepalived

思考

  1. Nginx如果宕机,导致客户无法访问到项目。--- 搭建Nginx高可用
  2. 如果Nginx主节点宕机,如何才能切换到从节点。 -- 使用keepalived组件

3. 搭建HA高可用

我这边用来两台虚拟机

安装keepalived

yum install -y keepalived

默认安装在/etc/keepalived下

修改keepalived.conf配置文件

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

ip的地址

smtp_ server 192.168.111.188 // 改为自己的ip

smtp_connect_timeout 30

router_id 192.168.111.188 // 改为自己的ip

}

执行脚本

vrrp_script chk_http_port {

script "/usr/local/src/nginx_check.sh"

interval 2 # 每2s执行一次该脚本

weight -20 # keepalive宕机 权重-20 优先级

}

vrrp_instance VI_1 {

state MASTER # 角色

interface ens33 # 网卡名

virtual_router_id 51 # id 保证主从相同

priority 100 # 优先级 主节点大于从节点

advert_int 1

authentication {

auth type PASS

auth pass 1111

}

virtual_ipaddress {

192.168.111.50 # 虚拟ip. 使用逗号隔开

}

track_script {

chk_http_port # 追踪nginx脚本

}

}

从节点

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

ip的地址

smtp_ server 192.168.111.189

smtp_connect_timeout 30

router_id 192.168.111.189

}

执行脚本

vrrp_script chk_http_port {

script "/usr/local/src/nginx_check.sh"

interval 2 # 每2s执行一次该脚本

weight -20 # keepalive宕机 权重-20 优先级

}

vrrp_instance VI_1 {

state BACKUP # 角色

interface ens33 # 网卡名

virtual_router_id 51 # id 保证主从相同

priority 90 # 优先级 主节点大于从节点

advert_int 1

authentication {

auth type PASS

auth pass 1111

}

virtual_ipaddress {

192.168.111.50 # 虚拟ip. 使用逗号隔开

}

track_script {

chk_http_port # 追踪nginx脚本

}

}

nginx_check.sh

#!/bin/bash

检查是否开启nginx---统计nginx进程的个数

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then

pkill -9 keepalived

fi

注意修改权限

修改权限: chmod 777 nginx_check.sh

启动

nginx
keepalived systemctl start|stop keepalived

4. 演示

现在是用第一台虚拟机进行代理

故意把第一台给宕掉,看看会不会自动切换到第二台

成功!!!

相关推荐
herderl12 分钟前
**僵尸进程(Zombie Process)** 和**孤儿进程(Orphan Process)**
linux·运维·服务器·网络·网络协议
tomelrg22 分钟前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis
泽020236 分钟前
Linux 编译器 gcc 与 g++
linux·运维·服务器
码出财富37 分钟前
SQL语法大全指南
数据库·mysql·oracle
水冗水孚44 分钟前
图文并茂讲解nginx中http升级https(部署SSL证书)知识点总结
nginx·http·https
G_H_S_3_1 小时前
【网络运维】Playbook项目实战:基于 Ansible Playbook 一键部署 LNMP 架构服务器
linux·运维·服务器·网络·ansible
爱敲代码的边芙2 小时前
实习两个月总结
服务器
岚天start2 小时前
Linux sar命令详细使用指南
linux·运维·服务器·负载·sar·磁盘io·sysstat
异世界贤狼转生码农2 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong3 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel