Haproxy
负责均衡的作用
- Web服务器的动态水平扩展--->对用户无感知
- 增加业务并发访问及处理能力--->解决单服务器瓶颈问题
- 节约公网IP地址--->降低IT支持成本
- 隐藏内部服务器IP--->提高内部服务器安全性
- 配置简单--->固定格式的配置文件
- 功能丰富--->支持四层和七层,支持动态下线主机(传输层:四层。应用层:七层)
- 性能较强--->并发数万甚至数十万
负载均衡类型
与lvs的区别
- lvs是工作在内核级别的,看不到端口,而haproxy是工作的应用层级别的
- 四层
- LVS: Liunx Virtual Server
- Nginx: 1.9之后
- HaProxy: High Availability Proxy
- 七层
- HAProxy
- Nginx
应用场景
- 四层:Redis、Mysql、RabbitMQ、Memcache等
- 七层:Nginx、Tomcat、Apache、PHP、图片、动静分离、API等
安装与部署
# 外部网络
172.16.0.0/16
# 内部网络
10.0.0.0/24
# 可用地址范围
10.0.0.1--10.0.0.254
yum安装
dnf install haproxy -y
rpm -ql haproxy
编译安装
解决lua环境
- Lua官网:www.lua.org
- Lua应用场景
- 游戏开发
- 独立应用开发
- Web应用脚本
- 扩展和数据库插件,如MySQL Proxy
- 安全系统,如入侵检测系统
# 当前系统版本
lua -v
# 安装基础命令及编译依赖环境
yum install -y gcc readline-devel
wget https://www.lua.org/ftp/lua-5.3.6.tar.gz
tar xvf lua-5.3.6.tar.gz -C /usr/local/src
cd /usr/local/src/lua-5.3.5
make linux test
# 查看编译安装的版本
src/lua -v
编译安装HAProxy
# HAProxy 1.8及1.9版本编译参数:
make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy
# HAProxy 2.0以上版本编译参数:
yum install -y gcc openssl-devel pcre-devel systemd-devel
tar xvf haproxy-2.0.26.tar.gz
cd haproxy-2.0.26
# 查看安装方法
ll Makefile
cat README
cat INSTALL
# 编译
make -j 4 TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_LUA=1 USE_PCRE=1 USE_SYSTEMD=1 LUA_INC=/usr/local/src/lua-5.3.5/src LUA_LIB=/usr/local/src/lua-5.3.5/src
# 安装
make install PREFIX=/apps/haproxy
ln -s /apps/haproxy/sbin/haproxy /usr/sbin/
haproxy -v
cat /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
mkdir /var/lib/haproxy/
mkdir /etc/haproxy/
# 配置man日志
vim /etc/man_db.conf
MANDATORY_MANPATH /apps/haproxy/share/man/
# 更新man数据库
mandb
# 配置文件
vim /etc/haproxy/haproxy.cfg
global
maxconn 100000
chroot /apps/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
#uid 99
#gid 99
user haproxy
group haproxy
daemon
# nbproc 4
# cpu-map 1 0
# cpu-map 2 1
# cpu-map 3 2
# cpu-map 4 3
pidfile /var/lib/haproxy/haproxy.pid
log 127.0.0.1 local2 info
defaults
option http-keep-alive
option forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /haproxy-status
stats auth haadmin:123456
listen web_port
bind 10.0.0.7:80
mode http
log global
server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5
useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy
systemctl daemon-reload
systemctl enable --now haproxy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律