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