从零开始搭建RabbitMQ集群遇到的问题

news/2025/7/27 5:24:35

文章目录

  • 安装RabbitMQ
    • 安装el环境
    • 安装RabbitMQ
    • 启动RabbitMQ
    • 启动RabbitMQ管理界面
    • 宿主机连接RabbitMQ管理界面
  • RabbitMQ集群
    • 普通模式
    • 镜像模式

安装RabbitMQ

安装el环境

RabbitMQ运行在el环境,所以安装RabbitMQ之前必须安装el环境并且版本一定要对应,不能安装低版本的,使用百度云下好,再使用Xshell传入虚拟机

链接:https://pan.baidu.com/s/1tduTfuTbGZQrzafi95MLBA
提取码:szn7
下载得到otp_src_24.2.2.tar.gz

使用Xshell将otp_src_24.2.2.tar.gz传入虚拟机,使用Xshell的sftp协议,主机ip是在命令行输入ifconfig中ens33中的ip地址,第一次需要输入虚拟机登录账户root和密码
在这里插入图片描述
如果没有出现ens33,则有两种可能

  1. /etc/sysconfig/network-scripts目录下的ifcfg-ens33文件的ONBOOT=no,应该改为ONBOOT=yes
  2. 使用VMWare虚拟机时没有开启它的网络服务,如下,打开任务管理器里面的服务找到这几个打开就是了,DHCP动态主机配置协议用于分配IP地址,NAT网络地址转换协议用于转换内网和外网
    在这里插入图片描述
    第二天打开电脑虚拟机出现网络问题,如DNS域名解析不了,很可能就是重启后这些服务又关闭了

安装依赖,解压并安装erl,make & make install 可能报点小错,但是无关紧要。xshell一半传递文件到/root目录(使用root用户账号密码在Xshell上连接虚拟机时),反正一般 cd ~ 即可找到

cd ~
yum install -y gcc gcc-c++ unixODBC-devel  openssl-devel ncurses-devel
tar -zxvf otp_src_24.2.2.tar.gz
mv otp_src_24.2.2 /opt/erlang
cd /opt/erlang
./configure --prefix=/opt/erlang/ --with-ssl --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll --without-javac
make & make install 

配置环境变量

vim /etc/profile

添加如下配置,记得是添加,而不是覆盖,如果配置文件里面有export PATH这一行,只需在后面加上 :/opt/erlang/bin ,记住前面有个冒号,一般这行可能有配置的jdk所以在最后添加就行,如果没有export PATH这一行则直接添加到文件末尾就行

export PATH=$PATH:/opt/erlang/bin

运行如下命令让配置生效

source /etc/profile

查看是否安装成功

erl -version

出现如下情况则安装成功
在这里插入图片描述

安装RabbitMQ

进入网址
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.13
在这里插入图片描述
下载得到rabbitmq-server-3.9.13-1.el7.noarch.rpm

使用Xshell将rabbitmq-server-3.9.13-1.el7.noarch.rpm传入虚拟机,然后执行如下命令

rpm -import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
rpm -Uvh --nodeps rabbitmq-server-3.9.13-1.el7.noarch.rpm 

启动RabbitMQ

systemctl start rabbitmq-server

出现如下情况
在这里插入图片描述
输入journalctl -xe,出现如下情况,可以看到/usr/lib/rabbitmq/bin/rabbitmq-server的文件下找不到erl环境,而且是在73行,所以我们只需加上环境变量即可
在这里插入图片描述
输入vi后输入:73可以快速定位到73行

vi /usr/lib/rabbitmq/bin/rabbitmq-server
:73 

加入如下两行代码,不要覆盖任何东西

ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:/opt/erlang/bin

加入完后重新启动,并查看状态

systemctl start rabbitmq-server
systemctl status rabbitmq-server

出现如下情况表示运行成功
在这里插入图片描述

启动RabbitMQ管理界面

防火墙开放端口5672/tcp和15672/tcp,方便宿主机连接管理界面

firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

