云计算学习100天-第32天

Haproxy负载均衡集群

  • 概念

    • HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
    • 是免费、快速并且可靠的一种解决方案
    • HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理
    • 可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到公网
  • 工作模式

    • mode http:只适用于web服务
    • mode tcp:适用于各种服务
    • mode health:仅做健康检查,很少使用
  • 调度算法

    • roundrobin:轮询
    • static-rr:加权轮询
    • leastconn:最少连接者先处理
    • source:根据请求源IP,类似于nginx的ip_hash
    • ri:根据请求的URI
    • rl_param:根据请求人URL参数'balance url_param'
    • rdp-cookie(name) :根据cookie(name)来锁定并哈希每一次的TCP请求
    • hdr(name) :根据HTTP请求头来锁定每一次HTTP请求
主机名 IP地址 角色
pubserver eth0:192.168.88.240 ansible主机
client eth0:192.168.88.10 客户端
proxy eth0:192.168.88.5 haproxy服务器
web1 eth0:192.168.88.100 web服务器
web2 eth0:192.168.88.200 web服务器

安装haproxy服务

#基于前一天的keepalived网络架构搭建

lvs1节点安装Haproxy软件,在ansible主机上用剧本实现

vim 12_install_haproxy.yml


  • name: config haproxy

hosts: lvs1

tasks:

  • name: stop keepalived #停止Keepalived服务

service:

name: keepalived

state: stopped

enabled: false

  • name: remove softs #卸载软件

yum:

name: ipvsadm,keepalived

state: absent

  • name: modify hostname #设置主机名

shell: "hostnamectl set-hostname haproxy"

  • name: install haproxy #安装软件

yum:

name: haproxy

state: present

ansible-playbook 12_install_haproxy.yml

配置Haproxy

配置文件说明

global为全局配置,通常保持默认即可

defaults为缺省配置,如果后续有相同配置则覆盖缺省值

#haproxy服务器配置

vim /etc/haproxy/haproxy.cfg

...

#先把包括64行在内的之后的行全部删除,然后添加以下配置

...

listen webservers #定义虚拟服务器

bind 0.0.0.0:80 #定义监听端口

mode http #定义工作模式

balance roundrobin #定义调度算法

server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5

server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5

#check:对后端服务器进行健康检查

#inter:健康检查心跳包发送时间间隔

#rise:连续检查N次有响应则认为健康

#fall:连续检查N次无响应则认为故障

systemctl start haproxy

ss -antlp | grep haproxy #查看已用的端口命令,集群搭建的常用命令

client客户端访问测试

for i in {1..6}

do

curl http://192.168.88.5

done

Welcome to web1

Welcome to web2

Welcome to web1

Welcome to web2

Welcome to web1

Welcome to web2

haproxy服务器开启Haproxy健康检查页面

vim /etc/haproxy/haproxy.cfg

...

listen stats #定义虚拟服务器

bind 0.0.0.0:1080 #定义监听端口

stats refresh 30s #定义页面刷新时间

stats uri /stats #定义请求路径

stats auth admin:admin #定义用户/密码

systemctl restart haproxy

ss -antlp | grep haproxy

LISTEN 0 128 0.0.0.0:1080 0.0.0.0:* users:(("haproxy",pid=28627,fd=7))

LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("haproxy",pid=28627,fd=5))

浏览器访问测试

http://192.168.88.5:1080/stats 用户名/密码:admin/admin

相关推荐
通信小呆呆9 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick9 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee9 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn869 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e9 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨9 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq9 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan9 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend9 天前
理论学习:什么是 Coding Agent?
学习
自传.9 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding