1. 什么是高可用
高可用(high availability, ha)是一种系统设计策略,旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时,仍能持续稳定地运行。它通过实现冗余性、故障转移、负载均衡、数据一致性、监控自动化、预防性维护、灾难恢复计划以及服务级别协议等关键要素,来减少服务中断时间,提升服务的可靠性和稳定性。
2. 高可用的原理 -- keepalived
思考
- nginx如果宕机,导致客户无法访问到项目。--- 搭建nginx高可用
- 如果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. 演示
现在是用第一台虚拟机进行代理
故意把第一台给宕掉,看看会不会自动切换到第二台
到此这篇关于nginx的ha高可用的搭建的实现的文章就介绍到这了,更多相关nginx ha高可用搭建内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论