启动RabbitMQ管理界面

/usr/sbin/rabbitmq-plugins enable rabbitmq_management

出现如下情况则启动成功
在这里插入图片描述

宿主机连接RabbitMQ管理界面

ifconfig 获取局域网IP

ifconfig

出现了ens33,则里面的ip 192.168.15.137就是我们要找的ip
在这里插入图片描述

在宿主机浏览器输入http://192.168.15.137:15672/,出现如下界面即成功了,默认用户为guest,密码也为guest
在这里插入图片描述
出现了如下情况,因为默认RabbitMQ只能在本机登录
在这里插入图片描述
我们可以使用rabbitmqctl添加新的用户,赋予其更高的权限,让其可以让外部访问,set_permissions是为了让rabbitmq使用root用户可以访问虚拟节点 / ,后面的三个字符串分别是配置、读、写权限,在springboot整合rabbitMQ时有用

/usr/sbin/rabbitmqctl add_user root 123456
/usr/sbin/rabbitmqctl set_user_tags root administrator
/usr/sbin/rabbitmqctl list_users
/usr/sbin/rabbitmqctl set_permissions -p /  root  ".*" ".*" ".*"

出现如下情况,我们就成功的添加了用户并设置了权限
在这里插入图片描述
重新在管理页面输入账号root ,密码 123456,可以看到如下,说明我们登录成功
在这里插入图片描述

RabbitMQ集群

我们使用两台虚拟机,分别执行上面步骤,安装好RabbitMQ之后,再实现集群功能,使用ifconfig,分别查看两个虚拟机的enss33里面的ip,我的虚拟机ip为192.168.15.137和 192.168.15.141

普通模式

集群中消息只存在其中一个节点,如果客户端访问另一个节点,则该节点需要临时从存放消息的那个节点拉取消息并返回给客户端

先禁用防火墙,在两个虚拟机中运行

systemctl stop firewalld

修改erlang.cookie,将两台虚拟机中的该文件中的内容设为一样,如NUFVTUNGSGOXLXKMTYYZ

vi /var/lib/rabbitmq/.erlang.cookie

修改两个虚拟机的节点名称

vi /etc/rabbitmq/rabbitmq-env.conf

192.168.15.137

NODENAME=rabbit@server1

192.168.15.141

NODENAME=rabbit@server2

修改DNS域名映射,在两台虚拟机中都要修改,这里的server1和server2在加入集群需要使用到

vi /etc/hosts
192.168.15.137 server1
192.168.15.141 server2

重启rocketmq服务,在两台虚拟机中运行

systemctl restart rabbitmq-server
systemctl status rabbitmq-server

在192.168.15.137虚拟机下运行,server2就是上面配置的host主机名

/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl join_cluster --ram rabbit@server2
/usr/sbin/rabbitmqctl start_app
/usr/sbin/rabbitmqctl cluster_status

如果上面rabbitmqctl join_cluster运行不了,可以反向操作,博主就是反向操作才连接成功,不过只有启动192.168.15.141下的管理界面才能看到
在192.168.15.141虚拟机下运行,server1就是上面配置的host主机名

/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl join_cluster --ram rabbit@server1
/usr/sbin/rabbitmqctl start_app
/usr/sbin/rabbitmqctl cluster_status

如下,没有报错则运行成功,只有一行运行结果
在这里插入图片描述

启动192.168.15.141管理界面并输入http://192.168.15.141:15672地址出现如下情况则搭建成功,可以看到我们有两个节点,且默认是消息异步复制
在这里插入图片描述

镜像模式

集群中消息存放在每个节点,客户端访问每个节点都能拿到消息,其实镜像模式和普通模式的区别,也就是镜像模式会同步将消息复制到各个节点,而普通模式是异步将消息复制到各个节点

在192.168.15.141虚拟机(看上面加入集群语句是谁运行成功,如果在192.168.15.137运行成功,则以下语句依然在192.168.15.137运行)下运行,配置两个主机同步复制,即变为镜像模式,

/usr/sbin/rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

