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

KeepAlived+Haproxy实现负载均衡(SLB)

背景

公司一个项目中客户现场没有云平台,应用的高可用需要使用KeepAlived+Haroxy来实现,记录一下步骤。

资源配置

服务器 2台: 172.18.7.13、172.18.8.14
操作系统: OpenEuler 24.03 LTS
VIP1: 172.18.7.81 (结构化服务入口)
VIP2: 172.18.7.21 (非结构化服务入口)

部署架构图

在这里插入图片描述

部署步骤

  1. 两台服务器上都安装keepalived 和haproxy
yum install -y keepalived haproxy
  1. 修改两台服务器的系统配置,允许tcp监听未知的IP地址
echo 'net.ipv4.ip_nonlocal_bind=1' >> /etc/sysctl.conf
sysctl -p
  1. 配置keepalived并启动服务
vi /etc/keepalived/keepalived.conf

文件内容

vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 1weight -20fall 2rise 2
}vrrp_instance VI_1 {state BACKUP #另外一个服务配置为Master interface  bond1virtual_router_id 51priority 90 #另外一个服务器配置优先级为100advert_int 1authentication {auth_type PASSauth_pass keepalived}virtual_ipaddress {172.18.7.81}track_script {chk_nginx}
}
vrrp_instance VI_2 {state MASTER #另外一个服务器为BACKUPinterface  bond1virtual_router_id 61priority 100 #另外一个服务器为90advert_int 1authentication {auth_type PASSauth_pass keepalived}virtual_ipaddress {172.18.7.21}
}
systemctl enable keepalvied && systemctl start keepalived
  1. 配置haproxy并启动服务
vi /etc/haproxy/haproxy.cfg

文件内容

globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.piduser        haproxygroup       haproxydaemonmaxconn     40000defaultsmode                    httplog                     globaloption                  httplogoption                  dontlognullretries                 3timeout http-request    50stimeout queue           1mtimeout connect         50stimeout client          1mtimeout server          1mtimeout http-keep-alive 50stimeout check           50smaxconn                 30000frontend httpbind 172.18.7.81:80default_backend         http_backbackend http_backbalance     roundrobinserver  node1 172.18.7.1:30080 checkserver  node2 172.18.7.2:30080 checkserver  node3 172.18.7.3:30080 checkserver  node4 172.18.7.4:30080 checkserver  node5 172.18.7.5:30080 check
frontend httpsbind 172.18.7.81:443default_backend         https_backbackend https_backbalance     roundrobinserver  node1 172.18.7.1:30443 checkserver  node2 172.18.7.2:30443 checkserver  node3 172.18.7.3:30443 checkserver  node4 172.18.7.4:30443 checkserver  node5 172.18.7.5:30443 check
frontend obsbind 172.18.7.21:80default_backend         obs_backbackend obs_backbalance     roundrobinserver  node1 172.18.7.17:80 checkserver  node2 172.18.7.18:80 checkserver  node3 172.18.7.19:80 checkserver  node4 172.18.7.20:80 check
systemctl enable haproxy && systemctl start haproxy
  1. 验证VIP与服务端口
#登录任何一台服务器
netstat -tulpn|grep -E "80|443"

示例输出
在这里插入图片描述

http://www.dtcms.com/a/349361.html

相关文章:

  • window显示驱动开发—混合系统 DDI 和 dList DLL 支持
  • Shell 循环编程:for 与 select 轻松入门
  • HTTP 与 HTTPS 深度解析:从原理到实际应用
  • Kubernetes (K8s)入门指南:Docker之后,为什么需要容器编排?
  • 安全合规:AC(上网行为安全)--下
  • LeetCode热题100--102. 二叉树的层序遍历--中等
  • 什么是JSON-RPC 2.0,在项目中应该怎么使用
  • 09-数据存储与服务开发
  • GPIO子系统自主实现(简单版)
  • C++ static 关键字面试深度解析
  • 匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
  • 【每天一个知识点】大模型训推一体机
  • RK3128 Android 7.1 进入深度休眠流程分析
  • Apache Maven 3.1.1 (eclipse luna)
  • Portswigger靶场之 Blind SQL injection with time delays通关秘籍
  • 维度建模 —— 雪花模型 和 星型模型的优缺点
  • 异常记录-神通数据库-已解决
  • go-redis库使用总结
  • jasperreports 使用
  • Vmware centos系统中通过docker部署dify,网络超时和磁盘容量解决方案
  • 解决getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
  • 容易忽视的TOS无线USB助手配网和接入USB使用: PC和TOS-WLink需要IP畅通,
  • 社群团购平台与定制开发开源AI智能名片S2B2C商城小程序的融合创新研究
  • 解构 Spring Boot “约定大于配置”:从设计哲学到落地实践
  • 在Excel和WPS表格中拼接同行列对称的不连续数据
  • XC95144XL-10TQG144I Xilinx XC9500XL 高性能 CPLD
  • 信贷模型域——清收阶段模型(贷后模型)
  • 关于内存泄漏的一场讨论
  • [Android] 人体细胞模拟器1.5
  • leetcode 238 除自身以外数组的乘积