安装方式:自定义安装
服务器环境:Centos7.5
haproxy版本:2.5.7
keepalived版本:2.0.20
HAProxy官方下载地址为: https://www.haproxy.org/#down,如果这个网站无法访问,也可以从 hkps:/src.fedoraproject.org/repo/pkgs/haproxy/上进行下载。这里我下载的是2.5.7版本,下载后通过xftp等工具将压缩包上传至服务器的/usr/app/目录下,其中app文件夹需要自己提前创建好,然后进行解压:
cd /usr/local
tar -zxvf haproxy-2.5.7.tar.gz
yum -y install make gcc gcc-c++ libpcre3-dev openssl libssl-dev zlib1g-dev
cd /usr/local/haproxy-2.5.7
make TARGET=3100 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install TARGET=3100 ARCH=x86_64 PREFIX=/usr/local/haproxy
mkdir -p /usr/local/haproxy/conf
mkdir -p /etc/haproxy/
touch /usr/local/haproxy/conf/haproxy.cfg
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg
cp -r /usr/local/haproxy-2.5.7/examples/errorfiles /usr/local/haproxy/
ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles
cp /usr/local/haproxy-2.5.7/examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin
chkconfig --add haproxy
chkconfig haproxy on
HAProxy配置文件有指定用户和用户组,以及chroot运行路径:
groupadd haproxy
useradd -g haproxy haproxy
mkdir /usr/share/haproxy
vi /usr/local/haproxy/conf/haproxy.cfg
配置文件内容如下:
global
log 127.0.0.1 local0
chroot /usr/share/haproxy
group haproxy
user haproxy
daemon
maxconn 4096
node edu-haproxy-01
description edu-haproxy-01
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen stats
bind 0.0.0.0:8000
mode http
stats enable
stats hide-version
stats uri /haproxystats
stats realm Haproxy\stats
stats auth admin:admin
stats admin if TRUE
frontend http-in
bind 0.0.0.0:5672
mode tcp
log global
option httplog
option httpclose
default_backend rabbitmq-server
backend rabbitmq-server
mode tcp
balance roundrobin
server rabbitmq-node1 192.168.45.201:5672 maxconn 2000 weight 1 check inter 5s rise 2 fall 2
server rabbitmq-node2 192.168.45.202:5672 maxconn 2000 weight 1 check inter 5s rise 2 fall 2
server rabbitmq-node3 192.168.45.203:5672 maxconn 2000 weight 1 check inter 5s rise 2 fall 2
yum -y install rsyslog
vi /etc/rsyslog.conf
# Provides UDP syslog reception
# 打开下面的配置
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
# 打开下面的配置
$ModLoad imtcp
$InputTCPServerRun 514
在/etc/rsyslog.d/目录下创建 haproxy的日志配置文件haproxy.log
vi /etc/rsyslog.d/haproxy.log
添加配置内容如下:
local0.* /var/log/haproxy.log
&~
systemctl restart rsyslog.service
需要参考haproxy中的配置文件“/usr/local/haproxy/conf/haproxy.cfg”,该文件中使用到了哪些端口就开启哪些端口即可;我这里使用到了8000和5672端口;
# 查看防火墙状态,如果未开启防火墙,那么需要先开启防火墙
firewall-cmd --state
# 开启防火墙
systemctl start firewalld.service
#查看已开启的端口
firewall-cmd --list-ports
#开启指定端口
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --zone=public --add-port=5672/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --reload
systemctl start haproxy
systemctl status haproxy
管理后台地址:http://192.168.45.191:8000/haproxystats
账号:admin
密码:admin


按照上述步骤安装完毕两台haproxy:
haproxy-01:192.168.45.191
haproxy-02:192.168.45.192
计划配置虚拟ip:192.168.45.190
下载地址:https://www.keepalived.org/download.html
cd /usr/local/
tar -zxvf keepalived-2.0.20.tar.gz
yum -y install openssl-devel libnl libnl-devel
cd keepalived-2.0.20/
./configure --prefix=/usr/local/keepalived
make && make install
编译安装后会生成以下文件路径:
/usr/local/etc/keepalived/keepalived.conf
/usr/local/etc/sysconfig/keepalived
/usr/local/sbin/keepalived
# keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
# 将keepalived主程序加入到环境变量(安装目录下)
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
# keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用
cp /usr/local/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
# 将keepalived配置文件放到默认路径下
mkdir /etc/keepalived
touch /etc/keepalived/keepalived.conf
haproxy-01的keepalived.conf配置文件内容如下:
! Configuration File for keepalived
global_defs {
router_id director1
}
vrrp_script check_haproxy {
script "/etc/keepalived/haproxy_chk.sh"
interval 5
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.45.190
}
track_script {
check_haproxy
}
}
haproxy-02的keepalived.conf配置文件内容如下:
! Configuration File for keepalived
global_defs {
router_id director2
}
vrrp_script check_haproxy {
script "/etc/keepalived/haproxy_chk.sh"
interval 5
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 80
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.45.190
}
track_script {
check_haproxy
}
}
# 添加为系统服务
chkconfig –-add keepalived
# 设置开机启动
chkconfig keepalived on
# 启动、关闭、重启、查看 keepalived
systemctl starts keepalived
systemctl stop keepalived
systemctl restart keepalived
systemctl status keepalived