出现如下,则设置策略成功,将异步复制设置为同步复制,"^"表示匹配任意队列,即任意队列的数据都同步复制到所有节点
在这里插入图片描述

策略意义
ha-all所有节点同步复制
ha-two两个节点同步复制
ha-node给定个节点同步复制
文章来源:https://blog.csdn.net/weixin_45754452/article/details/123148967
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-764085.html

相关文章

什么格式的照片可以是透明的

在我们常用图片的格式中,像BMP、JPG格式的图片是不能保存透明信息的,系统会默认为白色背景。GIF格式的图片可以保存透明信息,但GIF格式的图片最多只能有256种颜色,因而只能使用在对图片要求不高的场合。另一种格式:PNG格式&#x…

台式电脑耳机插孔在哪_充电听歌两不误手机耳机转接头分线器推荐

现如今,手机配件越来越丰富,功能也越来越强大,但总有一些场景始终无法实现在一个产品上面实现,边充电边吃鸡边语音,一边听歌边充电边通话等等。而在耳机转接头和分线器这类的手机配件产品,很多时候没有统一…

@HystrixCommand注解不起作用

问题 服务层加了HystrixCommand,在我主动关闭消费者时不执行降级逻辑,而直接报错 Service public class RibbonService {AutowiredRestTemplate restTemplate;HystrixCommand(fallbackMethod "addServiceFallback")public String addServic…

1.java程序启动参数配置

2019独角兽企业重金招聘Python工程师标准>>> JAVA_OPTS" -Xss1024k -Xms8192m -Xmx8192m -Xmn3072m -XX:PermSize64m -XX:MaxPermSize300m " 参数说明: -server:一定要作为第一个参数,在多个CPU时性能 -Xss:每个线程的堆…

lua 多条件_京东京喜mcn入驻条件链接

京东京喜mcn入驻条件链接 拾麦传媒 | 河南拾麦文化传媒有限公司 古早娱乐 | 河南古早娱乐文化传媒有限公司 贰三传媒 | 洛阳鹏硕文化传媒有限公司MCN机构入驻客服:17660344002 so1125 MCN机构怎么?MCN机构盈利模式: MCN机构主要依靠旗下达人进…

Dubbo使用总结

文章目录负载均衡使用负载均衡策略随机(random)轮询(round robin)最少活跃调用数(least active)一致性hash(consistent hash)集群容错集群容错策略失败自动切换(failover)快速失败(failfast)失败安全(failsafe)失败自动恢复(failback)并行调用OR(forking)广播调用AND(broadcast…

追忆那似水的华年

春又来,人已去。风烟残,夕阳晚。樱花开。顷刻散。零乱。 年光逝,韶华落。飞絮转,不堪看。 路漫漫,空梦断,零乱。渡忘川,彼岸。忘不掉,人长叹。古井下。月光思念装满。 樱花瓣。飞过。…

pdf转ppt_PDF转PPT怎么转?原来这个方法可以免费转

日常工作中可能都会遇到这样一个难题,就是在办公过程中经常会收到以PDF格式呈现的PPT文件,PDF文件虽然方便阅读,格式也文档,但无法像PPT一样进行幻灯片切换演示,那么有没有什么方法能够将PDF转换为PPT且还是可编辑修改…

从零开始开发HTTP服务器遇到的问题(一)

文章目录初步尝试HTTP请求接收HTTP响应构建线程池示例线程池参数阻塞队列拒绝策略默认线程池测试单线程版本多线程版本线程池版本nio版本且没有使用多线程和线程池nio使用多线程版本nio使用线程池版本AIO版本初步尝试 HTTP请求接收 有两种策略,第一种如下&#xf…

ElasticSearch的Deep Paging 性能问题和解决方案

一、深度分页问题 ES默认采用的分页方式是from size的形式,类似于MySQL的分页limit。当请求数据量比较大时,ElasticSearch会对分页做出限制,因为此时消耗会很大。举个例子,一个索引分10个shards,然后一个搜索请求&am…