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等
安装与部署
- 内网IP地址划分
# 外部网络 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,haproxy,USE,src,---,lua,usr From: https://www.cnblogs.com/wsxier/p/17278352.html# 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
HAProxy启动文件
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