RabbitMQ依赖于ErLang(面向并发的编程语言)
下载最新版Erlanghttp://www.erlang.org/download.html,然后安装,设置环境变量
ERLANG_HOME=E:\erl7.1(erlang安装位置)
添加到PATH: ;% ERLANG_HOME%\bin
下载地址:http://www.rabbitmq.com/download.html
官网安装教程http://www.rabbitmq.com/install-windows.html
设置环境变量:RABBITMQ_SERVER=E:\RabbitMQ Server\rabbitmq_server-3.5.6(rabbitmq服务安装位置)
添加到PATH: ;% RABBITMQ_SERVER%\sbin
命令行中运行rabbitmq-service,出现下面的界面证明配置成功
使用可视化的方式查看RabbitMQ的服务实例状态,激活方式:
进入% RABBITMQ_SERVER%\sbin目录,执行rabbitmq-plugins.bat enable rabbitmq_management
然后重启服务即可生效:net stop RabbitMQ --> net start RabbitMQ(不区分大小写)
访问http://localhost:15672 默认用户名密码都是guest
针对web管理界面,在overview视图最下方可以导出当前所有配置的json数据,也可以更改json文件,上传到web管理界面,刷新即可看到相关修改
(可选的)为了避免未签名的错误信息,请使用apt-key命令将公钥添加到你的可信任密钥列表中:
wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo apt-key add rabbitmq-signing-key-public.asc
更新仓库:
apt-get update
安装服务:
sudo apt-get install rabbitmq-server
激活rabbitmq的管理插件
sudo rabbitmq-plugins enable rabbitmq_management
开启服务:
sudo rabbitmq-server
停止rabbitmq的服务:
sudo rabbitmqctl stop
查看其代理状态:
sudo rabbitmqctl status
测试Erlang是否安装成功:命令行下输入erl,可进入Erlang的Eshell模式
测试RabbitMQ,开启服务后访问http://localhost:15672
下载最新版erlang OTP18.1
wget http://www.erlang.org/download/otp_src_18.1.tar.gz
解压
tar -zxvf otp_src_18.1.tar.gz -C /
在编译前可能会遇到缺少依赖包的问题
*********************************************************************
********************** APPLICATIONS DISABLED **********************
*********************************************************************
crypto : No usable OpenSSL found
jinterface : Java compiler disabled by user
odbc : ODBC library - link check failed
orber : No C++ compiler found
ssh : No usable OpenSSL found
ssl : No usable OpenSSL found
*********************************************************************
可依次安装
yum -y install ncurses-devel
yum -y install openssl-devel
yum -y install unixODBC-devel
yum -y install gcc-c++
编译以及安装
mkdir /home/erlang
cd otp_src_18.1/
./configure --prefix=/home/erlang --without-javac
make && make install
配置环境变量:
vim /etc/profile
export ERLANG_HOME=
export PATH=$PATH:$ERLANG_HOME/bin
输入erl即可进入其shell模式
下载最新版rabbitmq-server-3.5.6
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6.tar.gz
然后解压
tar -zxvf rabbitmq-server-3.5.6.tar.gz -C /
编译前安装其依赖包,否则会报错:/bin/sh: xmlto: command not found
yum -y install xmlto
进行编译:
make
make install TARGET_DIR=/usr/rabbitmq SBIN_DIR=/usr/rabbitmq/sbin MAN_DIR=/usr/rabbitmq/man DOC_INSTALL_DIR=/usr/rabbitmq/doc
为了方便使用rabbitmq的相关启动等命令,将其配置到环境变量下
vim /etc/profile
export RABBITMQ_HOME=/usr/rabbitmq
export PATH=$PATH:$RABBITMQ_HOME/sbin
安装web插件管理界面:
mkdir /etc/rabbitmq
rabbitmq-plugins enable rabbitmq_management
启动 即可访问管理界面:
rabbitmq-server start
停止:
rabbitmqctl stop
首先有四台机器,一台使用磁盘模式,另外两台使用内存模式,这三台的rabbitmq已经搭建好,然后下面进行集群的配置
前三台用于搭建rabbitmq集群,第四台用于提供对rabbitmq的负载均衡
192.168.111.128 liuzhaoqiang128
192.168.111.129 liuzhaoqiang129
192.168.111.130 liuzhaoqiang130
192.168.111.131 liuzhaoqiang131
由于Rabbitmq的集群依赖erlang的集群,所以需要构建erlang集群,erlang集群之间是通过magic cookie实现的,这个cookie存放在$HOME/.erlang.cookie,随便选取一个节点的cookie复制到另外两个节点使三台保持一致
scp .erlang.cookie root@liuzhaoqiang129:/root
scp .erlang.cookie root@liuzhaoqiang130:/root
设置好之后即可重启rabbitmq
在遇到增加或停止节点时这一步是必要的
root@liuzhaoqiang128#rabbitmqctl stop
root@liuzhaoqiang129#rabbitmqctl stop
root@liuzhaoqiang130#rabbitmqctl stop
root@liuzhaoqiang128#rabbitmq-server detached
root@liuzhaoqiang129# rabbitmq-server detached
root@liuzhaoqiang130# rabbitmq-server detached
可以查看每个节点上的集群信息:
rabbitmqctl cluster_status
将liuzhaoqiang129和liuzhaoqiang130作为内存节点与liuzhaoqiang128连接起来,分别在两台内存节点上执行以下命令
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@liuzhaoqiang128
rabbitmqctl start_app
其中--ram代表是内存节点,如果希望是磁盘节点则不用加--ram,在rabbitmq集群中,至少需要一个磁盘节点
然后可以使用localhost:15672即可访问,可以查看到三台节点的信息
上面搭建的仅仅是普通集群,虽然交换机、绑定等可以复制到集群的其他节点,但是队列内容不会复制,如果队列宕机将会导致队列无法使用,不能保证队列的高可用性。
更多详情:http://my.oschina.net/moooofly/blog/94113
会监听5672端口,轮询每个内存节点
安装haproxy
yum -y install haproxy
修改/etc/haproxy/haproxy.cfg文件
# round robin balancing between the various backends
#---------------------------------------------------------------------
listen rabbitmq_cluster 192.168.111.131:5670
mode tcp
balance roundrobin
server rqslave1 192.168.111.129:5672 check inter 2000 rise 2 fall 3
server rqslave2 192.168.111.130:5672 check inter 2000 rise 2 fall 3
server rqmaster 192.168.111.128:5672 check inter 2000 rise 2 fall 3
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
将所有队列设置为镜像队列,队列会被复制到各个节点,状态保持一致
rabbitmqctl set_policy -p newvhost ha-allqueue"^rqmessage" '{"ha-mode":"all"}'
这行命令在vhost名称为newvhost创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。
更多介绍在http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
在haproxy.cfg配置文件中
listen rabbitmq_cluster 0.0.0.0:5670上面增加下列内容
listen monitoring_stats //自定义listener
bind *:8100
mode http
option httplog
stats enable
stats uri /stats //访问的uri ip:8100/stats
stats auth admin:admin //客户端连接需要认证用户名和密码
#stats hide-version
stats admin if TRUE //管理界面,如果认证成功了,可通过webui管理节点
stats refresh 5s //统计页面自动刷新时间
将默认的负载均衡选项删除:
backend static
balance roundrobin
server static 127.0.0.1:4331 check
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
启动haproxy:service haproxy start
http://192.168.111.131:8100/stats访问监控界面
可以监控到整个集群状态,客户端在连接的时候可以访问131这台主机5670端口,并且使用认证用户名和密码既可以通过haproxy访问其他几台rabbitmq服务器,作负载均衡以及故障转移操作