目录
一、什么是HAproxy
HAProxy是一种自由,快速,可靠的开源软件,用于高可用性负载平衡和代理。它可以在单个服务器上平衡多个Web服务器的负载,以提高可靠性,性能和可扩展性。HAProxy支持多种负载平衡算法,包括轮询,加权轮询,IP哈希和基于URI的哈希。它还支持SSL和TLS终止,会话保持,健康检查和故障转移。由于其卓越的性能和可靠性,HAProxy常用于高流量的Web应用程序,例如大型电子商务网站和社交媒体平台。
二、搭建HAProxy负载均衡环境
- 需要3台服务器如下表格(一台haproxy服务器,两台web服务器)
- 所有服务器关闭防火墙及IP地址确保能联网
服务器 | 操作系统 | 网络参数/主机名 | 安装服务/安装方法 |
HAproxy | CentOS7 | 192.168.115.200/haproxy | haproxy/源码安装 |
Web1 | CentOS7 | 192.168.115.201/web1 | httpd/yum安装 |
Web2 | CentOS7 | 192.168.115.202/web2 | httpd/yum安装 |
三、软件安装及配置
1、HAProxy安装及配置
1.1下载haproxy-1.7.2.tar.gz安装包
wget https://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz
1.2解压安装包进入目录haproxy-1.7.2/下
tar xf haproxy-1.7.2.tar.gz
cd haproxy-1.7.2/
1.3编译安装
- 编译前查看本机内核版本号(我的是3.10)
查看内核版本的命令:uname -r
#编译
make PREFIX=/usr/local/haproxy TARGET=linux2628
#安装
make install PREFIX=/usr/local/haproxy
1.4建立配置文件
- 从haproxy的源码包中的examples下的init.haproxy中获得配置文件的路径“/etc/haproxy/haproxy.cfg”
mkdir /etc/haproxy
touch /etc/haproxy/haproxy.cfg -p
1.5添加为系统服务
- 复制脚本的时候一定不要改名否则会出错
cp /root/haproxy-1.7.2/examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
vim /etc/init.d/haproxy
#修改: 35行 内容为 BIN=/usr/local/haproxy/sbin/$BASENAME
chkconfig --add /etc/init.d/haproxy
1.6填写配置文件内容
- 七层负载配置
global #全局属性
daemon #以daemon方式在后台运行
maxconn 256 #最大同时256连接
pidfile /home/ha/haproxy/conf/haproxy.pid #指定保存HAProxy进程号的文件
defaults #默认参数
mode http #http模式
timeout connect 5000ms #连接server端超时5s
timeout client 50000ms #客户端响应超时50s
timeout server 50000ms #server端响应超时50s
frontend http-in #前端服务http-in
bind *:80 #监听8080端口
default_backend servers #请求转发至名为"servers"的后端服务
backend servers #后端服务servers
server server1 127.0.0.1:80 maxconn 32
server server2 127.0.0.1:80 maxconn 32
#backend servers中两个后端服务,名字叫server1、server2,起在本机的80端口,HAProxy同时最多向这
个服务发起32个连接
#配置监控页面(只能配置在七层负载均衡下)
listen stats #定义监控页面
bind *:1080 #绑定端口1080
stats refresh 30s #每30秒更新监控数据
stats uri /stats #访问监控页面的uri
stats realm HAProxy\ Stats #监控页面的认证提示
stats auth admin:admin #监控页面的用户名和密码
- 四层负载配置
global #全局属性
daemon #以daemon方式在后台运行
maxconn 256 #最大同时256连接
pidfile /home/ha/haproxy/conf/haproxy.pid #指定保存HAProxy进程号的文件
defaults #默认参数
mode tcp #tcp模式
timeout connect 5000ms #连接server端超时5s
timeout client 50000ms #客户端响应超时50s
timeout server 50000ms #server端响应超时50s
frontend http-in #前端服务http-in
bind *:80 #监听8080端口
default_backend servers #请求转发至名为"servers"的后端服务
backend servers #后端服务servers
balance roundrobin #轮询
#balance source #保持会话
server server1 127.0.0.1:80 maxconn 32
server server2 127.0.0.1:80 maxconn 32
#backend servers中两个后端服务,名字叫server1、server2,起在本机的80端口,HAProxy同时最多向这
个服务发起32个连接
1.7启动HAProxy服务
service haproxy start
service haproxy stop
service haproxy restart | reload
也可以使用systemctl进行启停
2、httpd安装及配置
1.1安装httpd服务(两天web服务器都要安装)
yum -y install httpd
#添加主页文件
#web1服务器
echo web1 > /var/www/html/index.html
#web2服务器
echo web2 > /var/www/html/index.html
1.2启动httpd服务
systemctl start httpd
四、验证
- 在客户端验证是否能负载均衡访问
curl 192.168.115.201:80