0


rabbitmq 单机部署以及集群部署(多机单节点,单机多节点)

在win下cmd(Windows向centos7(lunix)发送文件):

  1. sftp 用户名@ip;
  2. cd 和 pwd 是centos7操作打开文件
  3. lcd,lpwd是windows操作打开文件
  4. 通过 put 文件名地址 centos7下文件夹名(put后加上-r发送整个文件夹)

Centos7:**给用户或用户组分配文件夹权限:**

  1. /opt
    

    目录的所有者更改为

    username:
    

    sudo chown username /opt

  2. /opt
    

    目录的所有者更改为

    username
    

    ,所属组更改为

    groupname:
    

sudo chown username:groupname /opt

  1. erlangrabbitmq****安装步骤:

  2. rabbitmq 需要 erlang 环境 :

rpm -ivh erlang-21.3-1.el7.x86_64.rpm

  1. rabbitmq 需要的依赖包

yum install socat -y

**# 安装 rabbitmq **

rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm

查看安装路径:rpm -ql rabbitmq-server

查看安装状态:rpm -qa | grep rabbitmq

  1. 配置和启动命令

添加开机启动 RabbitMQ 服务

chkconfig rabbitmq-server on

启动服务 sudo systemctl start rabbitmq-server

查看服务状态 sudo systemctl status rabbitmq-server

  1. 开启 web 管理插件:rabbitmq-plugins enable rabbitmq_management

*6.添加主机名和本地ip*的映射原因:

  1. 解析主机名:RabbitMQ 在启动时会使用主机名来标识节点。

  2. 一致性: 在集群环境中,所有节点上的主机名和 IP 映射必须一致,

以确保节点之间的通信不会出问题。

  1. 集群通信: 在多节点集群中,节点之间需要通过主机名进行通信。

**7.配置防火墙, 开放 15672 端口(web 管控台访问端口), **否则外网无法访问

  1. 防火墙开启端口访问

firewall-cmd --zone=public --add-port=15672/tcp --permanent

  1. 开启后需要重启防火墙才生效

firewall-cmd –-reload

  1. 执行

firewall-cmd --list-ports 查看端口

查看端口号:ss -tnlp

**8. 配置 RabbitMQ, guest **用户可以远程登录

  • 在/etc/rabbitmq 目录下创建 rabbitmq.config

在rabbitmq.config 中填写 [{rabbit,[{loopback_users,[]}]}].

重启MQ 生效。

9.开启MQTT****协议: rabbitmq-plugins enable rabbitmq_mqtt

**10.**后台启动节点:rabbitmq-server -detached

**11.**设置新的主机名:sudo hostnamectl set-hostname new_hostname

*12.设置虚拟机的固定IP*

进入centos7命令行界面,修改如下内容:

#cd /etc/sysconfig/network-scripts/
#sudo vi ifcfg-en33

修改:BOOTPROTO="static",更改BOOTPROTO为static;

添加:DNS1=114.114.114.114 #这个是国内的DNS地址,是固定的;

IPADDR=192.168.20.133 #你想要设置的固定IP;

NETMASK=255.255.255.0 #子网掩码,不需要修改;

GATEWAY=192.168.20.2,网关

多机单节点集群搭建:

  1. 配置端口和主机名映射并将主机1 克隆成主机2和3

2、将erlang.cookie 文件中 cookie 值 将node1中的 .erlang.cookie 同步到 rabbitmq@node2中

scp /var/lib/rabbitmq/.erlang.cookie rabbit@node2:/var/lib/rabbitmq/.erlang.cookie

3、Rabbitmq 集群添加节点

#重启 node2机器中 rabbitmq 的服务 在 node2执行

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster ‐‐ram rabbit@node1

rabbitmqctl start_app

(rabbitmq‐plugins enable rabbitmq_management

systemctl restart rabbitmq‐server.service)

4、查看集群信息 rabbitmqctl cluster_status

单机多节点

*1.查看当前RabbitMQ*服务,看到是在运行中,先暂停该服务。

ps aux|grep rabbitmq 或者systemctl status rabbitmq-server 查看服务状态,确保是能运行起来的 running中

systemctl status rabbitmq-server

停止服务

systemctl stop rabbitmq-server

*2.# 启动第一个节点rabbit-1*

sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &

启动第二个节点rabbit-2

注意:web管理插件端口占用,所以还要指定其web插件占用的端口号

RABBITMQ_SERVER_START_ARGS=”-rabbitmq_management listener [{port,15673}]”

sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit31 rabbitmq-server start &

验证启动

ps aux|grep rabbitmq

**3.#**绑定集群

rabbit-1操作作为主节点

#停止应用

sudo rabbitmqctl -n rabbit-1 stop_app

#目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)

sudo rabbitmqctl -n rabbit-1 reset

#启动应用

sudo rabbitmqctl -n rabbit-1 start_app

rabbit2操作为从节点

停止应用

sudo rabbitmqctl -n rabbit-2 stop_app

目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)

sudo rabbitmqctl -n rabbit-2 reset

将rabbit2节点加入到rabbit1(主节点)集群当中【Server-node服务器的主机名】

sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'songdanminserver'

启动应用

sudo rabbitmqctl -n rabbit-2 start_app

验证集群状态

sudo rabbitmqctl cluster_status -n rabbit-1

//集群有两个节点:rabbit-1@服务器主机名、rabbit-2@服务器主机名

4.Web****监控、设置账号密码

节点1设置用户、密码,管理权限,对虚拟机/的配置、写入读取权限

rabbitmqctl -n rabbit-1 add_user admin admin

rabbitmqctl -n rabbit-1 set_user_tags admin administrator

rabbitmqctl -n rabbit-1 set_permissions -p / admin "." "." ".*"

节点1设置用户、密码,管理权限,对虚拟机/的配置、写入读取权限

rabbitmqctl -n rabbit-2 add_user admin admin

rabbitmqctl -n rabbit-2 set_user_tags admin administrator

rabbitmqctl -n rabbit-2 set_permissions -p / admin "." "." ".*"

RabbitMQ 路由规则:

在 RabbitMQ 中,路由键(Routing Key)和绑定键(Binding Key)是两个关键的概念,它们共同决定了消息如何从生产者发送到正确的队列。理解它们之间的关系对于正确配置和使用 Topic 交换机尤为重要。

路由键(Routing Key)
定义:路由键是生产者在发送消息时指定的一个字符串,用于告诉交换机如何处理这条消息。
格式:通常是一个点分隔的字符串,例如 stock.usd.nyse。
作用:路由键用于匹配绑定键,从而决定消息应该被发送到哪些队列。
绑定键(Binding Key)
定义:绑定键是队列在绑定到交换机时指定的一个字符串,用于定义队列接收消息的条件。
格式:通常也是一个点分隔的字符串,可以包含通配符 * 和 #。
*:匹配一个单词。
#:匹配零个或多个单词。
作用:绑定键用于匹配路由键,从而决定哪些消息会被路由到该队列。

示例
假设我们有以下路由键和绑定键:

路由键:
stock.usd.nyse
stock.gbp.london
news.europe.politics
news.usa.economy
绑定键:
stock..:匹配所有股票相关的消息,无论货币和交易所。
stock.#:匹配所有股票相关的消息,无论货币和交易所。
news.
.politics:匹配所有政治相关的新闻,无论地区。
news.
.*:匹配所有新闻,无论地区和类别。


本文转载自: https://blog.csdn.net/a_12321321/article/details/142659689
版权归原作者 a_12321321 所有, 如有侵权,请联系我们删除。

“rabbitmq 单机部署以及集群部署(多机单节点,单机多节点)”的评论:

还没有评论