一、下载安装包
mkdir -p /data/tools
cd /data/tools
wget https://www.haproxy.org/download/2.4/src/haproxy-2.4.4.tar.gz
二、解压下载包
tar xzvf haproxy-2.4.4.tar.gz && cd haproxy-2.4.4
解压进入解压目录
三、安装编译
uname -r #查看内核版本
yum install gcc make -y # 安装编译工具
more README # 查看安装说明
#make TARGET=linux31
make TARGET=linux31 ARCH=x86_64 prefix=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy # TARGET指定内核版本,ARCH指定CPU架构,PREFIX指haprxoy的安装路径。
ll /usr/local/haproxy/
四、创建运行账户和组
groupadd --system haproxy #添加haproxy的组
useradd --system -M -g haproxy haproxy -s /sbin/nologin #创建haproxy的系统账户到haproxy的
组,但是禁止其登陆系统。
useradd -r -s /sbin/nologin haproxy
五、创建目录
mkdir -pv /usr/local/haproxy/conf/ready/{tcp,http} # 为多配置文件准备,省略;
mkdir -pv /usr/local/haproxy/conf/enabled/{tcp,http} # 为多配置文件准备,省略;
mkdir -pv /usr/local/haproxy/logs
mkdir -pv /etc/haproxy #创建配置目录
mkdir -pv /usr/share/haproxy/ #防止启动出错
mkdir /etc/haproxy
cp examples/option-http_proxy.cfg /etc/haproxy/haproxy.cfg
复制开机启动文件:
cp examples/haproxy.init /etc/init.d/haproxy
赋予权限
chmod u+x /etc/init.d/haproxy
创建软连接
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
chkconfig --add haproxy
chkconfig haproxy on
chkconfig --list|grep haproxy
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
haproxy 0:关 1:关 2:开 3:开 4:开 5:开 6:关
#touch /usr/local/haproxy/conf/haproxy.cfg #创建配置文件
#ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg #添加配置文件
服务管理:
启动:service haproxy start systemctl start haproxy
停止:service haproxy stop
重载:service haproxy restart
状态:service haproxy status systemctl status haproxy
检查:service haproxy test
处理一个报错
/etc/init.d/haproxy: 第 26 行:[: =: 期待一元表达式
● haproxy.service - SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.
Loaded: loaded (/etc/rc.d/init.d/haproxy; bad; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)
vim +26 /etc/rc.d/init.d/haproxy
26 [ ${NETWORKING} = "no" ] && exit 0
改为:
26 [ "${NETWORKING}" = "no" ] && exit 0
六、配置日志rsyslog
vim /etc/rsyslog.conf
# 取消如下2行注释
$ModLoad imudp
$UDPServerRun 514
# 新增配置:local 1~7 –自定义的日志设备
local7.* /var/log/haproxy.log
重启syslog服务
# centos 6.*
service rsyslog restart
# CentOS 7.*
systemctl restart rsyslog
七、启动Haproxy
[root@node1 ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[root@node1 ~]# ps -ef |grep haproxy |grep -v grep
root 6950 1 0 19:35 ? 00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
或者
[root@node1 ~]# service haproxy start
Starting haproxy (via systemctl): [ 确定 ]
[root@node1 ~]# ps -ef |grep haproxy |grep -v grep
haproxy 4383 1 0 15:53 ? 00:00:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
haproxy参数说明
-v 显示版本;
-vv 显示已知的构建选项。
-f 指定配置文件启动;
-p 指定pid文件;
-d 进入调试模式;
-db 仅禁用后台模式。
-dM [<byte>] 使用<byte>中毒内存(默认为0x50)
-V 进入详细模式(禁用安静模式)
-D 去守护进程;
-C 在加载文件之前更改为<dir>。
-q quiet mode:不显示消息
-c check mode:只检查配置文件并退出
-n 设置最大连接数(2000)
-m 限制可用内存量(以MB为单位)
-N 设置默认的每代理最大连接数(2000)
-L 设置本地对等名称(默认为hostname)
-p 将所有子项的pid写入此文件
-de 即使在可用时也禁用epoll()用法
-dp 即使在可用时也禁用poll()用法
-dS 禁用拼接使用(在旧内核上断开)
-dG 禁用getaddrinfo()用法
-dV 在服务器端禁用SSL验证
-sf/-st [pid]* 完成/终止旧的pid。必须是最后的论点。