rabbitmq单机和集群部署(代码片段)

码海小虾米_ 码海小虾米_     2022-12-11     547

关键词:

rabbitmq单机和集群部署

一、单机部署

1、准备工作

① 服务器相关

服务器名IP地址系统服务器架构
rabbitmq192.103.100.57Centos 7.7el7.x86_64

② 服务器优化

关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

关闭selinux
临时关闭SELinux      setenforce 0
永久关闭SELinux(重启后生效)编辑/etc/selinux/config 文件,将SELinux的默认值enforcing 改为 disabled,下次开机就不会再启动

③ 系统依赖

RabbitMQ的安装需要Erlang环境,需要先安装ERlang环境并添加到系统环境变量中。需要注意的是版本对应关系,如下图。

我们此次安装的erlang版本是23.2

2、部署安装

2.1 安装依赖环境

安装GCC GCC-C++ Openssl等模块

 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
 yum -y install unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel
 yum install build-essential unixODBC unixODBC-devel make m4 ncurses-devel tk tc -y
 yum -y install fop.noarch
 yum -y install ncurses-devel

2.2 安装erlang环境

1)下载erlang解压并重命名,内网环境的话本机下载上传至服务器	
cd /data/
wget http://erlang.org/download/otp_src_23.2.tar.gz
tar xvf otp_src_23.2.tar.gz
mv otp_src_23.2 /usr/local/erlang
 
2)首先是./configure,检查编译环境并配置安装路径,将目录切换到erlang,运行如下命令:
cd /usr/local/erlang
./configure --prefix=/usr/local/erlang --without-javac

3)然后对源代码进行编译并安装,运行如下命令:(会报错Error 2 似乎不影响)
make && make install

4)将erlang环境加入环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/erlang/bin

验证是否安装成功,执行下面的命令,若看到版本号则说明安装成功,如下图

2.3 安装 rabbitmq

1)下载 rabbitmq 内网环境的话本机下载上传至服务器
cd /data/
wget https://github.com/rabbitmq/rabbitmq-server/releases/v3.8.7/rabbitmq-server-generic-unix-3.8.7.tar.xz 

2)安装RabbitMQ
进入目录并解压RabbitMQ
cd /data/
tar -xvf rabbitmq-server-generic-unix-3.9.7.tar.xz

3)随后移动至/data/下 改名rabbitmq:
 mv rabbitmq_server-3.9.7/ rabbitmq
注意,两台都需安装可使用scp命令复制。

4)其命令文件存在于sbin文件夹下,因此需要将sbin文件夹的路径添加到PATH中:修改/etc/profile 
vim /etc/profile
export PATH=/data/rabbitmq/sbin:$PATH

5)执行命令,使得PATH路径更新,rabbitMQ安装成功
source /etc/profile

6)随后启用MQ后台管理方式:
rabbitmq-plugins enable rabbitmq_management 

2.4 创建RabbitMQ配置文件并修改

1)RabbitMQ拥有三个配置文件,RabbitMQ配置文件所在位置为/data/rabbitmq/etc/rabbitmq下 
cd /data/rabbitmq/etc/rabbitmq

2)新增配置文件 rabbitmq-env.conf (每个节点对应各自的NODENAME)
cat <<EOF > rabbitmq-env.conf
NODENAME=rabbit@rabbitmq1
MNESIA_BASE=/data/rabbitmq/mnesia
LOG_BASE=/data/rabbitmq/log
EOF
### 配置文件参数解释如下:
NODENAME=rabbit@rabbitmq1      		 #节点名字,全局唯一
MNESIA_BASE=/data/rabbitmq/mnesia    #消息落地存放位置
LOG_BASE=/data/rabbitmq/log     	 #日志位置

2.5 优化相关参数

rabbitmq.conf配置优化

vm_memory_high_watermark, 0.40,              
#最大使用内存40%,erlang开始GC
#(vm_memory_high_watermark:内存阈值,默认为0.4。意思为物理内存的40%。40%的内存并不是内存的最大的限制,它是一个发布的节制,当达到40%时Erlang会做GC。
# Erlang GC 在最坏情况下会消耗一倍的内存。最坏的情况时使用)

vm_memory_high_watermark_paging_ratio, 0.8,  
#32G内存,32*0.8*0.2时开始持久化磁盘,如机器内存16G,当RABBITMQ占用内存1.28G(16*0.4*0.2)时把内存数据放到磁盘。

disk_free_limit, "10GB",                     
#磁盘使用量剩余10G时,不收发消息

2.6 添加RabbitMQ用户(新建用户三个mq都需要)

配置文件添加并修改过后,需要重启RabbitMQ后并创建用户,先用kill命令杀掉所有RabbitMQ的进程,然后启动mq(以守护进程启动)
rabbitmq-server -detached      (忽略警告)

