rabbitmq3.7.5 centos7 集群部署笔记
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 集群部署笔记的更多相关文章
- RocketMQ 简单梳理 及 集群部署笔记【转】
一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...
- Kubernetes集群部署笔记
本作品由Galen Suen采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可.由原作者转载自个人站点. 概述 本文用于整理基于Debian操作系统使用kubeadm工具部署Kub ...
- RocketMQ 简单梳理 及 集群部署笔记
一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...
- 3-RocketMQ 简单梳理 及 集群部署笔记
原文:https://www.cnblogs.com/kevingrace/p/9015836.html 一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐 ...
- nacos 1.1.x 集群部署笔记
Nacos 是什么? https://nacos.io/zh-cn/docs/what-is-nacos.html 服务(Service)是 Nacos 世界的一等公民.Nacos 支持几乎所有主流类 ...
- Nginx+Tomcat7+Mencached负载均衡集群部署笔记
Nginx+Tomcat+Memcached负载均衡集群服务搭建 操作系统:CentOS6.5 本文档主要解说,怎样在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群s ...
- apache+tomcat集群部署笔记
前提条件 安装gcc,gcc-c++两个编译器 yum install gcc yum install gcc-c++ 接下来开始安装集群相关环境: 1.下载apr,apr-util,pcre,apa ...
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
- Quartz学习笔记:集群部署&高可用
Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...
随机推荐
- MySQL软件基本管理
1. 忘记密码 windows平台下,5.6.43版本mysql # 关闭mysql # 在cmd中执行:mysqld --skip-grant-tables # 在cmd中执行:mysql # 执行 ...
- 用vue+element-ui开发后台笔记
1.前端通过 formData: new FormData(), 构造对象传数值给后台! 当传给后台的参数中有图片的时候,需要把需要传输的数据通过构造对象new FormData()的形式存数据,并且 ...
- 021_nginx动态upstream检查
GET: 请求指定的页面信息,并返回实体主体.HEAD: 只请求页面的首部. #参考:http://tengine.taobao.org/document_cn/http_upstream_check ...
- 解决由腾讯qq浏览器引起win10系统桌面图标不停的闪烁问题
win10系统桌面图标不停的闪烁,虽然不会引起太大问题,但是看着实在郁闷在网上搜索了很久,像停止问题报告服务,重置为默认应用都无解,了解到大概是软件兼容性问题于是打开服务管理器,一个一个关闭不是微软的 ...
- Linux自动人机交互expect
exp_test.sh文件 #!/bin/bash/expect ## exp_test.sh set timeout -; spawn ssh localhost; expect { "( ...
- POJ 2115
ax=b (mod n) 该方程有解的充要条件为 gcd(a,n) | b ,即 b% gcd(a,n)==0 令d=gcd(a,n) 有该方程的 最小整数解为 x = e (mod n/d) 其中e ...
- SSH localhost免密不成功 + 集群状态显示Configured Capacity: 0 (0 KB)
前一天运行hadoop一切安好,今天重新运行出现BUG.下面对遇到的bug.产生原因以及解决方法进行一下简单总结记录. [bug1]用ssh localhost免密登录时提示要输入密码. 原因分析:之 ...
- [Linux]关于字节序的解析
剥鸡蛋的故事 <格列佛游记>中记载了两个征战的强国,你不会想到的是,他们打仗竟然和剥鸡蛋的姿势有关. 很多人认为,剥鸡蛋时应该打破鸡蛋较大的一端,这群人被称作“大端(Big endian) ...
- 17)django-模板的继承与导入
情况1:通常写页面都有个模板用来框定头部LOGO页面,左侧导航菜单,只有右部的内容不同.如果不使用模板就大量重复工作. 特别如果头部或者左侧导航需要修改或者添加,所有页面都需要修改.django 通过 ...
- swift 学习- 21 -- 类型转换
// 类型转换 可以判断实例的类型, 也可以将实例看做其父类的或者子类的实例 // 类型转换在 Swift 中使用 is 和 as 操作符实现, 这两个操作符提供了一种简单达意的方式去检查值的类型 或 ...