您的位置:首页 > 运维架构 > Linux

centos6.5安装rabbitmq 3.6.9

2017-07-28 14:17 387 查看
1. 安装 erlang
1.1 准备工作,先安装依赖库
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel yum install ncurses-devel

1.2 下载erlang源码 
wget wget http://erlang.org/download/otp_src_19.3.tar.gzcp otp_src_19.3.tar.gz /usr/src/otp_src_19.3.tar.gzcd /usr/srctar -xzvf
otp_src_19.3.tar.gz mv otp_src_19.3 erlang_193

1.3 编译安装
cd erlang_193/ ./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac //不用java编译,故去掉java避免错误 make && make
install //编译后安装

1.4 配置环境变量
vi /etc/profile # erlang path begin
ERL_HOME=/usr/local/erlang
export PATH=$PATH:$ERL_HOME/bin
# erlang path end

source /etc/profile #使设置立即生效

2 安装rabbitmq
cd /usr/local
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_9/rabbitmq-server-generic-unix-3.6.9.tar.xz #wget如果失败,手工下载本地再上传
xz -d
rabbitmq-server-generic-unix-3.6.9.tar.xz
tar xvf
rabbitmq-server-generic-unix-3.6.9.tar
mv
rabbitmq_server-3.6.9 rabbitmq

#启动rabbitmq服务
/data/rabbitmq/sbin/rabbitmq-server

#后台启动
/data/rabbitmq/sbin/rabbitmq-server -detached

#关闭rabbitmq服务
/data/rabbitmq/sbin/rabbitmqctl stop

ps -ef | grep rabbit 和 kill -9 xxx

#开启插件管理页面
/data/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management

#创建用户并分配角色
/data/rabbitmq/sbin/rabbitmqctl add_user
user password
/data/rabbitmq/sbin/rabbitmqctl set_user_tags
user administrator
/data/rabbitmq/sbin/rabbitmqctl  set_permissions -p /  user '.*' '.*' '.*'  

#WEB登录 http://IP:15672 名户名和密码默认guest无法外网登陆

查看插件列表
./rabbitmq-plugins list

2.5 常用命令

------------------------------------------------
3 集群配置
先配置两个节点主机hosts可以互相ping通
vi /etc/hosts

ip1 host1

ip2
host2
先停止node2(设置cookie前必须先停止节点,网上资料都没有说到)

/data/rabbitmq/sbin/rabbitmqctl stop
node1 cookie:

***********
设置 Erlang Cookie与node1保持一致

通过源安装RabbitMQ在 /var/lib/rabbitmq/.erlang.cookie

通过源码安装RabbitMQ在 $HOME/.erlang.cookie

修改 node2 该文件权限为 777

chmod 777 /root/.erlang.cookie

从node1复制cookie到node2

scp -r
ip1:/root/.erlang.cookie /root/

查看cookie

cat /root/.erlang.cookie

恢复只读权限

chmod 400 /root/.erlang.cookie
重新启动node2

/data/rabbitmq/sbin/rabbitmq-server -detached
查看node1名称

/data/rabbitmq/sbin/rabbitmqctl cluster_status
node2停止应用(不停止节点)

/data/rabbitmq/sbin/rabbitmqctl stop_app
node2加入集群
/data/rabbitmq/sbin/rabbitmqctl join_cluster
rabbit@host1
启动node2

/data/rabbitmq/sbin/rabbitmqctl start_app
更改节点为磁盘或内存节点(可选)

rabbitmqctl change_cluster_node_type disc/ram
配置镜像队列

/data/rabbitmq/sbin/rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' # automatic 自动同步 manual 手动同步
同步命令

手动同步 rabbitmqctl sync_queue name 取消同步rabbitmqctl cancel_sync_queue name
4  RABBITMQ退出集群
假设要把rabbitmq2退出集群
在rabbitmq2上执行
#rabbitmqctl stop_app
#rabbitmqctl reset
#rabbitmqctl start_app
 
在集群主节点上执行
# rabbitmqctl forget_cluster_node rabbit@host2
5   RABBITMQ集群重启
集群重启时,最后一个挂掉的节点应该第一个重启,如果因特殊原因(比如同时断电),而不知道哪个节点最后一个挂掉。可用以下方法重启:
先在一个节点上执行
#rabbitmqctl force_boot
#service rabbitmq-server start
在其他节点上执行
#service rabbitmq-server start
查看cluster状态是否正常(要在所有节点上查询)。
#rabbitmqctl cluster_status
 
如果有节点没加入集群,可以先退出集群,然后再重新加入集群。
上述方法不适合内存节点重启,内存节点重启的时候是会去磁盘节点同步数据,如果磁盘节点没起来,内存节点一直失败。
6   注意事项

cookie在所有节点上必须完全一样,同步时一定要注意。

erlang是通过主机名来连接服务,必须保证各个主机名之间可以ping通。可以通过编辑/etc/hosts来手工添加主机名和IP对应关系。如果主机名ping不通,rabbitmq服务启动会失败。

如果queue是非持久化queue,则如果创建queue的那个节点失败,发送方和接收方可以创建同样的queue继续运作。但如果是持久化queue,则只能等创建queue的那个节点恢复后才能继续服务。

在集群元数据有变动的时候需要有disk node在线,但是在节点加入或退出的时候所有的disk node必须全部在线。如果没有正确退出disk node,集群会认为这个节点当掉了,在这个节点恢复之前不要加入其它节点。.

centos
  RabbitMQ的配置文件为:/etc/rabbitmq/rabbitmq.config
  RabbitMQ的环境配置文件为:/etc/rabbitmq/rabbitmq-env.conf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: