千家信息网

Haproxy搭建web集群

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,Haproxy搭建web集群重点内容1:1.四层负载均衡:1)DNS轮询:将同一个域名解析为多个不同的ip地址实现负载均衡。2)Nginx负载均衡:通过定义upstream 组名 {server ip
千家信息网最后更新 2025年02月03日Haproxy搭建web集群

Haproxy搭建web集群
重点内容1:
1.四层负载均衡:
1)DNS轮询:将同一个域名解析为多个不同的ip地址实现负载均衡。
2)Nginx负载均衡:通过定义upstream 组名 {server ip:port weight=权重;…}后端服务,然后通过proxy_pass http://组名实现负载均衡。
3)LVS负载均衡:通过ipvsadm定义VIP(集群IP)和real server(后端服务器)调用linux内核(kernel)模块ip_vs实现负载均衡。
2.haproxy负载均衡:通过定义listen(监听),在监听使用server定义后端web服务器,在balance指定调度算法实现负载均衡。
3.七层代理:
1)squid代理:在网站的前端搭建squid为用户访问提速,并提供ACL(访问控制列表)功能。
2)nginx代理:proxy_pass及其他参数实现七层代理。
3)haproxy代理:通过监听将用户和后端服务进行映射实现代理。
4)apache代理:apache代理较为少用,主要是因为性能不佳。
总之:LVS性能最好,但配置复杂;nginx对集群节点健康检查功能不强,性能不如haproxy。
重点内容2: HTTP请求:
1.http请求:通过URL(统一资源定位符)访问网站就是http请求。
2.http请求状态码:URL访问网站时会有一个数字表示请求的结果,如果2xx或3xx(如200/301)表示网站能正常访问,如果是4xx或5xx(如404/500)表示访问网站错误。
重点内容3: 负载均衡常用调度算法及web集群调度器:
1.负载均衡常用调度算法:RR(轮询,依次分发任务)、LC(最小连接,根据当前集群节点处理请求量,将任务分发给处理请求量小的节点)、SH(来源访问调度算法,根据客户端的ip或cookie判断客户端上一次访问的后端服务器并分发任务至此后端服务器)
2.常见的web集群调度器:DNS轮询、nginx代理、LVS负载均衡、haproxy代理、硬件设备(如F5、梭子鱼、绿盟)负载均衡器。
重点内容4: 部署HAPROX+nginx:
1.安装nginx
2.安装haproxy并配置haproxy
重点内容5: Haproxy配置文件:/etc/haproxy/haproxy.cfg
1)全局配置:
global # 全局参数的设置
log 127.0.0.1 local2

log语法:log [max_level_1]

# 全局的日志配置,使用log关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志chroot      /var/lib/haproxy      #改变当前工作目录pidfile     /var/run/haproxy.pid    #当前进程id文件maxconn     4000           #最大连接数user        haproxy         #所属用户group       haproxy         #所属组daemon                     #以守护进程方式运行haproxystats socket /var/lib/haproxy/stats  #基于本地的文件传输

2)proxies(代理)配置参数:
mode http
#默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
log global
#应用全局的日志配置
option httplog

启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求日志

option dontlognull

启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器或者监控系统为了探测该服务是否存活可用时,需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来

option http-server-close
#每次请求完毕后主动关闭http通道
option forwardfor except 127.0.0.0/8
#如果服务器上的应用程序想记录发起请求的客户端的IP地址,需要在HAProxy上配置此选项, 这样 HAProxy会把客户端的IP信息发送给服务器,在HTTP请求中添加"X-Forwarded-For"字段。启用X-Forwarded-For,在requests头部插入客户端IP发送给后端的server,使后端server获取到客户端的真实IP。
option redispatch
#当使用了cookie时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性;而此时,如果后端的服务器宕掉了, 但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常。
retries 3

定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端服务器标记为不可用

timeout http-request 10s #http请求超时时间
timeout queue 1m #一个请求在队列里的超时时间
timeout connect 10s #连接超时
timeout client 1m #客户端超时
timeout server 1m #服务器端超时
timeout http-keep-alive 10s #设置http-keep-alive的超时时间
timeout check 10s #检测超时
maxconn 3000 #每个进程可用的最大连接数
frontend main :80 #监听地址为80
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend my_webserver
#定义一个名为my_webserver前端部分。此处将对应的请求转发给后端
backend static
#使用了静态动态分离(如果url_path匹配 .jpg .gif .png .css .js静态文件则访问此后端)
balance roundrobin
#负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数)
server static 127.0.0.1:80 check
#静态文件部署在本机(也可以部署在其他机器或者squid缓存服务器)
backend my_webserver
#定义一个名为my_webserver后端部分。PS:此处my_webserver只是一个自定义名字而已,但是需要与frontend里面配置项default_backend 值相一致
balance roundrobin #负载均衡算法
server web01 172.31.2.33:80 check inter 2000 fall 3 weight 30 #定义的多个后端
server web02 172.31.2.34:80 check inter 2000 fall 3 weight 30 #定义的多个后端
server web03 172.31.2.35:80 check inter 2000 fall 3 weight 30 #定义的多个后端
3)server详解:
server

[:[port]] [param]
定义后端主机的各服务器及其选项 server
[:port] [settings ...] default-server [settings ...]
:服务器在haproxy上的内部名称;出现在日志及警告信息
:服务器地址,支持使用主机名
[:[port]]:端口映射;省略时,表示同bind中绑定的端口
[param]:参数
check:对当前server做健康状态检测,只用于四层检测
注意:httpchk,"smtpchk", "mysql-check", "pgsql-check" and "sslhello-chk" 用于定义应用层检测方法
addr :检测时使用的IP地址
port :针对此端口进行检测
inter :连续两次检测之间的时间间隔,默认为2000ms
rise :连续多少次检测结果为"成功"才标记服务器为可用 ;默认为2
fall :连续多少次检测结果为"失败"才标记服务器为不可 用;默认为3
cookie :为当前server指定cookie值,实现基于cookie的会话黏性
disabled:标记为不可用
redir :将发往此server的所有GET和HEAD类的请求重定向至指 定的URL
weight :权重,默认为1
maxconn :当前server的最大并发连接数
backlog :当server的连接数达到上限后的后援队列长度
backup:设定当前server为备用服务器
default-server [param
] 为backend中的各server设定默认选项

服务 服务器 均衡 代理 日志 客户 检测 配置 参数 端的 集群 算法 调度 内容 地址 文件 网站 重点 监听 全局 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发方向行业分析 平安建设网络安全保障制度 Cisco网络技术课程感想 安徽软件开发一般在哪里找 互联网前沿数据科技 华泰与中泰哪个服务器好 网络安全工程师二级 四川电信服务器名称或地址 用于安全性目的的数据库日志 数据库服务器sas盘 重庆金融服务器云空间 网络技术管理岗位面试题 专线网络技术指标 合肥餐饮软件开发需要多少钱 数据库备份路径如何修改 常规的软件开发分几个阶段 腾讯云服务器关机还收费吗 xampp软件与数据库的关系 搭建服务器自定义地图 网络技术取得了什么成就 保定百度网络技术有限公司 重庆网络安全工程师 津南区电子网络技术售后服务 桌面程序用什么数据库 北京平台软件开发 长沙职业技术学院计算机网络技术 快递查询系统数据库 网络加速服务器分享 哪个数据库能查到土地出让金 ecc与服务器内存的区别
0