网站首页 > 技术教程 正文
Coolpy7分布式技术,支持多个Coolpy7 Core提供跨数据中心(多活)模式组建群集,支持群集零手动维护(基于Gossip分布式协议作为群集节点状态维护)。Coolpy7从版本号V7.3.2.3开始支持本功能。请到Coolpy7之github项目release下载相关版本https://github.com/Coolpy7/Coolpy7/releases。也可以通过docker安装。
Coolpy7分布集群设计?
Coolpy7消息服务器集群基于Gossip协议作为服务发现,基于UDP作为集群节点间消息转发通信的分布式设计,集群原理可简述为下述几条规则:
- 所有节点独立维护自有的身份验证、订阅、取消订阅事件处理
- 集群之间只会转发PUBLISH消息,并且消息体少于63K的消息
- 节点内组播消息不被转发,只在当前节点有效
- 集群之间不保证消息不丢失,只转发消息到所有在线节点,转发会忽略离线节点
- 客户端连接某一个节点后,将会收到来自其他节点给它的消息(于订阅的主题)
Coolpy7集群架构图
消息分发流
手动配置管理集群
假设部署三台服务器 192.168.1.100, 192.168.1.101, 192.168.1.102 上部署集群:
节点名 IP
node1 192.168.1.100
node2 192.168.1.101
node3 192.168.1.102
节点名不允许重复,否则群集将无法自动维护集群状态
节点1:192.168.1.100节点设置
# 下载服务器端
sudo wget https://github.com/Coolpy7/Coolpy7/releases/download/7.3.2.3/go_build_Coolpy7_go_linux.zip
# 解压文件
unzip go_build_Coolpy7_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_go_linux
# 启动Coolpy7 启动参数
# csk 集群服务同步验证token,集群各节点转发消息时验证此口令,防止恶意入侵集群
# nid 集群节点名称,必须集群中唯一
# mbs 连接集群其他节点,只需填其他节点信息,以半角豆号分隔多个节点信息
./go_build_Coolpy7_go_linux -csk=12345678 -nid=node1 -mbs=192.168.1.101:7946,192.168.1.102:7946
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用
2020/02/14 14:48:27 cluster on udp 192.168.1.100:7946
2020/02/14 14:48:27 cluster sync on udp port 7947
2020/02/14 14:48:27 Coolpy7 v7.3.2.3 tcp [::]:1883 plugin build golang v1.13.1
打印消息提示,群集使用UDP的7946端口进行集群服务发现,UDP的7947端口进行消息同步服务。
如需自定义端口可通过启动参数
-crp int 集群发现端口(UDP) (default 7946)
-csp int 集群同步端口(UDP) (default 7947)
节点2:192.168.1.101节点设置
# 下载服务器端
sudo wget https://github.com/Coolpy7/Coolpy7/releases/download/7.3.2.3/go_build_Coolpy7_go_linux.zip
# 解压文件
unzip go_build_Coolpy7_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_go_linux
# 启动Coolpy7 启动参数
# csk 集群服务同步验证token,集群各节点转发消息时验证此口令,防止恶意入侵集群
# nid 集群节点名称,必须集群中唯一
# mbs 连接集群其他节点,只需填其他节点信息,以半角豆号分隔多个节点信息
./go_build_Coolpy7_go_linux -csk=12345678 -nid=node2 -mbs=192.168.1.100:7946,192.168.1.102:7946
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用
2020/02/14 14:48:27 cluster on udp 192.168.1.101:7946
2020/02/14 14:48:27 cluster sync on udp port 7947
2020/02/14 14:48:27 Coolpy7 v7.3.2.3 tcp [::]:1883 plugin build golang v1.13.1
节点3:192.168.1.102节点设置
# 下载服务器端
sudo wget https://github.com/Coolpy7/Coolpy7/releases/download/7.3.2.3/go_build_Coolpy7_go_linux.zip
# 解压文件
unzip go_build_Coolpy7_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_go_linux
# 启动Coolpy7 启动参数
# csk 集群服务同步验证token,集群各节点转发消息时验证此口令,防止恶意入侵集群
# nid 集群节点名称,必须集群中唯一
# mbs 连接集群其他节点,只需填其他节点信息,以半角豆号分隔多个节点信息
./go_build_Coolpy7_go_linux -csk=12345678 -nid=node3 -mbs=192.168.1.100:7946,192.168.1.101:7946
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用
2020/02/14 14:48:27 cluster on udp 192.168.1.102:7946
2020/02/14 14:48:27 cluster sync on udp port 7947
2020/02/14 14:48:27 Coolpy7 v7.3.2.3 tcp [::]:1883 plugin build golang v1.13.1
至此集群搭建完毕,现在即可通过MQTT客户端工具(MQTTLens)等进行相关集群功能测试。可从A节点连接的客户端推送消息,然后B,C节点的客户端如果订阅了相同主题将会收到相关跨节点消息。
自动愈合,自动清除异常节点
集群自动恢复功能说明:
- 节点网络异常离线各节点会发现ping包没有响应,
- 随后邀请其他在线节点向异常节点发起ping测试,
- 如经过三轮周期没有得到异常节点响应
- 当前节点设置该节点为离线状态
- 移出在线节点列表。
- 异常节点再次上线
- 所有在线节点收到状态信号
- 所有节点设置该节点为在线
- 添加该节点到在线列表
防火墙设置
Coolpy7使用UDP协议进行集群节点状态信号和消息同步通信,所以需要开始相关UDP端口防火墙
关于docker部署方式
最新版本docker镜像已更新到latest标签版本下,docker hub地址:https://hub.docker.com/r/coolpy7/coolpy7_core ,docker相关部署方式请参阅本手册相关章节。Docker部署(Windows运行CP7)/kai-shi-shi-yong/docker-bu-shu-windows-yun-hang-cp7
猜你喜欢
- 2024-11-17 Docker容器中的备份、恢复、迁移、导入、导出
- 2024-11-17 Linux设备树的传递及Kernel中对设备树的分析
- 2024-11-17 有没有学习Linux比较好的入门书籍
- 2024-11-17 sql查询重复记录、删除重复记录方法
- 2024-11-17 微软承认正开发适用于Linux平台的Microsoft Teams
- 2024-11-17 如何使用dig命令挖掘域名解析信息
- 2024-11-17 微软改名部又出手:Office 365正在悄悄更名为Microsoft 365
- 2024-11-17 useradd命令的使用(useradd d)
- 2024-11-17 什么?Coolbpf 不仅可以远程编译,还可以发现网络抖动!| 龙蜥技术
- 2024-11-17 Linux学习路线图(从入门到上岗,带自学路线图)
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)