CentOS环境下Rabbit集群部署

news2024/11/22 17:42:54

前言

    • 本次Rabbit集群部署所使用的的软件版本

erlang:erlang-23.3.3-1.el7.x86_64.rpm ,rabbitmq:rabbitmq-server-3.8.23-1.el7.noarch.rpm

    • 本次Rabbit集群部署需要安装在两台CentOS服务器

分别为svr-app-rabbitmq01、svr-app-rabbitmq02,以下安装步骤(1-4)分别在两台服务器执行

1.Rabbit MQ CentOS环境下安装

1.1RabbitMQ版本 和 Erlang 版本兼容性关系

https://www.rabbitmq.com/which-erlang.html

1.2安装包下载地址

1.2.1 erlang下载地址

https://github.com/rabbitmq/erlang-rpm/releases (国外)

https://gitcode.net/mirrors/rabbitmq/erlang-rpm (国内)

1.2.2 socat下载地址

http://www.rpmfind.net/linux/rpm2html/search.php?query=socat(x86-64)

1.2.3 rabbitmq下载地址

https://github.com/rabbitmq/rabbitmq-server/releases (国外)

https://gitcode.net/mirrors/rabbitmq/rabbitmq-server(国内)

1.2.4 安装包目录(参考)

cd /usr/local

mkdir rabbitmq

cd rabbitmq

此时安装包放置目录为:cd /usr/local/rabbitmq

下载安装包并上传至安装目录(当服务器无法直接通过wget下载时)

2 安装依赖包

2.1 yum安装依赖包

使用root用户执行如下命令安装依赖

yum install libtool;

yum install libtool-ltdl;

yum install libtool-ltdl-devel;

yum install lua;

yum install ncurses-devel;

yum install openssl-devel;

2.2 yum安装socat组件

yum -y install socat

3 安装erlang

cd /usr/local/rabbitmq

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

4 安装rabbitmq

cd /usr/local/rabbitmq

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

  • 安装web插件

rabbitmq-plugins enable rabbitmq_management

  • 添加用户并分配权限

rabbitmqctl add_user admin admin

给admin分配权限

rabbitmqctl set_user_tags admin administrator

5 RabbitMQ服务管理

  • 设置开机自启

systemctl enable rabbitmq-server
  • 启动rabbitmq

systemctl start rabbitmq-server
  • 后台启动

rabbitmq-server -deched & 
  • 查看服务状态

systemctl status rabbitmq-server

是active则代表启动成功

  • 停止服务

systemctl stop rabbitmq-server
  • 重启服务

systemctl restart rabbitmq-server
  • 防火墙端口放通

####firewalld防火墙
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload 
####iptables防火墙
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
systemctl restart iptables

5 RabbitMQ配置集群策略

5.1 配置HOST

使用root用户修改主机的hosts文件,两台服务器均需要执行该操作:

vim/etc/hosts 
#(输入 i 进入编辑模式)
输入
10.10.1.10 svr-app-rabbitmq01
10.10.1.11 svr-app-rabbitmq02

#svr-app-rabbitmq01 为master节点机器名 

#退出编辑保存

5.2 配置策略

  • 登录RabbitMQ

RabbitMQ管理控制台访问:http://rabbitmq服务器IP地址:15672

用户名密码默认admin/admin,登录rabbitmq控制台后点击admin,在用户列表中选择admin用户配置权限,如下:

  • 配置集群策略

给用户配置集群策略:点击admin,点击右侧的Policies添加策略:

name配置ha-all

Pattern配置^

Apply to配置Exchangesand queues

配置ha-mode=all、ha-sync-mode=automatic

配置完成点击Add policy按钮保存。

如网页无法正常操作,可在服务器上执行如下命令:

rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'    
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

5.3 配置集群节点

根据上述步骤安装启动RabbitMQ,选择一个节点作为master节点

在另外1台服务器节点机器上,使用root用户执行如下命令。

