在win下cmd(Windows向centos7(lunix)发送文件):
Centos7:给用户或用户组分配文件夹权限:
1. 将 /opt
目录的所有者更改为 username:
sudo chown username /opt
2. 将 /opt
目录的所有者更改为 username
,所属组更改为 groupname:
sudo chown username:groupname /opt
rpm -ivh erlang-21.3-1.el7.x86_64.rpm
yum install socat -y
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
查看安装路径:rpm -ql rabbitmq-server
查看安装状态:rpm -qa | grep rabbitmq
# 添加开机启动 RabbitMQ 服务
chkconfig rabbitmq-server on
# 启动服务 sudo systemctl start rabbitmq-server
# 查看服务状态 sudo systemctl status rabbitmq-server
6.添加主机名和本地ip的映射原因:
1. 解析主机名:RabbitMQ 在启动时会使用主机名来标识节点。
2. 一致性: 在集群环境中,所有节点上的主机名和 IP 映射必须一致,
以确保节点之间的通信不会出问题。
3. 集群通信: 在多节点集群中,节点之间需要通过主机名进行通信。
7.配置防火墙, 开放 15672 端口(web 管控台访问端口), 否则外网无法访问
1) 防火墙开启端口访问
firewall-cmd --zone=public --add-port=15672/tcp --permanent
2) 开启后需要重启防火墙才生效
firewall-cmd –-reload
3) 执行
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,网关
多机单节点集群搭建:
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.*.*:匹配所有新闻,无论地区和类别。