当前位置: 首页 > news >正文

通过Nginx负载均衡+Keepalived实现业务高可用

通过Nginx负载均衡和Keepalived可以实现业务的高可用,以下是详细的实现步骤:

环境准备

假设我们有3台服务器,IP地址分别为:

  • 服务器1(Nginx + Keepalived 主节点):192.168.1.100
  • 服务器2(Nginx + Keepalived 备节点):192.168.1.101
  • 后端应用服务器:192.168.1.102、192.168.1.103

步骤一:安装Nginx和Keepalived

在服务器1和服务器2上分别安装Nginx和Keepalived:

安装Nginx
# 更新系统包列表
sudo apt update
# 安装Nginx
sudo apt install nginx -y
安装Keepalived
sudo apt install keepalived -y

步骤二:配置Nginx负载均衡

在服务器1和服务器2上进行相同的Nginx配置。编辑Nginx的配置文件 /etc/nginx/sites-available/default

http {upstream backend {server 192.168.1.102;server 192.168.1.103;}server {listen 80;server_name _;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

上述配置中,upstream 块定义了后端应用服务器列表,server 块将所有请求代理到后端服务器。

配置完成后,重启Nginx服务:

sudo systemctl restart nginx

步骤三:配置Keepalived

主节点(服务器1)配置

编辑 /etc/keepalived/keepalived.conf 文件:

! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.110}
}virtual_server 192.168.1.110 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPreal_server 192.168.1.100 80 {weight 1SSL_GET {url {path /digest ff20ad2481f8d0385d96a347da6cdb0c}url {path /mrtg/digest 9b3a0c85a8872a256d6939da88aabd8cd}connect_timeout 3retry 3delay_before_retry 3}}
}
  • state MASTER:表示该节点为主节点。
  • interface eth0:指定使用的网络接口。
  • virtual_router_id 51:虚拟路由ID,主备节点需保持一致。
  • priority 100:优先级,主节点优先级要高于备节点。
  • virtual_ipaddress:指定虚拟IP地址(VIP)。
备节点(服务器2)配置

编辑 /etc/keepalived/keepalived.conf 文件:

! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUP
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.110}
}virtual_server 192.168.1.110 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPreal_server 192.168.1.101 80 {weight 1SSL_GET {url {path /digest ff20ad2481f8d0385d96a347da6cdb0c}url {path /mrtg/digest 9b3a0c85a8872a256d6939da88aabd8cd}connect_timeout 3retry 3delay_before_retry 3}}
}

与主节点配置的主要区别在于 stateBACKUPpriority 较低。

配置完成后,分别在服务器1和服务器2上启动Keepalived服务:

sudo systemctl start keepalived
sudo systemctl enable keepalived

步骤四:验证高可用性

  • 访问业务:在客户端浏览器中输入虚拟IP地址 192.168.1.110,应该可以正常访问后端应用服务。
  • 模拟主节点故障:在服务器1上停止Keepalived服务:
sudo systemctl stop keepalived

此时,虚拟IP地址会自动漂移到服务器2上,再次在客户端浏览器中输入虚拟IP地址,仍然可以正常访问后端应用服务。

  • 恢复主节点:在服务器1上启动Keepalived服务:
sudo systemctl start keepalived

由于主节点优先级较高,虚拟IP地址会再次漂移回服务器1。

注意事项

  • 确保服务器之间网络连通,并且防火墙允许相关端口(如80、VRRP协议)的通信。
  • 可以根据实际需求调整Nginx的负载均衡算法和Keepalived的优先级等参数。
http://www.lryc.cn/news/543663.html

相关文章:

  • Spark技术系列(三):Spark算子全解析——从基础使用到高阶优化
  • ES6模块化详解:导入与导出方式
  • 每日学习Java之一万个为什么?[MySQL面试篇]
  • 常用空间数据结构对比
  • AnythingLLM+LM Studio本地知识库构建
  • 使用 Java 更新 Word 文档中的图表数据-超详细
  • Qt常用控件之下拉框QComboBox
  • Qt 中集成mqtt协议
  • 2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析
  • AI大模型-提示工程学习笔记19-自我反思
  • GaussDB 学习实战指南:从部署到高并发优化的全流程解析
  • vue3 Props的使用
  • Ecode前后端传值
  • 【Linux】进程状态(二)
  • domain 网络安全 网络安全域
  • 链表和STL —— list 【复习笔记】
  • Java Map实现类面试题
  • 技术架构和工程架构区别
  • 简单介绍JVM
  • 纷析云:赋能企业财务数字化转型的开源解决方案
  • DeepSeek开源周第二弹:DeepEP如何用RDMA+FP8让MoE模型飞起来?
  • NLP学习记录十:多头注意力
  • 【MySql】EXPLAIN执行计划全解析:15个字段深度解读与调优指南
  • 论文笔记(七十二)Reward Centering(五)
  • Linux内核自定义协议族开发指南:理解net_device_ops、proto_ops与net_proto_family
  • SOME/IP-SD -- 协议英文原文讲解6
  • 【数据处理】COCO 数据集掩码 Run-Length Encoding (RLE) 编码转二进制掩码
  • Java中的缓存技术:Guava Cache vs Caffeine vs Redis
  • Day8 蓝桥杯acw讲解
  • 《Operating System Concepts》阅读笔记:p147-p158