RabbitMQ集群配置以及负载均衡配置

news2024/10/5 16:32:28

RabbitMQ集群配置以及负载均衡配置

    • 环境配置
    • 集群配置
      • 安装rabbitmq
        • 启动rabbitmq
        • 开启远程登录
        • 添加用户并且授权用户
        • 添加数据存放目录和日志存放目录
        • 查看端口
        • 拷⻉erlang.cookie
        • 将mq-2、mq-3作为内存节点加⼊mq-1节点集群中
        • 查看集群状态
        • 添加一个新的队列
    • RabbitMq负载均衡配置-HAProxy
        • 安装HAProxy
        • 修改配置文件
        • 登录haproxy
        • mysql授权root用户远程登录

环境配置

服务器ip地址
rabbitmq-1192.168.10.128
rabbitmq-2192.168.10.129
rabbitmq-3192.168.10.130

集群配置

安装rabbitmq

  • 三台机子都配置对应得hosts文件

    [root@localhost ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.10.128 rabbitmq-1
    192.168.10.129 rabbitmq-2
    192.168.10.130 rabbitmq-3
    
  • 三台机子都得安排rabbitmq 目前三台机子都上传了对应得安装包

    [root@localhost ~]# ls
    anaconda-ks.cfg   rabbitmq-server-3.7.10-1.el7.noarch.rpm   erlang-21.3.8.21-1.el7.x86_64.rpm 
    [root@localhost ~]# yum install -y erlang-21.3.8.21-1.el7.x86_64.rpm
    [root@localhost ~]# yum install -y rabbitmq-server-3.7.10-1.el7.noarch.rpm
    
启动rabbitmq
[root@localhost ~]#  systemctl daemon-reload
[root@localhost ~]# systemctl start rabbitmq-server
开启远程登录
[root@localhost ~]# cd /usr/share/doc/rabbitmq-server-3.7.10/
[root@localhost rabbitmq-server-3.7.10]# cp rabbitmq.config.example /etc/rabbitmq
[root@localhost rabbitmq-server-3.7.10]# cd /etc/rabbitmq/
[root@localhost rabbitmq]# ls
enabled_plugins  rabbitmq.config.example
[root@localhost rabbitmq]# mv rabbitmq.config.example  rabbitmq.config
[root@localhost rabbitmq]# vim rabbitmq.config 

修改下面配置文件的内容 第349行

# 开启rabbitmq的web访问界面:
[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management
  • 输入对应的ip即可以登录

    有默认用户guest 密码也是guest

添加用户并且授权用户
[root@localhost ~]# rabbitmqctl add_user root 1
Adding user "root" ...
[root@localhost ~]# rabbitmqctl set_user_tags root administrator
Setting tags for user "root" to [administrator] ...
[root@localhost ~]# rabbitmqctl list_users
Listing users ...
user    tags
guest   [administrator]
root    [administrator]
[root@localhost ~]# rabbitmqctl set_permissions -p "/" root ".*" ".*" ".*"
Setting permissions for user "root" in vhost "/" ...
添加数据存放目录和日志存放目录
[root@localhost ~]# mkdir -p /data/rabbitmq/data
[root@localhost ~]# mkdir -p /data/rabbitmq/logs
[root@localhost ~]# chmod 777 -R /data/rabbitmq
[root@localhost ~]# chown rabbitmq.rabbitmq /data/ -R
创建配置文件:
[root@localhost ~]# vim /etc/rabbitmq/rabbitmq-env.conf
[root@localhost ~]# cat /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/logs
重启服务
[root@localhost ~]# systemctl restart rabbitmq-server
查看端口
[root@localhost ~]# ss -ntlp

1564157344617

4369 – erlang发现端口
5672 --程序连接端口
15672 – 管理界面ui端口
25672 – server间内部通信口

拷⻉erlang.cookie
[root@localhost ~]# cd /var/lib/rabbitmq/
# ⽤scp的⽅式将rabbitmq-1节点的.erlang.cookie的值复制到其他两个节点中。
[root@localhost rabbitmq]# scp .erlang.cookie 192.168.10.129:/var/lib/rabbitmq/
root@192.168.10.129's password: 
.erlang.cookie                                                                                                       100%   20    14.6KB/s   00:00    
[root@localhost rabbitmq]# scp .erlang.cookie 192.168.10.130:/var/lib/rabbitmq/
root@192.168.10.130's password: 
.erlang.cookie

各节点是经由过程⼀个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,⽂件是400的权限。所以必须保证各节点cookie⼀致,不然节点之间就⽆法通信.

(官方在介绍集群的文档中提到过.erlang.cookie 一般会存在这两个地址:第一个是home/.erlang.cookie;第二个地方就是/var/lib/rabbitmq/.erlang.cookie。如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在{home}目录下,也就是$home/.erlang.cookie。如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。)

将mq-2、mq-3作为内存节点加⼊mq-1节点集群中
在mq-2、mq-3执⾏如下命令:
[root@localhost ~]# systemctl restart rabbitmq-server
[root@localhost ~]# rabbitmqctl stop_app  #停止节点
[root@localhost ~]# rabbitmqctl reset   #如果有数据需要重置,没有则不用
[root@localhost ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq-1  #添加到磁盘节点
Clustering node 'rabbit@rabbitmq-2' with 'rabbit@rabbitmq-1' ...
[root@localhost ~]# rabbitmqctl start_app  #启动节点
Starting node 'rabbit@rabbitmq-2' ...
======================================================================
[root@localhost ~]# systemctl restart rabbitmq-server
[root@localhost ~]# rabbitmqctl stop_app
[root@localhost ~]# rabbitmqctl reset
[root@localhost ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq-1
Clustering node 'rabbit@rabbitmq-3' with 'rabbit@rabbitmq-1' ...
[root@localhost ~]# rabbitmqctl start_app
Starting node 'rabbit@rabbitmq-3' ...

(1)默认rabbitmq启动后是磁盘节点,在这个cluster命令下,mq-2和mq-3是内存节点,
mq-1是磁盘节点。
(2)如果要使mq-2、mq-3都是磁盘节点,去掉--ram参数即可。
(3)如果想要更改节点类型,可以使⽤命令rabbitmqctl change_cluster_node_type
disc(ram),前提是必须停掉rabbit应⽤
注:
#如果有需要使用磁盘节点加入集群
 [root@rabbitmq-2 ~]# rabbitmqctl join_cluster  rabbit@rabbitmq-1
 [root@rabbitmq-3 ~]# rabbitmqctl join_cluster  rabbit@rabbitmq-1

image-20231108154240796

登录上去有上面这几个即就是添加成功了

查看集群状态
# 在任意一个上面即可查看
在 RabbitMQ 集群任意节点上执行 rabbitmqctl cluster_status来查看是否集群配置成功。
在mq-1磁盘节点上面查看
[root@localhost ~]# rabbitmqctl cluster_status

1564158874154

添加一个新的队列
  • 添加队列

image-20231108154447835

  • 更改为集群可看

    当前这个只有mq-1可用

image-20231108154617880

修改 修改完之后就跟上面得一样了

[root@localhost ~]# rabbitmqctl set_policy  ha-all "^" '{"ha-mode":"all"}'

RabbitMq负载均衡配置-HAProxy

安装HAProxy
[root@localhost ~]# yum install haproxy
修改配置文件
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
bal
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    nbproc      4
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    retries                 3
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout check           10s
    maxconn                 2048
#---------------------------------------------------------------------
##监控查看本地状态#####
listen admin_stats
        bind *:88
    mode http
    option httplog
    option httpclose
    log 127.0.0.1 local0 err
    stats uri  /haproxy
    stats auth root:1
    stats refresh 30s
####################################
###反代监控
frontend server
    bind *:5670
    log global
    mode tcp
    #option forwardfor
    default_backend rabbitmq
    maxconn 3
backend rabbitmq
    mode        tcp
    log         global
    balance     roundrobin
    server      rabbitmq1 192.168.10.128:5672 check inter 2000s rise 2 fall 3
    server      rabbitmq2 192.168.10.129:5672 check inter 2000s rise 2 fall 3
    server      rabbitmq3 192.168.10.130:5672 check inter 2000s rise 2 fall 3
    
[root@localhost ~]# systemctl start haproxy
[root@localhost ~]# ss -ntlp | grep 88
LISTEN     0      128          *:88                       *:*                   users:(("haproxy",pid=17070,fd=5),("haproxy",pid=17069,fd=5),("haproxy",pid=17068,fd=5),("haproxy",pid=17067,fd=5))
登录haproxy

192.168.10.128:88/haproxy

mysql授权root用户远程登录
[root@localhost ~]# mysql -uroot -p'Cjb@1234'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all on *.* to 'root'@'%' identified by 'Cjb@1234';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> \q
Bye

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

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

相关文章

Python算法例8 将整数A转换为B

1. 问题描述 给定整数A和B,求出将整数A转换为B,需要改变bit的位数。 2. 问题示例 把31转换为14,需要改变2个bit位,即:(31)10(11111)2,(14&…

一篇文章带你使用(MMKV--基于 mmap 的高性能通用 key-value 组件)

一、MMKV是什么? MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。也是腾讯微信团队使用的技术。 支持的数据类型 支持以下 Java 语言基础类型: boolean、int…

linux安装jdk和weblogic易错点

1.版本问题,如果版本不兼容,安装的时候会报错,所有安装之前要确认好版本 jdk1.6,weblogic10 2.jdk安装后配置文件 JAVA_HOME ,CLASSPATH,PATH,配置问你的追加,用冒号链接 修改后需要用source 刷新下 3安装…

SpringCloudAlibaba系列之Nacos配置管理

目录 说明 认识配置中心 Nacos架构图 Nacos配置管理实现原理 核心源码分析-客户端 核心源码分析-服务端 配置修改的实时通知 主流配置中心对比 小小收获 说明 本篇文章主要目的是从头到尾比较粗粒度的分析Nacos配置中心的一些实现,很多细节没有涉及&#…

接口---默认方法

用户操作界面 package Default;public class Dome02interface {public static void main(String[] args) {// 创建实现类对象 // MyInterfaceDefaultA A new MyInterfaceDefaultA(); // A.method01(); // System.out.println("--------------"); // 调用默认方…

Linux下找出吃内存的方法

几个 个 Linux 内存查看方法 1、free命令 2、 vmstat命令 3、 /proc/meminfo 命令 4、 top命令 5、 htop 命令 6、查看进程内存信息 内存性能指标 系统内存使用情况,比如已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等。 共享内存是通过 tmp…

RISC-V处理器设计(五)—— 在 RISC-V 处理器上运行 C 程序

目录 一、前言 二、从 C 程序到机器指令 三、实验 3.1 实验环境 3.11 Windows 平台下环境搭建 3.12 Ubuntu 平台下环境搭建 3.13 实验涉及到的代码或目录 3.2 各文件作用介绍 3.2.1 link.lds 3.2.2 start.S 3.2.3 lib 和 include 目录 3.2.4 common.mk 3.2.5 demo …

【python海洋专题四十三】海洋指数画法--单色渐变柱状图

【python海洋专题四十三】海洋指数画法–单色渐变柱状图 【python海洋专题四十三】海洋指数画法–单色渐变柱状图 数据:AMO_index 数据:AMO_index 结果展示: 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二…

C++学习---动态内存

文章目录 堆和栈new和delete操作符数组的动态内存分配对象的动态内存分配 堆和栈 在C中 栈:是一种静态内存分配区域,用于存储局部变量和函数调用的上下文信息。在栈上的内存分配和释放都是自动管理的,遵循后进先出(LIFO&#xf…

从vue源码中看diff算法

一、v-for必须要指定key,其作用是什么? 在源码中有一个函数为,其中就是通过判断两个vnode的type和key进行判断,如果这两个属性相同,那么这两个vnode就是相同,所以在设置key的时候也不可以设置为object等无…

基于SSM的二手车交易网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

网工内推 | 上市公司,云平台运维,IP认证优先,13薪

01 上海新炬网络信息技术股份有限公司 招聘岗位:云平台运维工程师 职责描述: 1、负责云平台运维,包括例行巡检、版本发布、问题及故障处理、平台重保等,保障平台全年稳定运行; 2、参与制定运维标准规范与流程&#x…

【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割5(训练篇)

在本系列的开篇,就对整个项目训练所需要的所有模块都进行了一个简要的介绍,尤其是针对训练中需要引入的各个结构,进行一个串联操作。 而在之前的数据构建篇和网络模型篇中,都对其中的每一个组块进行了分别的验证,预先…

python3+requests接口自动化测试框架

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的…

MCU常见通信总线串讲(四)—— SPI总线协议

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言一…

什么是API接口测试?这可能是全网最全的教程了!

什么是 API ? API 是“应用程序编程接口”的缩写,是一种允许不同应用程序之间相互通信和交换数据的接口。就好像在餐厅点餐一样,你只需要告诉服务员你想要的食物,而不需要了解厨房中的具体操作,服务员会把你的订单传递…

深入asyncio:构建异步应用

文章目录 异步I/O操作示例:异步网络请求异步任务管理示例:并发执行多个任务使用异步队列示例:生产者-消费者模式在现代软件开发中,异步编程已经成为提高应用性能和响应性的关键技术之一。Python的asyncio库为编写单线程并发代码提供了强大的支持。本文将深入探讨asyncio的三…

CCF CSP认证 历年题目自练Day44

题目一 试题编号: 201612-3 试题名称: 权限查询 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权机制获得系统中各个…

python教程:把多张图片,合并成一张图

D:\Wdpython\environment\Scripts\python.exe D:/Wdpython/爬虫/测试8.py 图片列表 10 [‘刘亦菲/刘亦菲_1.jpg’, ‘刘亦菲/刘亦菲_11.jpg’, ‘刘亦菲/刘亦菲_12.jpg’, ‘刘亦菲/刘亦菲_13.jpg’, ‘刘亦菲/刘亦菲_15.jpg’, ‘刘亦菲/刘亦菲_2.jpg’, ‘刘亦菲/刘亦菲_3.jp…

MacOS升级后命令行出现xcrun: error: invalid active developer path报错信息

在Mac上用g编译cpp文件时,出现以下(类似于工具环境问题的)报错: 解决方案:重新安装最新版的MacOS Command Line Tools xcode-select --install重新尝试编译: 编译成功(忽略这个warning&…