• rabbitmq单机和集群部署


    rabbitmq单机和集群部署

    一、单机部署

    1、准备工作

    ① 服务器相关

    服务器名

    IP地址

    系统

    服务器架构

    rabbitmq

    192.103.100.57

    Centos 7.7

    el7.x86_64

    ② 服务器优化

    关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
    关闭selinux
    临时关闭SELinux      setenforce 0
    永久关闭SELinux(重启后生效)编辑/etc/selinux/config 文件,将SELinux的默认值enforcing 改为 disabled,下次开机就不会再启动
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ③ 系统依赖

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-987SSxLI-1645598570177)(C:UsersAdministratorAppDataRoamingTypora	ypora-user-imagesimage-20220118151151524.png)]

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m34jIqbE-1645598538453)(C:UsersAdministratorAppDataRoamingTypora	ypora-user-imagesimage-20220118151434883.png)]

    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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vC1xTCzM-1645598538454)(C:UsersAdministratorAppDataRoamingTypora	ypora-user-imagesimage-20220118160511884.png)]

    2.4 创建RabbitMQ配置文件并修改

    1)RabbitMQ拥有三个配置文件,RabbitMQ配置文件所在位置为/data/rabbitmq/etc/rabbitmq下 
    cd /data/rabbitmq/etc/rabbitmq
    
    2)新增配置文件 rabbitmq-env.conf (每个节点对应各自的NODENAME)
    cat < 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     	 #日志位置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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时,不收发消息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aKOHUaLr-1645598538454)(C:UsersAdministratorAppDataRoamingTypora	ypora-user-imagesimage-20220118153426694.png)]

    二、集群部署

    1、准备工作

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

    服务器名

    IP地址

    系统

    服务器架构

    rabbitmq1

    192.103.100.47

    Centos 7.7

    el7.x86_64

    rabbitmq2

    192.103.100.49

    Centos 7.7

    el7.x86_64

    rabbitmq3

    192.103.100.50

    Centos 7.7

    el7.x86_64

    ② 所有服务器配置 hosts

    vim /etc/hosts
    输入:
    192.103.100.47   rabbitmq1
    192.103.100.49   rabbitmq2
    192.103.100.50   rabbitmq3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    除了 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
    
    • 1

    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/
    
    • 1
    • 2

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9pv33D1-1645598538455)(C:UsersAdministratorAppDataRoamingTypora	ypora-user-imagesimage-20220118175523351.png)]

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

    rabbitmq-server start &
    
    • 1

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

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

    解决方法:

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5a3bnEDX-1645598538456)(C:UsersAdministratorAppDataRoamingTypora	ypora-user-imagesimage-20220118180031747.png)]

    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
    
    • 1
    • 2
    • 3

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

    rabbitmqctl stop_app
    rabbitmqctl join_cluster --ram rabbit@rabbitmq1
    rabbitmqctl start_app
    
    • 1
    • 2
    • 3

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

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

    在这里插入图片描述

  • 相关阅读:
    unocss+vite+vue3初使unocss
    加密的视频有离线观看的方式吗?
    【尾篇】《信息资源管理》第7章 | 企业与政府信息资源管理
    项目进度管理
    采集侠-免费采集侠-免费采集侠插件
    IO模型3-NIO(非阻塞IO)
    vs2019生成c++库文件警告dll链接不一致
    浅谈智慧空开在某市科技馆项目的应用-安科瑞 蒋静
    如何从小白成长为AI工程师笔记
    【TypeScript】枚举类型:详解常见枚举类型的 7 种用法
  • 原文地址:https://blog.csdn.net/m0_67390963/article/details/126484424