RabbitMQ安装及集群搭建

547 阅读2分钟

1、安装erlang

注意

RabbitMQ与erlang有版本依赖,请注意兼容性,具体我就不贴了,详情见 https://www.cnblogs.com/gne-hwz/p/10714013.html

正常下载地址

http://www.erlang.org/downloads

但是上面这个下载超级慢,我百度了下,用下面这个

https://www.erlang-solutions.com/resources/download.html

选操作系统

我是虚拟机安装的CentOS7,大家可以根据自己的机器情况安装:

选版本,我计划安装3.6.15的RabbitMQ,所以选的20.3:

下载

wget https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/esl-erlang_20.3-1~centos~7_amd64.rpm

安装

rpm -ivh esl-erlang_20.3-1~centos~7_amd64.rpm --nodeps --force

输入erl查看是否安装成功

2、安装simpleJson

下载地址

https://pypi.org/project/simplejson/#files

下载

wget https://files.pythonhosted.org/packages/49/45/a16db4f0fa383aaf0676fb7e3c660304fe390415c243f41a77c7f917d59b/simplejson-3.17.2.tar.gz

安装

3、安装安装RabbitMQ

下载地址

https://www.rabbitmq.com/releases/rabbitmq-server/

下载

wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-generic-unix-3.6.15.tar.xz

安装

tar -xvf rabbitmq-server-generic-unix-3.6.15.tar.xz

配置

vim /etc/profile
最后加上 export PATH=$PATH:/opt/rabbitmq/rabbitmq_server-3.6.15/sbin 根据自己的安装路径来

使修改生效

source /etc/profile

修改hosts,注意红圈地方要一致

vim/etc/hosts

启动

cd /opt/rabbitmq/rabbitmq_server-3.6.15/sbin/
./rabbitmq-server -detached 注意需root用户启动

查看是否启动成功

./rabbitmqctl status

出现这个就成功了,如果想远程访问

./rabbitmq-plugins enable rabbitmq_management
就可以访问了(非本机访问请关闭防火墙)

CentOS7关闭防火墙命令

systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service 永久关闭

访问

关于RabbitMQ的一些基本操作

$ sudo chkconfig rabbitmq-server on  # 添加开机启动RabbitMQ服务
$ sudo /sbin/service rabbitmq-server start # 启动服务
$ sudo /sbin/service rabbitmq-server -detached # 启动服务
$ sudo /sbin/service rabbitmq-server status  # 查看服务状态
$ sudo /sbin/service rabbitmq-server stop   # 停止服务

# 查看当前所有用户
$ sudo rabbitmqctl list_users

# 查看默认guest用户的权限
$ sudo rabbitmqctl list_user_permissions guest

# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
$ sudo rabbitmqctl delete_user guest

# 添加新用户
$ sudo rabbitmqctl add_user username password

# 设置用户tag
$ sudo rabbitmqctl set_user_tags username administrator

# 赋予用户默认vhost的全部操作权限
$ sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

# 查看用户的权限
$ sudo rabbitmqctl list_user_permissions username

至此单机版的RabbitMQ已经安装好了,如果只是单机安装,到这里就行了,下面是集群搭建

4、集群搭建

首先找到 .erlang.cookie

erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400。
官方在介绍集群的文档中提到过.erlang.cookie一般会存在这两个地址:
第一个是$home/.erlang.cookie;
第二个地方就是/var/lib/rabbitmq/.erlang.cookie。
如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在${home}目录下,也就是$home/.erlang.cookie。
如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。
我们可以通过rabbitmq的启动日志查看其home目录是哪里,就可以知道.erlang.cookie存放在哪里,以及mnesia数据库信息存在哪里。

找到RabbitMQ启动日志,我的在

然后查看home目录

.erlang.cookie就在/root下,复制出来将另外两个节点的.erlang.cookie覆盖掉(此处以localhost1作为主节点)

修改三台机器的hosts文件

开始

1.启动三个节点:
./rabbitmq-server -detached

2.然后在localhost2、localhost3上执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@localhost1
rabbitmqctl start_app

3.可通过./rabbitmqctl cluster_status查看集群状态

也可直接访问地址查看

如果之后节点挂掉,直接
./rabbitmq-server -detached
启动就可以了

设置镜像策略

普通模式:默认的集群模式。
镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案。只有配置了此模式,才能在主节点宕机后,正常使用。
参数详情

例子:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

清除:
rabbitmqctl clear_policy [-p <vhost>] <name>

查看:
rabbitmqctl list_policies [-p <vhost>]

这样就在主节点挂掉后也能正常使用了

5、结语

由于之前没搞过RabbitMQ,折腾了不短时间,总算是搞出来了,不是很详细,但是个人感觉够用了,如果有变动我会慢慢改动,网上找了很多教程,就不一一列出来了,在此谢谢各位写教程的前辈,也欢迎看这篇文章的大佬们指出小弟的不足之处,谢谢了!