haproxy负载均衡 rabbitmq消息队列集群
1 HAProxy的特点是:
HAProxy也是支持虚拟主机的。
HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
HAProxy负载均衡策略非常多
2 HAProxy安装包下载
官网已经被和谐掉了 暂时登录不了,因此只能通过其他途径获取安装包
本人使用的是 haproxy-1.7.0.tar.gz
3 先上完整自动化脚本
#!/bin/bash -x
nodeIp1=$1
nodeIp2=$2
HP_FILE_PATH="/app/rabbitmq/installFile"
HP_INSTALL_PATH="/usr/local/haproxy"
HP_CFG="/etc/haproxy/haproxy.cfg"
HP_INIT="/etc/init.d/haproxy"
HP_RSTSLOG="/etc/rsyslog.conf"
#install basic
function installBasic(){
yum install net-tools
yum install -y iptables-services
yum install -y wget tar lrzsz gzip gcc gcc-c++
yum install -y dos2unix
}
#install haproxy
function installHp(){
cd $HP_FILE_PATH
tar -zxvf haproxy-1.7.0.tar.gz
cd haproxy-1.7.0
make MALLOC=libc TARGET=linux2628 PREFIX=$HP_INSTALL_PATH
make install PREFIX=$HP_INSTALL_PATH
}
#copy file
function copyFile(){
cp ${HP_INSTALL_PATH}/sbin/haproxy /usr/sbin/
cp ${HP_FILE_PATH}/haproxy-1.7.0/examples/haproxy.init $HP_INIT
chmod 755 $HP_INIT
useradd -r haproxy
mkdir /etc/haproxy
cp ${HP_FILE_PATH}/haproxy.cfg /etc/haproxy/
sed -i "s/nodeIp1/${nodeIp1}/" $HP_CFG
sed -i "s/nodeIp2/${nodeIp2}/" $HP_CFG
}
#modify config file
function modifyConfigFile(){
sed -i 's/#$ModLoad/$$ModLoad/' $HP_RSTSLOG
sed -i 's/#$UDPServerRun/$UDPServerRun/' $HP_RSTSLOG
echo "local3.* /var/log/haproxy.log" >> $HP_RSTSLOG
}
# start service
function startService(){
systemctl daemon-reload
systemctl restart rsyslog
service haproxy start
#Set the startup haproxy
systemctl enable haproxy
}
# open port
function openPort(){
systemctl start firewalld
firewall-cmd --add-port=15672/tcp --permanent
firewall-cmd --add-port=5672/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
}
installBasic
installHp
copyFile
modifyConfigFile
startService
openPort
4 安装HAProxy(详细介绍)
4.1 查看内核版本
uname -r
3.2 解压并安装
tar -zxvf haproxy-1.7.0.tar.gz
cd haproxy-1.7.0
make TARGET=linux2628 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
安装成功后,查看版本
复制haproxy文件到/usr/sbin下
因为下面的haproxy.init启动脚本默认会去/usr/sbin下找,当然你也可以修改,不过比较麻烦。
cp /usr/local/haproxy/sbin/haproxy /usr/sbin/
复制haproxy脚本,到/etc/init.d下
cp ./examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
创建系统账号
useradd -r haproxy
创建配置文件
mkdir /etc/haproxy
vi /etc/haproxy/haproxy.cfg
配置文件内容如下:
global
log 127.0.0.1 local3 info
chroot /usr/local/haproxy
user haproxy
group haproxy
daemon
maxconn 4000
defaults
log global
mode http
option httplog
option dontlognull
option redispatch
retries 3
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats realm Haproxy Manager
stats auth admin:admin
stats refresh 30s
stats uri /haproxy?stats
default_backend http_back
listen rabbitmq_admin
bind *:15672
server node1 nodeIp1:15672
server node2 nodeIp2:15672
listen rabbitmq_cluster
bind *:5672
option tcplog
mode tcp
timeout client 3h
timeout server 3h
option clitcpka
balance roundrobin
server node1 nodeIp2:5672 check inter 2000 rise 3 fall 3 weight 30
server node2 nodeIp2:5672 check inter 2000 rise 3 fall 3 weight 30
backend http_back
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node1 nodeIp1:80 check inter 2000 rise 3 fall 3 weight 30
server node2 nodeIp2:80 check inter 2000 rise 3 fall 3 weight 30
打开rsyslog配置:
vi /etc/rsyslog.conf
去掉下面两行前面的#号
$ModLoad imudp
$UDPServerRun 514
并添加下面一行
local3.* /var/log/haproxy.log
重启rsyslog
systemctl restart rsyslog
# centos 6 中木有systemctl命令,可以使用下面的命令
# service rsyslog restart
启动haproxy
service haproxy start
验证是否成功