linux系统消息中间件rabbitmq普通集群的部署

rabbitmq普通集群的部署

普通集群准备环境

配置hosts⽂件更改三台MQ节点的计算机名分别为rabbitmq-1、rabbitmq-2 和rabbitmq-3,然后修改hosts配置⽂件

shell 复制代码
hostnamectl set-hostname rabbitmq-1
hostnamectl set-hostname rabbitmq-2
hostnamectl set-hostname rabbitmq-3
更改完主机名后重新连接终端后继续下续操作

vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
ip rabbitmq-1
ip rabbitmq-2
ip rabbitmq-3

查询版本对应

复制代码
# rabbitmq 和erlang兼容版本查询
https://www.rabbitmq.com/which-erlang.html

# erlang 版本选择
https://packagecloud.io/rabbitmq/erlang

# rabbitmq 版本选择
https://www.rabbitmq.com/news.html

安装rabbitmq软件

shell 复制代码
#安装依赖
yum install -y epel-release gcc-c++ unixODBC unixODBC-devel openssl-devel ncurses-devel

#yum安装erlang的rpm安装包
[root@rabbitmq-1 ~]# yum install erlang-21.3.8.21-1.el7.x86_64


#yum安装rabbitmq
yum install rabbitmq-server-3.7.10-1.el7.noarch.rpm

启动

ini 复制代码
#启动方式一
systemctl daemon-reload
systemctl start rabbitmq-server
systemctl enable rabbitmq-server

#启动方式二
/sbin/service rabbitmq-server status  ---查看状态
/sbin/service rabbitmq-server start   ---启动

#开启rabbitmq的web访问界面
rabbitmq-plugins enable rabbitmq_management

创建登录用户

ini 复制代码
注意:在一台机器操作
添加用户和密码
rabbitmqctl add_user 用户名 密码

设置为管理员
rabbitmqctl set_user_tags newrain administrator

查看用户
rabbitmqctl list_users


此处设置权限时注意'.*'之间需要有空格 三个'.*'分别代表了conf权限,read权限与write权限
rabbitmqctl set_permissions -p "/" 用户名 ".*" ".*" ".*"

开启用户远程登录

shell 复制代码
cd /etc/rabbitmq/
cp /usr/share/doc/rabbitmq-server-3.7.10/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

vim rabbitmq.config
修改如下:
shell 复制代码
#修改完之后重启rebbitmq-server
systemctl restart rabbitmq-server

查看端口

shell 复制代码
4369 -- erlang发现端口
5672 --程序连接访问端口
15672 -- 管理界面ui端口,web页面查询端口
25672 -- server间内部通信口

rabbitmq默认管理员
用户:guest   
密码:guest

注意:如果是云服务器,切记添加安全组端口放行。

部署集群

创建数据存放目录和日志存放目录:

shell 复制代码
mkdir -p /data/rabbitmq/data
mkdir -p /data/rabbitmq/logs
chmod 777 -R /data/rabbitmq
chown rabbitmq.rabbitmq /data/ -R

#创建配置文件
vim /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/logs

#重启服务
systemctl restart rabbitmq-server

拷⻉erlang.cookie

复制代码
cat /var/lib/rabbitmq/.erlang.cookie

⽤scp的⽅式将1节点的.erlang.cookie的值复制到其他两个节点中
scp /var/lib/rabbitmq/.erlang.cookie root@ip:/var/lib/rabbitmq/

Rabbitmq的集群是依附于erlang的集群来⼯作的,所以必须先构建起erlang的集群景象。Erlang的集群中

各节点是经由过程⼀个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,⽂件是400的权限。所以必须保证各节点cookie⼀致,不然节点之间就⽆法通信.

如果执行#rabbitmqctl stop_app 这条命令报错:需要执行
#chmod 400 .erlang.cookie
#chown rabbitmq.rabbitmq .erlang.cookie

将其他两台服务器作为节点加⼊节点集群中

shell 复制代码
在其他两台服务器执⾏如下命令:
systemctl restart rabbitmq-server

rabbitmqctl stop_app  #停止节点

rabbitmqctl reset     #如果有数据需要重置,没有则不用

rabbitmqctl join_cluster --ram rabbit@主节点ip或主机名  #添加内存节点   
rabbitmqctl join_cluster rabbit@主节点ip或主机名        #添加磁盘节点

rabbitmqctl start_app   #启动节点

如果想要更改节点类型,可以使⽤命令rabbitmqctl change_cluster_node_type disc(ram)
前提是必须停掉rabbit应⽤

查看集群状态

shell 复制代码
在Rabbit MQ集群任意节点上执行rabbitmq ctlcluster_status来查看是否集群配置成功。

rabbitmqctl cluster_status

创建新的队列

根据界⾯提示创建⼀条队列

!

在RabbitMQ集群集群中,必须⾄少有⼀个磁盘节点,否则队列元数据⽆法写⼊到集群中,当磁盘节点宕掉时,集群将⽆法写⼊新的队列元数据信息。

相关推荐
女神下凡27 分钟前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
且从容.4 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道4 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.7 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落9 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨9 小时前
WSL2的安装与使用
linux·wsl
微小的鱼9 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng9 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮10 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky1 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu