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

云计算学习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地址角色
pubservereth0:192.168.88.240ansible主机
clienteth0:192.168.88.10客户端
proxyeth0:192.168.88.5haproxy服务器
web1eth0:192.168.88.100web服务器
web2eth0:192.168.88.200web服务器

安装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

http://www.xdnf.cn/news/19127.html

相关文章:

  • 1-ATSAMV71Q21
  • 大模型后训练——Online-RL实践
  • DistributedLock 实现.Net分布式锁
  • 智能养花谁更优?WebIDE PLOY技术与装置的结合及实践价值 —— 精准养护的赋能路径
  • 北斗导航 | 工信部印发《关于优化业务准入促进卫星通信产业发展的指导意见》解析
  • MySQL数据库精研之旅第十三期:吃透用户与权限管理,筑牢数据库安全第一道防线
  • 【MySQL数据库】存储引擎 学习记录
  • 高光谱成像在食品质量和安全检测中的应用
  • 【C++游记】子承父业——乃继承也
  • [p2p-Magnet] 队列与处理器 | DHT路由表
  • iOS文件管理在uni-app开发中的实战应用,多工具解决
  • hive on tez如果是2个大表union会写几次临时文件到hdfs目录,数据量如何计算
  • 密码管理中
  • 水果目标检测[2]:ALAD-YOLO:一种轻便、精确的苹果叶病检测仪
  • 学习Python中Selenium模块的基本用法(7:元素操作-1)
  • 【golang长途旅行第33站】常量------补充知识点
  • golang 12 package 和 module
  • Docker 入门指南:从基础概念到常见命令及高级工具详解
  • C++:知识点小结
  • vue2 watch 的使用
  • 从 WPF 到 Avalonia 的迁移系列实战篇1:依赖属性的异同点与迁移技巧
  • LangChain4j入门一:LangChain4j简介及核心概念
  • Python计算点云的欧式、马氏、最近邻、平均、倒角距离(Chamfer Distance)
  • 嵌入式C语言进阶:高效数学运算的艺术与实战
  • MySQL 8 与 PostgreSQL 17 对比分析及迁移指南
  • 【网络】网络基础概念
  • HarmonyOS安全开发实战:一套好用的数据加密方案
  • mysql mvcc机制详解
  • Java全栈开发面试实战:从基础到微服务架构的深度解析
  • IntelliJ IDEA Debug 模式功能指南