scp -r root@10.10.1.10:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq 
#重启RabbitMQ服务: 
ps -ef |grep rabbit |grep -v grep |cut -c 9-15 | xargs kill -s 9 
nohup rabbitmq-server -deched & 
#将该机器上RabbitMQ节点加入集群: 
rabbitmqctl stop_app 
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@svr-app-rabbitmq01

rabbitmqctl start_app 

5.4 查看集群状态

输入命令查看

rabbitmqctl cluster_status

登录RabbitMQ管理控制台查看节点信息:

访问主节点rabbitmq的服务器:http://10.10.1.10:15672在节点列表中可以看到刚刚添加的集群节点信息。

6 RabbitMQ常用命令

6.2用户管理

# 添加用户
rabbitmqctl add_user <username> <password>  
 
# 删除用户
rabbitmqctl delete_user <username>  
 
# 修改用户密码
rabbitmqctl change_password <username> <newpassword>  
 
# 清除用户密码(该用户将不能使用密码登陆,但是可以通过SASL登陆如果配置了SASL认证)
rabbitmqctl clear_password <username> 
 
# 设置用户tags(相当于角色,包含administrator,monitoring,policymaker,management)
rabbitmqctl set_user_tags <username> <tag>
 
# 列出所有用户
rabbitmqctl list_users  

# 删除用户
rabbitmqctl delete_user {username}

# 清除用户密码
rabbitmqctl clear_password {username}

# 修改密码
rabbitmqctl change_password {username} {newPassword}

# 验证用户
rabbitmqctl authentiçate_user {username} {passWord}

# 新增用户
rabbitmqctl add_user {username} {password}

# 给用户授权
rabbitmqctl set_user_tags {username} {roles}

# 清楚用户对某个虚拟机的权限。
rabbitmqctl clear_permissions [-p vhostName] {username}

# 用来显示虚拟主机上的权限。
rabbitmqctl list_permissions [-p vhost] 

# 用来显示用户在已分配虚拟机上的权限。
rabbitmqctl list_user_permissions {username}

6.2插件管理

# rabbitmq-plugins [-n node] {command} [command options ...]
 
# 启动插件
# rabbitmq-plugins enable [--offline] [--online] {plugin ...}
rabbitmq-plugins enable rabbitmq_management

# 禁用插件
# rabbitmq-plugins disable [--offline] [--online] {plugin ...}
rabbitmq-plugins disable  rabbitmq_management

# 表示启用参数指定的插件,并且禁用其他所有插件
# 没有参数表示禁用所有的插件
rabbitmq-plugin set rabbitmq_management

# 显示所有的插件,每一行一个
rabbitmq-plugins list

# 显示所有的插件,并且显示插件的版本号和描述信息
rabbitmq-plugins list -v

# 显示所有名称含有 "management" 的插件
rabbitmq-plugins list -v management

# 显示所有显示或者隐式启动的插件
rabbitmq-plugins list -e rabbit

6.2集群管理

# 显示集群的状态
rabbitmqctl cluster_status 

# 将节点加入指定集群中。在这个命令执行前需要停止 RabbitMQ应用井重置节点。
rabbitmqctl joio_cluster {cluster_node} [--ram] 

# 修改集群节点的类型。在这个命令执行前需要停止 RabbitMQ应用。
rabbitmqctl change_cluster_node_type {disclram}

# 将节点从集群中删除,允许离线执行。
rabbitmqctl forget_cluster_node [--offiine] 
 
# 来查看那些slaves已经完成同步:
rabbitmqctl list_queues {queue_name} {slave_pids} synchronised_slave_pids

# 手动的方式同步一个queue:
rabbitmqctl sync_queue {queue_name}

# 取消某个queue的同步功能:
rabbitmqctl cancel_sync_queue {queue_name}

6.2节点管理

# 查询节点状态
rabbitmqctl status

# 停止RabbitMQ应用,但是Erlang虚拟机还是处于运行状态。此命令的执行优先于其他管理操作,比如rabbitmqctl reset。
rabbitmqctl stop_ app 

