负载均衡集群——HAProxy

目录

[1 HAProxy介绍](#1 HAProxy介绍)

[2 功能简介](#2 功能简介)

[3 实验组网介绍](#3 实验组网介绍)

[4 实验步骤](#4 实验步骤)

[4.1 通过 HAProxy 实现简单负载均衡调度功能](#4.1 通过 HAProxy 实现简单负载均衡调度功能)

[步骤 1 安装 HAProxy](#步骤 1 安装 HAProxy)

[步骤 2 修改配置 HAProxy 文件](#步骤 2 修改配置 HAProxy 文件)

[4.2 HAProxy 监控页面配置](#4.2 HAProxy 监控页面配置)

[步骤 1 修改 HAProxy 配置文件](#步骤 1 修改 HAProxy 配置文件)

[步骤 2 查看监控页面](#步骤 2 查看监控页面)

[3.3 HAProxy 日志相关配置](#3.3 HAProxy 日志相关配置)

[步骤 1 修改 HAProxy 配置](#步骤 1 修改 HAProxy 配置)

[步骤 2 修改 rsyslog 配置信息](#步骤 2 修改 rsyslog 配置信息)

[步骤 3 测试](#步骤 3 测试)

[步骤 4 恢复 Nginx2 配置](#步骤 4 恢复 Nginx2 配置)


1 HAProxy****介绍

HAProxy是法国开发者 威利塔罗 (Willy Tarreau) 在 2000 年使用 C 语言开发的一个开源软件,是一款具备高并发( 一万以上 ) 、高性能的 TCP 和 HTTP 负载均衡器,支持基于 cookie 的持久性,自动故障切换,支持正则表达式及web 状态统计,目前最新 TLS 版本为 2.0

2****功能简介

负载均衡是 HAProxy 基本功能之一
HAProxy 支持四层和七层的负载均衡
HAProxy 基于事件驱动的链接处理模式和单进程处理模式,使其性能更优
HAProxy 支持 ACL 功能
HAProxy 支持图形化监控
HAProxy 支持不少于 10 种的调度算法
TCP 和 HTTP 反向代理
SSL/TSL 服务器
可以针对 HTTP 请求添加 cookie ,进行路由后端服务器
可平衡负载至后端服务器,并支持持久连接
支持所有主服务器故障切换至备用服务器
支持专用端口实现监控服务
支持停止接受新连接请求,而不影响现有连接
可以在双向添加,修改或删除 HTTP 报文首部
响应报文压缩
支持基于 pattern 实现连接请求的访问控制
通过特定的 URI 为授权用户提供详细的状态信息

不具备的功能:

正向代理--squid,nginx
缓存代理 --varnish
web 服务 --nginx 、 tengine 、 apache 、 php 、 tomcat
UDP-- 目前不支持 UDP 协议
单机性能 -- 相比 LVS 性能较差

3 实验组网介绍

本实验共使用四台虚拟机,其中一台配置为 HAProxy 服务器,两台用于 Nginx 服务器的搭建,剩余一台模拟客户端。其中 Nginx 服务器可以和上一实验复用,并保留上个实验完成后的状态,每台服务器中运行了三个虚拟机主机。HAProxy 使用两块网卡,分别于连接内网和外网:

4 实验步骤

4.1 通过 HAProxy 实现简单负载均衡调度功能

步骤 1 安装 HAProxy

在 HAProxy 对应虚拟机上使用以下命令安装 HAProxy:

[root@HAProxy ~]# yum install -y haproxy

步骤 2 修改配置 HAProxy 文件

HAProxy 配置文件为/etc/haproxy/haproxy.cfg,在修改前建议先备份。

[root@HAProxy ~]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

本实验实现 HAProxy 最基础的负载均衡,因此仅需修改 backend 部分即可,具体如下:

[root@HAProxy ~]# vim /etc/haproxy/haproxy.cfg


配置完成后,使用命令 "systemctl restart haproxy" 重启 HAProxy 服务,重启后,在客户端访问 HAProxy ,如果配置正确,访问结果如下图所示:

4.2 HAProxy 监控页面配置

步骤 1 修改 HAProxy 配置文件

在 HAProxy 配置文件中使用 listen 模块配置监控页面,具体为:

[root@HAProxy ~]# vim /etc/haproxy/haproxy.cfg
listen admin_stats
stats enable
bind *:8080 # 监听的 ip 端口号
mode http # 开关
option httplog
log global
maxconn 10
stats refresh 30s # 统计页面自动刷新时间
stats uri /admin # 访问的 uri ip:8080/admin
stats realm haproxy
stats auth admin:admin # 认证用户名和密码
stats hide-version # 隐藏 HAProxy 的版本号
stats admin if TRUE # 管理界面,如果认证成功了,可通过 webui 管理节点

步骤 2 查看监控页面

配置完成后,重启 HAProxy 服务,然后在 PC 上使用浏览器登录页面 http://IP:8443/haproxy_stats,在弹出的窗口中输入用户密码即可登录监控页面,具体如下:

3.3 HAProxy 日志相关配置

步骤 1 修改 HAProxy 配置

HAProxy 的日志可以在 global 模块中定义,也可以在 default 或 frontend 中定义,本实验采用 global 中的定义的方式实现,在 HAProxy 配置文件中添加关于日志的配置信息,具体如下:

[root@HAProxy ~]# vim /etc/haproxy/haproxy.cfg

步骤 2 修改 rsyslog 配置信息

在/etc/rsyslog.conf 的末尾增加以下配置内容:

步骤 3 测试

配置完成步骤 1 和步骤 2 后,重启 HAProxy 服务和 rsyslog 服务,重启完成后,系统会自动创建指定的日志文件,如下图所示:

在 Nginx2 上开启防火墙

[root@Nginx2 ~]# systemctl start firewalld

查看是否产生对应的日志内容,具体如下图所示:

步骤 4 恢复 Nginx2 配置

关闭 Nginx2 上防火墙服务,使业务恢复。

相关推荐
摸鱼也很难4 分钟前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
woshilys38 分钟前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛1 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程2 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo3 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
好像是个likun4 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
cominglately6 小时前
centos单机部署seata
linux·运维·centos
CircleMouse6 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0667 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux7 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算