Haproxy支持多种调度算法,最常用的有三种
RR算法是最简单最常用的一种算法,即轮询调度
最小连接数算法,根据后端的节点连接数大小动态分配前端请求
基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP,Cookie等做集群调度
参数 | 说明 |
---|---|
log 127.0.0.1 local0 | 配置日志记录,local0位日志设备,默认存放到系统日志 |
log 127.0.0.1 local1 notice | notice为日志级别,通常有24个级别 |
maxconn 4096 | 最大连接数 |
uid 99 | 用户uid |
gid 99 | 用户gid |
default配置项配置默认参数,一般会被应用组件继承
如果应用组件中没有特别声明,将按默认配置参数设置
日志是默认输出到系统的syslog中,生产环境中一般单独定义
定义的方法步骤
实验环境:Centos7.6、VMware Workstation 15.5、Xshell6、haproxy-1.5.19
本次所使用的软件包下载地址:https://wwa.lanzous.com/i9T1Rgaum1e
实验资源规划:
服务器用途 | IP |
---|---|
Haproxy | 192.168.50.133 |
Web节点1 | 192.168.50.134 |
Web节点2 | 192.168.50.135 |
1、分别在两台Web节点上分别部署Nginx并创建test.html站点文件
PS:如果没有部署过的也可以参考我之前的博文:https://blog.csdn.net/u014042047/article/details/107954088
## 这里就简要写一下步骤:
yum -y install gcc gcc-c++ zlib-devel pcre pcre-devel ## 安装依赖环境
useradd -M -s /sbin/nologin nginx ## 创建NGINX程序用户
## 配置
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
make && make install ## 编译&安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/ ## 将nginx命令建立软连接便于系统管理
nginx ## 启动nginx服务
分别在两台Web服务器上创建站点文件:
vim /usr/local/nginx/html/test.html
在Web1上写入:
test1
在Web2上写入:
test2
2、在haproxy服务器上进行安装编译环境
yum -y install \
pcre-devel \
bzip2-devel \
gcc \
gcc-c++ \
make
3、解压缩haproxy安装包
tar zxvf haproxy-1.5.19.tar.gz
4、编译&安装
cd haproxy-1.5.19/ ## 进入软件目录
make TARGET=linux26 ## 编译
make install ## 安装
5、为haproxy创建配置文件目录
mkdir /etc/haproxy ## 创建配置文件目录
cp examples/haproxy.cfg /etc/haproxy/ ## 将配置文件模板放到创建的目录中
6、编辑并修改haproxy配置文件
vim /etc/haproxy/haproxy.cfg ## 修改配置文件
注释掉以下两行:
#chroot /usr/share/haproxy
#redispatch
将27行开始的Listen段全部删除,写入如下内容:
listen webcluster 0.0.0.0:80
option httpchk GET /test.html ## 这里的test.html是我在Web节点上新建的站点页面
balance roundrobin
server inst1 192.168.50.134:80 check inter 2000 fall 3 ## 这里的IP改为Web节点IP
server inst2 192.168.50.135:80 check inter 2000 fall 3 ## 同上
7、将服务启动脚本让系统service进行管理
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy ## 复制启动脚本到init.d目录
chmod +x /etc/init.d/haproxy ## 为脚本添加执行权限
chkconfig --add /etc/init.d/haproxy ## 增加所指定的系统服务,让chkconfig指令得以管理它
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
8、启动服务
service haproxy start
9、在宿主机上打开浏览器访问http://192.168.50.133/test.html看到如下页面说明实验成功!
下面进行日志管理配置:
10、并修改编辑haproxy文件
vim /etc/haproxy/haproxy.cfg ## 编辑配置文件
修改如下内容:
log /dev/log local0 info
log /dev/log local0 notice
11、修改完成后重启服务
service haproxy restart
12、创建并编辑haproxy日志配置文件
touch /etc/rsyslog.d/haproxy.conf ## 创建日志定义配置文件
vim /etc/rsyslog.d/haproxy.conf ## 编辑配置文件
写入如下脚本:
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
13、重启rsyslog和haproxy服务
systemctl restart rsyslog.service
service haproxy restart
14、到就可以看到日志信息了
[root@localhost ~]# ls -l /var/log/haproxy/
总用量 12
-rw-------. 1 root root 4564 9月 2 22:29 haproxy-info.log
-rw-------. 1 root root 136 9月 2 19:04 haproxy-notice.log