创建用户并加入用户组:(admin为用户名,hanweb为密码,请自行更换强度高的用户名密码)
rabbitmqctl add_user admin Bjwl_1912
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
rabbitmqctl set_user_tags admin administrator

运行命令查看所有用户
rabbitmqctl list_users

二、集群部署

1、准备工作

① 服务器相关(服务器优化 和 系统依赖跟单机一致)

服务器名IP地址系统服务器架构
rabbitmq1192.103.100.47Centos 7.7el7.x86_64
rabbitmq2192.103.100.49Centos 7.7el7.x86_64
rabbitmq3192.103.100.50Centos 7.7el7.x86_64

② 所有服务器配置 hosts

vim /etc/hosts
输入:
192.103.100.47   rabbitmq1
192.103.100.49   rabbitmq2
192.103.100.50   rabbitmq3

除了 rabbitmq-env.conf 需要配置各自节点名称之外,其他步骤同单机一致

2、添加RabbitMQ至集群

2.1 注意事项

现在我们两台按照上面的步骤做完之后,可以建立集群了。需要注意的是,以上步骤的顺序很重要,
1、erlang环境安装后需配置环境变量并且需要注意版本是否对应。
2、防火墙 seliunx 是否关闭
3、若两个节点不在一个服务器上,hosts是否配置完成
4、RabbitMQ解压后,将sbin目录添加至PATH
5、RabbitMQ的配置文件是否正确配置

2.2 先将其他两个节点mq服务停掉

rabbitmqctl stop_app

2.3 配置 erlang.cookie

将三台mq的.erlang.cookie文件内容设置相同,该文件一般在用户目录下。若未给erlang设置用户,则该文件就在/root下,
先给该文件赋权为400,该文件必须为只读才可创建集群,即
chmod 400 .erlang.cookie然后将赋权后的该文件复制到另外一台相同目录下并替换原有文件。注意,替换后需检查该文件权限是否正确,若有变化需重新赋权。

scp .erlang.cookie root@192.103.100.49:/root/
scp .erlang.cookie root@192.103.100.50:/root/

2.4 后台启动其他两台mq服务

rabbitmq-server start &

**注意:**若启动报下列错,说明端口被占用

could not bind to distribution port 25672, it is in use by another node: rabbit@rabbitmq1

解决方法:

1)先使用ss -tnlp 查看是否有25672端口在使用;

2)然后使用kill -9 结束占用的程序即可

2.5 执行加入集群命令

停止mq节点rabbit@rabbitmq2和mq节点rabbit@rabbitmq3节点,并分别执行加入集群命令。
注意这边的停止mq节点并非停止mq进程,不可以直接kill掉mq进程!!

rabbit@rabbitmq2执行命令添加磁盘节点:

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app

rabbit@rabbitmq3执行命令添加内存节点:

rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
rabbitmqctl start_app

2.6 集群创建成功后查看状态

rabbitmqctl cluster_status
可以看到集群状态,三个节点,两个disc节点和一个ram节点。

rabbitmqlinux:单机和集群部署(代码片段)

1.单机版部署1.1erlang安装rabbitmq是erlang语言编写的,安装rabbitmq之前,需要先安装erlang,这里用erlang的源码进行安装,erlang安装包官网下载地址:https://github.com/erlang/otp/releases/#先安装以下依赖包yuminstall-ymakegccgcc-c++m4opensslopenssl-deve... 查看详情

rabbitmq单机部署和集群部署(代码片段)

...安装(1)下载镜像方式一:在线拉取dockerpullrabbitmq:3-management方式二:先下载好后,在本地加载上传到虚拟机后,使用命令加载镜像即可:dockerload-imq.tar(2)安装MQ执行下面的命令来运算MQ容器&#... 查看详情

java---微服务---rabbitmq部署(代码片段)

RabbitMQ部署1.单机部署1.1.下载镜像1.2.安装MQ1.3访问管理端2.集群部署2.1.集群分类2.2.设置网络1.单机部署我们在Centos7虚拟机中使用Docker来安装,如未安装dockr,请参考《Centos7安装Docker》1.1.下载镜像方式一:在线拉取docke... 查看详情

rabbitmqwin:单机和集群部署

关于Erlang与RabbitMQ的版本对照表版本必须一一对应,不然rabbitmq会启动失败。RabbitMQversionMinimumrequiredErlang/OTPMaximumsupportedErlang/OTPNotes3.11.43.11.33.11.23.11.13.11.025.025.1AsofErlang25.1,OpenSSL3.0supportinErlangisc 查看详情

解开kafka神秘的面纱:kafka单机部署和集群部署(代码片段)

