CentOS7安装haproxy
软件版本
软件版本:
haproxy-1.8.25.tar.gz
haproxy下载地址:https://src.fedoraproject.org/repo/pkgs/haproxy/
1、查看系统信息
[root@slave1 soft]# cat /etc/os-release
NAME=“CentOS Linux”
VERSION=“7 (Core)”
ID=“centos”
ID_LIKE=“rhel fedora”
VERSION_ID=“7”
PRETTY_NAME=“CentOS Linux 7 (Core)”
ANSI_COLOR=“0;31”
CPE_NAME=“cpe:/o:centos:centos:7”
HOME_URL=“https://www.centos.org/”
BUG_REPORT_URL=“https://bugs.centos.org/”
CENTOS_MANTISBT_PROJECT=“CentOS-7”
CENTOS_MANTISBT_PROJECT_VERSION=“7”
REDHAT_SUPPORT_PRODUCT=“centos”
REDHAT_SUPPORT_PRODUCT_VERSION=“7”
2、查看系统内核版本
[root@slave1 soft]# uname -r
3.10.0-957.10.1.el7.x86_64
3、 解压haproxy包
[root@slave1 soft]# tar zxvf haproxy-1.8.25.tar.gz
4、 安装依赖包
1) 查看gcc是否安装
[root@slave1 soft]# gcc -v
如果已安装会显示出安装信息,若没有安装执行步骤2)
2)
[root@slave1 soft]# yum install -y gcc
或者
[root@slave1 soft]# yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate
编译需要GCC来编译,下边一条安装了众多常用的工具。
5、编译安装
[root@slave1 soft]# cd haproxy-1.8.25
[root@slave1 soft]# make TARGET=linux2628 PREFIX=/usr/local/haproxy
haproxy编译需要指定对应的内核版本,此参数可以查看README文件中有对应的值linux2628
[root@slave1 soft] # make install PREFIX=/usr/local/haproxy
6、将haproxy拷贝到/usr/sbin/目录下
root@slave1 soft]# cp -rf /usr/local/haproxy/sbin/haproxy /usr/sbin/
7、查看当前版本
[root@slave1 sbin]# haproxy -v
HA-Proxy version 1.8.25 2020/04/02
Copyright 2000-2020 Willy Tarreau willy@haproxy.org
8、添加配置文件
[root@slave1 sbin]# mkdir /usr/local/haproxy/conf
[root@slave1 sbin]# vim /usr/local/haproxy/conf/haproxy.conf
配置文件内容如下(精简配置):
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend web_servers
backend web_servers
server server1 127.0.0.1:8000 maxconn 32
9、启动haproxy
[root@slave1 sbin] haproxy -f /usr/local/haproxy/conf/haproxy.conf
停止命令:killall haproxy
10、启动报错问题解决
问题一:Starting proxy websrv: cannot bind socket [0.0.0.0:80]
查看netstat -ntpl
如果有80端口,说明80被占用了,只需要找到程序关闭即可,一般是apache的进程
问题二:
Starting proxy rabbitmq_cluster: cannot bind socket [0.0.0.0:80]
尝试将防火墙关闭,应该是防火墙规则导致
问题三:
HAProxy cannot bind socket [0.0.0.0:80]
应该是selinux问题,尝试关闭selinux
或者 setsebool -P haproxy_connect_any=1
问题解决
1、将VIP、LVS等内容清理干净!!!!!
删除所有设备的VIP,清空所有LVS设置,关闭keepalived!!!
vi /etc/sysctl.conf #修改内核参数
net.ipv4.ip_nonlocal_bind = 1 #没有就新增此条记录
sysctl -p #保存结果,使结果生效
说明:net.ipv4.ip_nonlocal_bind = 1 意思是启动haproxy的时候,允许忽视VIP的存在
2、确认是否开启内核的转发功能
临时开启 echo 1 > /proc/sys/net/ipv4/ip_forward
永久生效 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
3、确保在开启haproxy服务器前已经关闭apache或nginx等WEB服务