1.单个mq搭建
一、安装Erlang环境
1、 在安装erlang之前先安装下依赖文件(这一步不要忘掉了, 不然后面./configure的时候要报错):
yum install -y gcc glibc-devel make ncurses-devel openssl openssl-devel xmlto perl
yum install -y unixODBC unixODBC-devel
2、 到erlang官网去下载erlang安装包
wget http://erlang.org/download/otp_src_20.2.tar.gz
放到了/usr/local目录下,执行命令:cd /usr/local
上传完毕后,接下来解压:
tar -zxvf otp_src_20.2.tar.gz
cd otp_src_20.2/
3、 编译与安装
在otp_src_20.2目录下执行:./configure --prefix=/usr/local/erlang
make && make instal
4、 配置环境变量
[root@localhost bin]# vi /etc/profile
在末尾加入这么一行即可:export PATH=$PATH:/usr/local/erlang/bin
更新配置文件[root@localhost bin]# source /etc/profile
二、安装rabbitmq
1、 下载最新安装包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_15/rabbitmq-server-generic-unix-3.6.15.tar.xz
解压:
[root@localhost local]# xz -d rabbitmq-server-generic-unix-3.6.15.tar.xz
[root@localhost local]# tar -xvf rabbitmq-server-generic-unix-3.6.15.tar
2、配置rabbitmq的环境变量
[root@localhost local]# vi /etc/profile
在末尾加入以下配置:export PATH=$PATH:/usr/local/rabbitmq_server-3.6.15/sbin
启动:rabbitmq-server -detached
关闭:rabbitmqctl stop
查看状态:rabbitmqctl status
配置rabbitmq网页管理插件
启用插件:[root@localhost rabbitmq_server-3.6.15]# rabbitmq-plugins enable rabbitmq_management
rabbit端口默认为15672
三、使用rabbitmq
开启rabbitmq远程访问:
添加用户: rabbitmqctl add_user tester 123456a? // tester是用户名, 123456a?是用户密码
添加权限: rabbitmqctl set_permissions -p "/" tester ".*" ".*" ".*"
修改用户角色:rabbitmqctl set_user_tags tester administrator
此时,就可以输入用户名、密码进行登录了
2. MQ集群配置
1、配置hosts文件
3个主机上/etc/hosts新增配置(1,2,3节点)
10.221.2.6 mj_service
10.221.2.8 my_service
10.221.2.4 mj_front
2、将/root/.erlang.cookie 拷贝到其他两台主机,主机间交互通过5672 15672 25672 三个端口,需要提前放开
3、在02 03节点启动后执行以下命令
rabbitmqctl stop_app //停掉rabbit应用
rabbitmqctl join_cluster --ram rabbit@mj_service //加入到内存节点
rabbitmqctl start_app //启动rabbit应用
加入集群失败处理:
[root@my_service ~]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
[root@my_service ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@my_service
[root@my_service ~]# rabbitmqctl join_cluster --ram rabbit@mj_service
Clustering node rabbit@my_service with rabbit@mj_service
Error: {inconsistent_cluster,"Node rabbit@mj_service thinks it's clustered with node rabbit@my_service, but rabbit@my_service disagrees"}
[root@my_service ~]# rabbitmqctl reset
Resetting node rabbit@my_service
[root@my_service ~]# rabbitmqctl join_cluster --ram rabbit@mj_service
Clustering node rabbit@my_service with rabbit@mj_service
(1)默认rabbitmq启动后是磁盘节点,在这个cluster命令下,mq02和mq03是内存节点,mq01是磁盘节点。
(2)如果要使mq02、mq03都是磁盘节点,去掉–ram参数即可。
(3)如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用
4、集群状态查看
rabbitmqctl cluster_status
3.镜像集群配置
在mq01节点的控制台上创建策略
(1)点击admin菜单–>右侧的Policies选项–>左侧最下下边的Add/update a policy。
Name:策略名称
Pattern:匹配的规则,这里表示匹配a开头的队列,如果是匹配所有的队列,那就是^.
Definition:使用ha-mode模式中的all,也就是同步所有匹配的队列。问号链接帮助文档。
添加如上图的全匹配策略, 此时登陆 mq02 03 就能看到添加的策略
添加队列,查看同步结果
破坏性测试
停掉mq01节点,查看02 03 数据是否存在。停掉后结果如下,显示不可用。队列信息变为1
启动后状态恢复,但是队列显示为未同步,此时需要手工同步。命令如下
rabbitmqctl sync_queue ‘zyj test’
参考文档如下:
https://blog.51cto.com/11134648/2155934