# 启动RabbitMQ应用。在执行了其他管理操作之后,重新启动之前停止的RabbitMQ应用,比rabbitmqctl reset。
rabbitmqctl start_app

# 重置RabbitMQ节点,将RabbitMQ节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库 中删除所有的配置数据,如己配置的用户、 vhost 等,以及删除所有的持久化消息。执行 rabbi tmqctl reset 命令前必须停止RabbitMQ 应用。
rabbitmqctl reset

# 强制将 RabbitMQ 节点重置还原到最初状态。不同于 rabbitmqctl reset 命令, rabbitmqctl force_reset 命令不论当前管理数据库的状态和集群配置是什么,都会无条件地重直节点。它只能在数据库或集群配置己损坏的情况下使用。与 rabbitmqctl reset 命令一样,执行 rabbitmqctl force_reset 命令前必须先停止 RabbitMQ 应用。
rabbitmqctl force_reset

# 指示RabbitMQ节点轮换日志文件。RabbitMQ节点会将原来的日志文件中的内容追加到"原 始名称+后缀"的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当目标文件不存在时,会重新创建。如果不指定后缀suffix. 则日志文件只是重新打开而不会进行轮换。
rabbitmqctl rotate_logs {suffix}

# 停止运行RabbitMQ的Erlang虚拟机和RabbitMQ应用。如果RabbitMQ没有成功关闭,则会返回一个非零值。这个命令和rabbitmqctl stop 不同的是,它不需要指定pid_file而可以阻塞等待指定进程的关闭。
rabbitmqctl shutdown

# 停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用,其中pid_file是通过rabbitmq-server命令启动RabbitMQ 服务时创建的,默认情况下存放于mnesia目录中。注意rabbitmq-server -detach 这个带有 -detach后缀的命令来启动 RabbitMQ 服务则不会生成 pid_file 文件。指定pid_file会等待指定进程的结束。
rabbitmqctl stop [pid_file] 

6.2对象管理

# name:罗列出所有虚拟机,tracing:表示是否使用了 RabbitMQ 的 trace 功能
rabbitmqctl list_vhosts [name,tracing]

# 查看交换器
rabbitmqctl list_exchanges [-p vhost] [exchangeinfoitem ...]

# 查看绑定关系的细节
rabbitmqctl list_bindings [-p vhost] [bindinginfoitem ...]

# 查看已声明的队列
rabbitmqctl list_queues [-p vhost] [queueinfoitem ...] 

# 返回 TCP!IP连接的统计信息。
rabbìtmqctl lìst_connectìons [connectìonìnfoìtem ...]

# 返回当前所有信道的信息。
rabbitmqctl list_channels [channelinfoitem ...]

# 列举消费者信息 每行将显示由制表符分隔的己订阅队列的名称、相关信道的进程标识、consumerTag、是否需要消费端确认 prefetch_count 及参数列表这些信息。
rabbitmqctl list_consumers [-p vhost]
 
# 创建一个新的 vhost ,大括号里的参 数表示 vhost 的名称。
rabbitmqctl add vhost {vhostName}

# 删除一个vhost,同时也会删除其下所有的队列、交换器、绑定关系、 用户权限、参数和策略等信息。
rabbitmqctl delete_vhost {vhostName}

# RabbitMQ 中的授予权限是指在 vhost 级别对用户而言的权限授予。
rabbitmqctl set permissions [-p vhostName] {userName} {conf} {write} {read} 

# 对RabbitMQ 节点进行健康检查,确认应用是否正常运行、list_queues list_channels 是否能够正常返回等。
rabbitmqctl node_health_check

# 显示每个运行程序环境中每个变量的名称和值。
rabbitmqctl environment

# 为所有服务器状态生成一个服务器状态报告,井将输出重定向到一个文件:rabbitmqctl report > report.txt
rabbitmqctl report

# 显示 Broker 的状态,比如当前 Erlang 节点上运行的应用程序、RabbitMQ/Erlang的版本信息、os 的名称、内 存及文件描述符等统计信息。
rabbitmqctl status
 
# 策略管理
# 策略查看
rabbitmqctl list_policies [-p <vhost>]

