1. 准备3台 centos服务器  192.168.233.128    192.168.233.130    192.168.233.131

防火墙放开 集群端口, 这里一并把所有rabbitmq用到的端口都放开

firewall-cmd --zone=public --add-port=4369/tcp --permanent

firewall-cmd --zone=public --add-port=5671-5672/tcp --permanent

firewall-cmd --zone=public --add-port=25672/tcp --permanent

firewall-cmd --zone=public --add-port=35672-35682/tcp --permanent

firewall-cmd --zone=public --add-port=15672/tcp --permanent

firewall-cmd --zone=public --add-port=61613-61614/tcp --permanent

firewall-cmd --zone=public --add-port=1883/tcp --permanent

firewall-cmd --zone=public --add-port=8883/tcp --permanent

firewall-cmd --zone=public --add-port=15674-15675/tcp --permanent

firewall-cmd --reload

2. 修改host映射  修改 /etc/hosts 文件 ,方便3台机器访问

添加如下  ,添加后重启 3台机器

192.168.233.128 rabbitmq1

192.168.233.130 rabbitmq2

192.168.233.131 rabbitmq3

3. 修改cookie文件, 统一成一个key , [每个erlang程序都一个cookie]

这个cookie 可以在 rabbitmq的日志中 查找到

如图 cookie 文件就在 这个 home dir 目录中

cd /var/lib/rabbitmq

ls -a      --这个是查找目录下所有文件. cookie文件默认是隐藏的

用这个 .erlang.cookie文件中的 key 替换掉 rabbitmq 2,3 中的key ,使 3 台服务器的 .erlang.cookie中的内容一致

4. 集群搭建  参考官网 https://www.rabbitmq.com/clustering.html

根据官网介绍: 我们把rabbitmq2 加入到 rabbitmq1的集群中

在 rabbitmq2 上 停止 rabbitmq

rabbitmqctl stop_app

rabbitmqctl join_cluster rabbit@rabbitmq1

rabbitmqctl start_app

查看 集群状态

rabbitmqctl cluster_status

发现 nodes节点已经变成2个了, 同理 把rabbitmq3加入 rabbitmq1集群中

5. 集群搭建完成后, 添加rabbitmq用户

rabbitmqctl add_user test test //添加用户,后面两个参数分别是用户名和密码,我这都用test了。

rabbitmqctl set_permissions -p / test ".*" ".*" ".*" //添加权限

rabbitmqctl set_user_tags test administrator //修改用户角色

然后登录 ui页面 http://192.168.233.128:15672/#/

发现三个 info中 都是disc 都是磁盘节点

如果想 把节3点改成 内存节点 , 参考官网 http://www.rabbitmq.com/clustering.html

在 rabbitmq3 上执行

rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type ram

rabbitmqctl start_app

可以看到 info中 disc变成RAM了

其他集群命令如: 从集群删除 某节点, 参考官网 都有

-----------------------------------------------------------------------------高可用集群-------------------------------------------------------------------------------------

参考: http://www.rabbitmq.com/ha.html

queue 有两种模式  默认   default

          镜像    mirror

queue mirror  =>  master / slave   高可用的队列方案

Each mirrored queue consists of one master and one or more mirrors.

Messages published to the queue are replicated to all mirrors

1. 怎么配置

Mirroring parameters are configured using policies.

HA mode: 把queue 同步到哪些机器上 , 这里选用all 一般业务也就3台rabbitmq服务器就差不多了

ha-sync-mode : 异步策略,比如 新加入节点A 到集群中, automatic=自动同步队列数据 到节点A ,manual 就手动

简单测试下  新建policy

新建 queue test1

发现 node 显示+2  表示 该队列 当前主节点(Master)是rabbitmq3  ,从节点(Slaver)是 rabbitmq1和2

features 中 显示了 队列使用了 我们刚刚定义的 policy

可以自己做下测试 :  新建 policy,不设置 ha-sync-mode

让 rabbitmq1节点挂掉, 推数据到test1 , 然后让 rabbitmq1 重新启动, 数据会不会自动同步到 rabbitmq1 (不会的, 需要手动同步, 而 ha-sync-mode=automatic就会,)

下面展示 c#中怎么连接 rabbitmq集群

