安装rabbitmq
- 首先在两台不同的主机上安装好rabbitmq
- 安装好rabbitmq 后需要将每个主机上的rabbitmq节点启动,输入下面命令:
sudo rabbitmq-server -detached - 本人由于用的是debian主机测试,而我测试的每个主机的名字都是一样,所以需要修改hosts 文件中的主机名称,这样你启动rabbitmq后node的名称就不会和其他主机一样了,操作步骤为:
修改/etc/hosts文件中的主机条目(127.0.1.1)和hostname文件(这个文件只包含你的设备的名字)。修改之后会在系统重启之后生效。 - 要实现rabbitmq 集群 ,官网有详细的步骤,大家可以去看。
- 首先在 /etc/hosts 文件中添加以下内容:
192.168.0.180 ip-192-168-0-180 <此名字和修改后的主机名字一样>
192.168.0.112 ip-192-168-0-112
要集群的每个主机都需要添加上述内容 - 修改每个主机中的/var/lib/rabbitmq/.erlang.cookie 文件,随便用哪一个主机中的字符串都好可以,但是最后要保证每个主机的该个文件里面的内容是一致的。
- 接下来的步骤就是开始创建集群了,rabbitmq官网有详细的步骤,链接如下:
https://www.rabbitmq.com/clustering.html
安装haproxy
- 下载haproxy,以下是详细步骤
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
tar xfz haproxy-1.4.24.tar.gz
cd haproxy-1.4.24
sudo make TARGET=generic
安装完后再build目录下会有一个名为haproxy 的文件,我不知道是不是因为我make的时候用的sudo 所以haproxy 所属用户组为root 。 - 编写haproxy的配置文件
- 在安装目录下创建一个目录
mkdir conf - 创建配置文件
sudo nano haproxy_rabbitmq.conf - 输入以下内容
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /home/pi/haproxy-1.4.24
uid 99
gid 99
daemon
quiet
nbproc 2
pidfile /home/pi/haproxy-1.4.24/haproxy.pid
#load balancing defaults
defaults
log global
#使用4层代理模式,"mode http"为7层代理模式
mode tcp
#if you set mode to tcp,then you nust change tcplog into httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5s
clitimeout 120s
srvtimeout 120s
#front-end IP for consumers and producters
listen rabbitmq_local_cluster 192.168.0.104:5670
#配置TCP模式
mode tcp
#balance url_param userid
#balance url_param session_id check_post 64
#balance hdr(User-Agent)
#balance hdr(host)
#balance hdr(Host) use_domain_only
#balance rdp-cookie
#balance leastconn
#balance source //ip
#简单的轮询
balance roundrobin
#rabbitmq集群节点配置
server rabbit_112 192.168.0.112:5672 check inter 5000 rise 2 fall 2
server rabbit_180 192.168.0.180:5672 check inter 5000 rise 2 fall 2
#配置haproxy web监控,查看统计信息
listen private_monitoring :8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/rabbitmq-stats
stats uri /rabbitmq-stats
stats refresh 5s
该处参考链接为:(http://flyingdutchman.iteye.com/blog/1912690)
- 在安装目录下创建一个目录
- 配置文件保存完后就可以运行haproxy ,在安装目录下执行命令执行命令如下:
sudo ./ haproxy -f /home/pi /haproxy-1.4.24/conf/haproxy_rabbitmq.conf
由于没有将haproxy 复制一份至/usr/sbin/目录下,所以无法直接运行 haproxy命令。为了以后命令执行方便,将安装目录的haproxy 复制一份至/usr/sbin目录
cp haproxy /usr/sbin/haproxy - 命令运行成功后 ,输入 http://192.168.0.104:8100/rabbitmq-stats 既可以进入管理页面。
注:在应用程序中连接rabbimq 负载可以通过 192.168.0.104 来连接rabbitmq port 为5670 这和你在配置文件配置的内容是一致的 - 设置haproxy 开机启动
- 第一种方法是:
直接将上述命令 加入到 /etc/rc.local 文件中 exit0 之前 保存即可。 - 第二种方法是编写启动脚本:
编写名为haproxy 的脚本将其放在/etc/init.d/目录下。脚本内容如下:
#! /bin/sh## haproxy LVS cluster monitor daemon.## Written by Andres Salomon#
### BEGIN INIT INFO
# Provides: haproxy
# Required-Start: $syslog $network $remote_fs
# Required-Stop: $syslog $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts haproxy
# Description: Starts haproxy lvs loadbalancer
### END INIT INFO
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
PROGDIR=/usr
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=/home/pi/haproxy-1.4.24/conf/haproxy_rabbitmq.conf
PIDFILE=/home/pi/haproxy-1.4.24/haproxy.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
echo -n "Starting $DESC: $PROGNAME"
sudo $DAEMON -f $CONFIG
echo "."
}
stop()
{
echo -n "Stopping $DESC: $PROGNAME"
haproxy_pid=cat $PIDFILE
sudo pkill -9 $PROGNAME
echo "."
}
restart()
{
echo -n "Restarting $DESC: $PROGNAME"
$DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
echo "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
该脚本也是我从其他人那边修改而来的,所以有错误之处还希望大家能够指出 - 将该脚本加入到开机启动项中
sudo chmod +x haproxy
sudo update-rc.d haproxy defaults
- 第一种方法是: