负载均衡
- 软件负载
1.四层负载
LVS (Linux Virtual Server)
HAProxy (High Availability Proxy)
Nginx
...
2.七层负载
HAProxy
Nginx
...
- 硬件负载
F5
Netscaler
...
应用场景
- 四层
Redis、MySQL、RabbitMQ、Memcache 等
- 七层
Nginx、Tomcat、Apache、PHP、图片、动静分离、API 等
HAProxy 功能
- HAProxy 是 TCP / HTTP 反向代理服务器,尤其适合于高可用性高并发环境
1.可以针对 HTTP 请求添加 cookie,进行路由后端服务器
2.可平衡负载至后端服务器,并支持持久连接
3.支持基于 cookie 进行调度
4.支持所有主服务器故障切换至备用服务器
5.支持专用端口实现监控服务
6.支持不影响现有连接情况下停止接受新连接请求
7.可以在双向添加,修改或删除 HTTP 报文首部
7.支持基于 pattern 实现连接请求的访问控制
8.通过特定的 URI 为授权用户提供详细的状态信息
- 历史版本更新功能:1.4 1.5 1.6 1.7 1.8 1.9 2.0-dev
HAProxy 安装
- CentOS 基于 yum 安装
~]# yum install -y haproxy
- Ubuntu 安装
apt-get install haproxy
- 编译安装
~]# yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools zlib-devel
~]# tar xvf haproxy-1.8.16.tar.gz
~]# cd haproxy-1.8.16
~]# 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
~]# make install PREDIX=/usr/local/haproxy
~]# cp /usr/local/haproxy/sbin/haproxy /usr/sbin/
- 创建启动脚本
~]# vim /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 -p
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxu/haproxy.cfg -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WanteBy=multi-user.target
- 创建目录符用户
~]# mkdir /etc/haproxy
~]# useradd haproxy -s /sbin/nologin
~]# mkdir /var/lib/haproxy
~]# chown -R haproxy.haproxy /var/lib/haproxy
~]# systemctl restart haproxy
haproxy.cfg 文件中定义了 chroot、pidfile、user、group 等参数,如果系统没有相应的资源会导致 haproxy 无法启动,具体参考日志文件 /var/log/messages