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. 演示

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

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

成功!!!

相关推荐
m0_7482323915 分钟前
python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库
数据库·mysql·flask
苹果醋321 分钟前
Vue3响应式数据: 深入分析Ref与Reactive
java·运维·spring boot·mysql·nginx
竹影卿心1 小时前
Java连接HANA数据库
java·数据库·windows
anddddoooo1 小时前
Kerberoasting 离线爆破攻击
网络·数据库·安全·microsoft·网络安全
time never ceases1 小时前
Elasticsearch安装和数据迁移
大数据·数据库·elasticsearch·es
存储服务专家StorageExpert1 小时前
墙裂推荐:console, CLI命令行和日志使用字体-Cascadia
运维·服务器·netapp存储·存储维护·emc存储
程序员shen1616112 小时前
注意⚠️:矩阵系统源码开发/SaaS矩阵系统开源/抖音矩阵开发优势和方向
java·大数据·数据库·python·php
IvorySQL2 小时前
2024 开放原子开发者大会活动回顾|瀚高 IvorySQL 开源数据库在国产软件的开源实践
数据库·postgresql·开源数据库·国产数据库·ivorysql
菜鸟康2 小时前
Linux系统编程——理解系统内核中的信号捕获
linux·运维·服务器
张明奇-琦玉2 小时前
Boost之log日志使用
linux·服务器·算法