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

云计算学习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.dtcms.com/a/354674.html

相关文章:

  • InnoDB存储引擎底层拆解:从页、事务到锁,如何撑起MySQL数据库高效运转(上)
  • 音频转PCM
  • PCM转音频
  • 底层音频编程的基本术语 PCM 和 Mixer
  • docker 1分钟 快速搭建 redis 哨兵集群
  • GD32VW553-IOT OLED移植
  • JavaWeb 30 天入门:第二十一天 ——AJAX 异步交互技术
  • React Hook+Ts+Antd+SpringBoot实现分片上传(前端)
  • openEuler常用操作指令
  • Java开发 - 缓存
  • 我店生活平台是不是 “圈钱平台”?揭开消费补贴新模式的面纱
  • 从零开始的云计算生活——第五十三天,发愤图强,kubernetes模块之Prometheus和发布
  • DistributedLock 实现.Net分布式锁
  • Kafka02-集群选主
  • BeyondMimic——通过引导式扩散实现动作捕捉:基于Diffuse-CLoC构建扩散框架,可模仿动作、导航避障(含UniTracker的详解)
  • InstructGPT:使用人类反馈训练语言模型以遵循指令
  • ARM相关的基础概念和寄存器
  • Shell编程知识整理
  • 从 WPF 到 Avalonia 的迁移系列实战篇2:路由事件的异同点与迁移技巧
  • Linux下OpenRadioss源码编译安装及使用
  • Shell 字符串操作与运算符
  • 利用ChatGPT打造行业LLM大模型应用
  • 外部请求至k8s集群内部对应节点全流程介绍
  • 使用docker搭建嵌入式Linux开发环境
  • HTML5七夕节网站源码
  • Java:TCP/UDP网络编程
  • DevOps篇之利用Jenkins实现多K8S集群的版本发布
  • Docker-compose常用命令
  • Helm 在 K8s 中的常见应用场景
  • 【K8s】整体认识K8s之K8s的控制器