class Producter
{
const string exchangeName = "myexchange";
const string queueName = "test1";
const string routeKey = "test1";
public static void Main()
{
//创建连接工厂
ConnectionFactory factory = new ConnectionFactory
{
UserName = "test",//用户名
Password = "test",//密码
//HostName = "118.24.152.28",//rabbitmq ip
}; //创建连接
var connection = factory.CreateConnection(new List<string>() { "192.168.141.128", "192.168.141.129", "192.168.141.130" });
//创建通道
var channel = connection.CreateModel(); var properties = channel.CreateBasicProperties(); properties.Persistent = true; //消息持久化 Console.WriteLine(string.Format("开始时间: {0}", DateTime.Now));
for (int i = ; i < int.MaxValue; i++)
{
try
{
var msg = Encoding.UTF8.GetBytes(string.Format("你好{0},{1} ", i, string.Join(",", Enumerable.Range(, )))); channel.BasicPublish(string.Empty, routeKey, properties, msg); Console.WriteLine(i + " 执行完毕");
Thread.Sleep(); }
catch (Exception ex)
{ Console.WriteLine(ex.ToString());
}
}
Console.WriteLine(string.Format("结束时间: {0}", DateTime.Now)); channel.Close();
connection.Close();
}
}

rabbitmq3.7.5 centos7 集群部署笔记的更多相关文章

  1. RocketMQ 简单梳理 及 集群部署笔记【转】

    一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...

  2. Kubernetes集群部署笔记

    本作品由Galen Suen采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可.由原作者转载自个人站点. 概述 本文用于整理基于Debian操作系统使用kubeadm工具部署Kub ...

  3. RocketMQ 简单梳理 及 集群部署笔记

    一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...

  4. 3-RocketMQ 简单梳理 及 集群部署笔记

    原文:https://www.cnblogs.com/kevingrace/p/9015836.html 一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐 ...

  5. nacos 1.1.x 集群部署笔记

    Nacos 是什么? https://nacos.io/zh-cn/docs/what-is-nacos.html 服务(Service)是 Nacos 世界的一等公民.Nacos 支持几乎所有主流类 ...

  6. Nginx+Tomcat7+Mencached负载均衡集群部署笔记

    Nginx+Tomcat+Memcached负载均衡集群服务搭建 操作系统:CentOS6.5 本文档主要解说,怎样在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群s ...

  7. apache+tomcat集群部署笔记

    前提条件 安装gcc,gcc-c++两个编译器 yum install gcc yum install gcc-c++ 接下来开始安装集群相关环境: 1.下载apr,apr-util,pcre,apa ...

  8. Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)

    一.  ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  9. Quartz学习笔记:集群部署&高可用

    Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...

随机推荐

  1. 【HAOI2008】硬币购物

    既然没人写扩欧,那我就来一发吧. 扩欧也还好,就是跑的有点慢,然后写的时候还有点烦,不过还是卡过去了. 考场上看到这道题又蒙了...怎么回事第一题又要爆零了? 然后我打了个暴力测了一下极限数据根本过不 ...

  2. CANopen--Copley驱动器 ACJ-055-18 过程数据PDO的断电保存方法

    Copley CANopen 系列驱动器中,均保存有默认的 PDO 设置, 如下图所示 实际使用中,往往需要修改默认的 PDO 配置,以映射不同模式或功能下的 PDO 对象,但由于 PDO 配置无法存 ...

  3. jetty去掉项目名称访问

    对于web项目,访问路径是否包含项目名称等修改访问路径的配置方式: 我所使用的是maven进行管理,只需要在pom.xml中进行如下配置 <!-- jetty插件 jetty:run--> ...

  4. 数据库-mysql-DDL-表记录操作

  5. CSS 媒体查询@media

    1. 概述 1.1 定义 @media可以针对不同的屏幕尺寸(媒体类型)设置不同的样式,在响应式页面中,@media非常有用.重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面. 1. ...

  6. iOS -- Effective Objective-C 阅读笔记 (2)

    1: 多用类型常量, 少用 #define 预处理指令 #define 预处理指令会把碰到的所有 指定名称 一律换位 定义的内容, 这样的话, 假设此指令在某个头文件中, 那么所有引入这个头文件的代码 ...

  7. OCM 学习练习题目

    1:数据安装操作练习:考试题目 1: Creating a database & Server Configuration --[101]-- #创建数据库 1. Create the dat ...

  8. netstat常见基本用法(转)

    netstat 简介 Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字. ...

  9. SpringCloud路由(网关)

    springcloud网关接口就类似于转发 搭建路由网关项目(ZuulDemo) 1.创建pom.xml <project xmlns="http://maven.apache.org ...

  10. spring boot 配置文件

    spring boot使用一个全局配置文件:主要是以下两种类型 application.properties  :例:server.port=9998 application.yml(YAML)  : ...