# 策略设置
rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern>  <definition>

# 策略清除
rabbitmqctl clear_policy [-p <vhost>] <name>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Trime同文输入法JNI加载过程

Trime同文输入法JNI加载过程JNI初始化顺序第一步、加载librime_jni.so库第二步、自动注册机制第三步、正式加载librime_jni.so库插入一个话题、简化打印记录第四步、执行Rime.java中的init()方法LoadModules()LoadModule()rime_core_initialize()调用顺序Class不是class关键字&…

3D应用无需下载即点即用,云应用带来更轻量的元宇宙

最近一个程序员朋友告诉我&#xff0c;公司市场部想做一个元宇宙相关的互动游戏&#xff0c;于是给技术团队提了一个带用户线上沉浸式环游园区的H5开发需求。他摸着所剩无几的头发据理力争&#xff1a;这个需求真的做不了&#xff01;我听了很疑惑&#xff0c;现在许多品牌都在…

工作流引擎架构设计

原文链接&#xff1a; 工作流引擎架构设计 最近开发的安全管理平台新增了很多工单申请流程需求&#xff0c;比如加白申请&#xff0c;开通申请等等。最开始的两个需求&#xff0c;为了方便&#xff0c;也没多想&#xff0c;就直接开发了对应的业务代码。 但随着同类需求不断增…

深度学习PyTorch 之 网络结构可视化

深度学习&PyTorch 之 DNN-回归 深度学习&PyTorch 之 DNN-回归&#xff08;多变量&#xff09; 分别介绍了DNN回归的方法和代码&#xff0c;但是模型建立好了&#xff0c;他到底是个什么样子呢&#xff1f; 我们这节给大家介绍一个查看模型结构的方法 可视化介绍 我们…

【信管8.1】项目人力资源管理概念及过程

项目人力资源管理概念及过程不管你做什么事&#xff0c;要成就什么事业&#xff0c;要做什么项目&#xff0c;这一切&#xff0c;都是由人来完成的。因此&#xff0c;人力资源对于项目管理来说&#xff0c;是非常重要的一个管理过程。同时&#xff0c;人力资源管理也是整个管理…

2023/1/11 Web前端Promise从入门到精通

ES6引入的进行异步编程的解决方案&#xff0c;从语法上说它是一个构造函数。 异步编程包括但不限于&#xff1a;文件操作、数据库操作、AJAX、定时器 为什么要用Promise&#xff1f; 之前进行异步编程直接通过回调函数的方式进行&#xff0c;会导致回调地狱。 回调函数&#…

Qt扫盲-QMenu理论总结

QMenu理论总结一、概述二、常用操作1. 添加Action2. 信号槽3. 可撕下菜单4. 展示菜单一、概述 QMenu其实就是菜单控件&#xff0c;菜单控件本质上就是一个选择项目。它可以是菜单栏中的下拉菜单&#xff0c;也可以是独立的上下文菜单。当用户单击相应的位置或按下指定的快捷键…

【大数据】第一章:了解Hadoop生态圈

大数据特点&#xff08;4V&#xff09; Volume(大量) 非常非常多&#xff0c;大企业数据接近1EB Velocity(高速) 比如在双十一&#xff0c;数据爆增 Variety(多样) 很多样子的数据&#xff0c;比如&#xff0c;代码&#xff0c;图片&#xff0c;视频&#xff0c;JSON&am…

【C++】八大排序

文章目录前言1. 插入排序2. 希尔排序3. 选择排序4. 堆排序5. 冒泡排序6. 快速排序(重点)6.1 快速排序(hoare版本)6.2 快速排序(挖坑法)6.3 快速排序(前后指针法)6.4 快速排序(非递归)6.5 快速排序(优化)7. 归并排序7.1 归并排序(递归实现)7.2 归并排序非递归实现8. 计数排序排序…

Docker搭建PHP运行环境

