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

 

验证是否成功

 

猜你喜欢

转载自blog.csdn.net/chuanxincui/article/details/82856411