Nginx配置高可用集群

一、Nginx高可用概念

在这里插入图片描述

配置高可用的条件:
1.需要两台nginx服务器
2.需要keeplived
3.需要虚拟ip

二、配置步骤

2.1 配置高可用的准备工作

1.需要两台服务器 192.168.17.129 192.168.17.131
2.在两台服务器上安装nginx
3.在两台服务器上安装keepalived

2.2 在两台服务器安装keepalived

(1) 使用yum命令进行安装
yum install keepalived -y
(2) 安装之后,在etc里面生成目录keepalived,有配置文件keepalived.conf

2.3 完成高可用配置(主从配置)

主从服务器按照如下配置进行配置文件修改

#全局配置
global_defs {
 notification_email {
 acassen@firewall.loc
 failover@firewall.loc
 sysadmin@firewall.loc
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.17.129   #根据具体情况修改
 smtp_connect_timeout 30
 router_id LVS_DEVEL      #服务器名称(/etc/host),访问到主机
}
vrrp_script chk_http_port {
 script "/usr/local/src/nginx_check.sh"
 interval 2     #(检测脚本执行的间隔)
 weight 2       #设置当前服务器权重
}
vrrp_instance VI_1 {
 state MASTER       # 备份服务器上将 MASTER 改为 BACKUP 
 interface ens33    #网卡 可通过ifconfig查看
 virtual_router_id 51   # 主、备机的 virtual_router_id 必须相同
 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
 advert_int 1  #发送心跳包间隔时间
 authentication {
 auth_type PASS    #校验方式(密码校验)
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.17.50 // VRRP H 虚拟地址
 } 
}

keepalived监测脚本

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
 /usr/local/nginx/sbin/nginx    #nginx启动脚本位置
 sleep 2
 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
 killall keepalived
 fi
fi

2.4 把两台服务器上的nginx和keepalived都启动

启动nginx:./nginx
启动keepalived:systemctl start keepalived.service

2.5 最终效果

(1) 在浏览器中输入虚拟ip地址(192.168.17.50)

在这里插入图片描述

把主服务器的nginx和keepalived服务都关掉后,在浏览器中输入虚拟ip地址依旧可以得到如上的结果。

### 配置高可用Nginx集群于AWS 为了在AWS上配置一个高度可用的Nginx集群,需考虑多个方面来确保服务的稳定性和冗余性。这不仅涉及部署Nginx本身,还包括利用AWS的服务来增强其性能和可靠性。 #### 使用Elastic Load Balancing分发流量 通过使用AWS提供的弹性负载均衡器(Elastic Load Balancer),可以有效地分配来自客户端请求到不同的EC2实例上的Nginx服务器之间。这种机制有助于提高应用程序的整体可用性并减少单点故障的风险[^1]。 #### 创建自动扩展组(Auto Scaling Group) 对于实现更高层次的弹性和容错能力来说,在不同可用区内部署至少两个以上的Nginx实例是非常重要的;而借助Auto Scaling Groups,则可以根据实际需求动态调整运行中的实例数量,从而保证即使某个区域出现问题也不会影响整个系统的正常运作[^3]。 #### 设置跨可用区部署(Cross-AZ Deployment) 当在一个区域内启动资源时,默认情况下它们会被放置在同一位置内——即同一个AZ(Availability Zone)。然而,如果希望进一步提升架构的安全等级的话,则应该采取多AZ策略来进行规划布局。具体操作可以通过指定`Multi-AZ`参数为true的方式完成,这样做的好处在于即便某一特定地点发生意外情况也能迅速切换至其他健康节点继续提供不间断访问支持[^2]。 ```yaml Resources: WebServerGroup: Type: 'AWS::AutoScaling::AutoScalingGroup' Properties: VPCZoneIdentifier: - subnet-0aexample # AZ1 Subnet ID - subnet-0bexample # AZ2 Subnet ID MinSize: '2' MaxSize: '4' DesiredCapacity: '3' ``` 上述YAML片段展示了如何定义一个多AZ Auto Scaling group,其中指定了跨越两个不同子网(分别位于独立的AZ中) 的VPCZoneIdentifier属性值,并设置了最小、最大及期望容量以维持足够的活跃实例数满足业务高峰期的需求变化趋势。 #### 应用程序级别的优化措施 除了依靠基础设施层面所提供的保障外,针对应用本身的调优同样不可忽视。例如启用HTTP/2协议能够显著改善页面加载速度;开启Gzip压缩功能可有效降低传输数据量等等。这些改进都将间接促进用户体验质量得到质变式的飞跃[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值