目录 Docker 安装 PHP Docker 安装 Nginx ​编辑运行nginx容器 nginx安装成功 Nginx PHP 部署PHP项目 启动 PHP&#xff1a; 启动 nginx&#xff1a; 查看正在运行的容器: 访问域名测试搭建结果 Docker相关命令描述 Docker 安装 PHP 这里我们拉取官方的镜像,标签…

代码随想录算法训练营第8天 344.反转字符串、541. 反转字符串II、剑指Offer58-II.左旋转字符串

代码随想录算法训练营第8天 344.反转字符串、541. 反转字符串II、剑指Offer58-II.左旋转字符串 反转字符串 力扣题目链接(opens new window) 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 对于字符串&#xff0c;我…

Linux驱动开发基础__Linux 系统对中断处理的演进

目录 1 Linux 对中断的扩展&#xff1a;硬件中断、软件中断 2 中断处理原则 1&#xff1a;不能嵌套 3 中断处理原则 2&#xff1a;越快越好 4 要处理的事情实在太多&#xff0c;拆分为&#xff1a;上半部、下半部 5 下半部要做的事情耗时不是太长&#xff1a;tasklet…

154. 滑动窗口

文章目录QuestionIdeasCodeQuestion 给定一个大小为 n≤106 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; 该数组为 [1 3 -1 -3 5 3 6 7]&…

知识点滴 - 数据库视图概念

视图是数据库中一个非常简单的概念&#xff0c;写过SQL的人几乎大致了解视图。本文除了在回顾视图的本质及相关操作知识时&#xff0c;会重点阐述它蕴含的分层思想在数据分析工作中的作用。 1&#xff0c;视图的本质与作用 视图是一个数据库中的虚拟表&#xff0c;它的本质是S…

模板特化与static成员初始化

我们知道在 c 的类中&#xff0c;如果有static成员数据&#xff0c;则需要在类外进行定义&#xff0c;而类内那只是声明。这个在类模板中也是一样的&#xff0c;需要在类外进行定义。普通类模板的 static 数据的初始化&#xff0c;如下代码&#xff1a; template <class T&…

SpringBoot在Controller层接收参数的常用方法(超详细)

前言 在工作中&#xff0c;比如要实现一个功能&#xff0c;前端传什么参数&#xff0c;后端的controller层中怎么接收参数 &#xff0c;封装成了什么实体对象&#xff0c;有些参数是在URL上使用&#xff0c;有些参数是在body上使用&#xff0c;service层中做了什么逻辑&#xf…

数据结构(根据王道整理)

数据结构 文章目录数据结构线性结构与非线性结构链表kmp算法栈二叉树完全二叉树二叉树的存储结构二叉树的访问树的深度二叉树的层次遍历由遍历序列构造二叉树已知后序跟中序建立二叉树线索二叉树序言&#xff08;土办法解决找前驱&#xff09;线索二叉树存储结构中序线索二叉树…

几道基础的二叉树、树的题

几道基础的二叉树、树的题LeetCode144.二叉树的前序遍历思路及实现方法一&#xff1a;递归方法二&#xff1a;迭代LeetCode145.二叉树的后序遍历思路及实现方法一&#xff1a;递归方法二&#xff1a;迭代LeetCode94.二叉树的中序遍历思路及实现方法一&#xff1a;递归方法二&am…

数据结构(2)树状数组

活动 - AcWing 参考&#xff1a;《算法竞赛进阶指南》-lyd 目录 一、概念 1.主要功能 2.实现方式 3. 二、例题 1.树状数组和逆序对 2.树状数组和差分 3. 两层差分 4. 结合二分 一、概念 1.主要功能 树状数组可以完成的功能主要有&#xff1a; 维护序列的前缀和单…

pytest-pytest插件之测试覆盖率pytest-cov

简介 测试覆盖率是指项目代码被测试用例覆盖的百分比&#xff0c;使用pytest-cov插件可以统计测试覆盖率 添加链接描述 安装插件pytest-cov pip install pytest-cov用法 基本用法 –cov的参数是要统计代码覆盖率的源码&#xff0c;我将源码放在mysrc中&#xff0c;test_s…