文章目录一、前言二、kafka单机安装2.1下载压缩包2.2zookeeper安装2.3kafka安装三、kafka集群安装3.1zookeeper安装3.2kafka的安装3.3两种Topic四、尾声一、前言本文主要介绍kafka的单机和集群模式部署。二、kafka单机安装2.1下载压缩包需要先... 查看详情

rocketmq:linux环境-单机部署和主从集群部署(代码片段)

1.单机部署(单主)1.1下载安装包说明:rocketmq需要jdk环境。(1)下载jdk安装包https://www.oracle.com/technetwork/java/javase/archive-139210.html下载jdk,这边选择的是jdk-8u144-linux-x64.tar.gz(2)下载rocketmq安装包http://rocketmq.apache.org/dowlo 查看详情

rabbitmq——安装(代码片段)

RabbitMQ——安装一、单机部署1.1拉取镜像1.2安装MQ二、集群部署环境:CentOS7、jdk8一、单机部署1.1拉取镜像dockerpullrabbitmq:3-management1.2安装MQ执行下面的命令来创建并运行MQ容器:#hostname:主机的节点名称dockerrun\\-eRABBITMQ_... 查看详情

rabbitmq集群部署(代码片段)

rabbitmq集群部署rabbitmq集群部署rabbitmq集群部署#修改主机名hostnamectlset-hostnamerabbitmq1hostnamectlset-hostnamerabbitmq2hostnamectlset-hostnamerabbitmq3#安装相关依赖环境yum-yinstallncurses-devel#安装erlang环境cd/data/softwgeth 查看详情

rabbitmq集群部署(代码片段)

rabbitmq集群部署rabbitmq集群部署rabbitmq集群部署#修改主机名hostnamectlset-hostnamerabbitmq1hostnamectlset-hostnamerabbitmq2hostnamectlset-hostnamerabbitmq3#安装相关依赖环境yum-yinstallncurses-devel#安装erlang环境cd/data/softwgeth 查看详情

rabbitmq部署指南(代码片段)

RabbitMQ部署指南1.单机部署我们在Centos7虚拟机中使用Docker来安装。1.1.下载镜像方式一:在线拉取dockerpullrabbitmq:3-management方式二:从本地加载在课前资料已经提供了镜像包:上传到虚拟机中后,使用命令加载镜像即... 查看详情

rabbitmq部署指南(代码片段)

RabbitMQ部署指南1.单机部署我们在Centos7虚拟机中使用Docker来安装。1.1.下载镜像方式一:在线拉取dockerpullrabbitmq:3-management方式二:从本地加载在课前资料已经提供了镜像包:上传到虚拟机中后,使用命令加载镜像即... 查看详情

部署rabbitmq集群(代码片段)

部署RabbitMQCluster消息中间件简介?消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下... 查看详情

rabbitmq集群部署(代码片段)

单节点部署rabbitmq单节点部署比较简单,可以使用apt-get等工具快速安装部署。wget-O-https://www.rabbitmq.com/rabbitmq-release-signing-key.asc|sudoapt-keyadd-echo‘debhttp://www.rabbitmq.com/debian/distriubtionmain‘|sudotee/etc/apt/s 查看详情

clickhouse集群搭建部署(代码片段)

文章目录一、单机版安装和启停二、集群部署搭建1、手动搭建clickhouse集群2、使用docker-compose快速搭建clickhouse集群三、集群扩容如何保证扩容后的数据均匀分布?四、集群缩容docker-compose中的一些文件一、单机版安装和启停... 查看详情

clickhouse集群搭建部署(代码片段)

文章目录一、单机版安装和启停二、集群部署搭建1、手动搭建clickhouse集群2、使用docker-compose快速搭建clickhouse集群三、集群扩容如何保证扩容后的数据均匀分布?四、集群缩容docker-compose中的一些文件一、单机版安装和启停... 查看详情

dockercompose跨主机部署consul集群/单机(代码片段)

简单明了直接开干。原理百度下  #此次部署双客户端三服务端  一、确定服务器信息有无相关端口冲突。docker服务是否存在netstat-nltp|grep-E"8300|8301|8302|8500|8600"8300:集群内数据的读写和复制8301:单个数据中心gossip协... 查看详情

haproxy参数配置(代码片段)

RabbitMQ集群部署完成,通过HAProxy反向代理来提供统一的对RabbitMQ的访问入口。1.Haproxy提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。(负载均衡策略有很多:轮询、加权轮询、源地址哈希、最小连接数等等)2.为什... 查看详情

rabbitmq部署指南(代码片段)

...使用Docker来安装。下载镜像方式一:在线拉取dockerpullrabbitmq:3-management方式二:从本地加载镜像包下载地址:rabbitmq镜像dockerload-imq.tar安装MQ执行下面的命令来运行MQ容器:dockerrun\\-eRABBITMQ_DEFAULT_USER=123456\\-eRABBITMQ... 查看详情