skynet master/slave 模式
一、相关配置项
harbor
节点唯一性编号,1~255 之间的任意整数,因此一个 skynet 网络最多支持 255 个节点。
若某个 slave 意外退出,则对应的 harbor 会被废弃,不可再使用(即使该 slave 后续重启),这样是为了防止网络中其它服务还持有这个断开的 slave 上的服务地址,而一个新的进程以相同的 harbor 接入时,是无法保证旧地址和新地址不重复的。也就是说该模式下,已经用过的 harbor 无法再次使用,所以该模式不能实现热切换,而只能充当单个物理机压力的分担。standalone
slave 节点指定为 nil,master 需要配置该选项(控制中心的地址和端口),表示这个进程是 master,它会监听这个地址并等待其它节点接入。master
指定 skynet 控制中心的地址和端口,与 master 节点 standalone 项相同,slave 会尝试连接这个地址。address
当前 skynet 节点的地址和端口,方便其它节点和它组网,master 会通过(harbor 和 address)区分不同的 slave。
二、部署测试
由于测试条件限制,所有 master / slave 均部署在同一台测试机上:
master:
harbor = 1
standalone = "192.168.255.128:20003"
master = "192.168.255.128:20003"
address = "192.168.255.128:30001"
slave:
harbor= 2
standalone = nil
master = "192.168.255.128:20003"
address = "192.168.255.128:30002"
- 先启动 master,master 日志:
- 再启动 slave:
slave 日志:
master 日志:
- 杀死 slave 进程后,master 日志:
- 重启启动 slave,slave 启动失败:
因为 master 主动关闭了连接:
这是因为 harbor = 2 之前已经用过了,解决方法:修改 slave 配置项 harbor 为3,再次重启,slave 正常。
三、master 全部配置:
thread = 8 --启动多少个工作线程,通常不要将它配置超过你实际拥有的 CPU 核心数root = "/root/skynet-master/" -- 指定工作目录
proj_root = "/root/server_01/"luaservice = root.."service/?.lua;"..proj_root.."service/?.lua" -- 寻址对于的lua文件的目录列表lualoader = root.."lualib/loader.lua" -- 默认的加载器 lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua;"..proj_root.."lib/?.lua" lua_cpath = root.."luaclib/?.so" cpath = root.."cservice/?.so" -- 用 C 编写的服务模块的位置,通常指 cservice 下那些 .so 文件。如果你的系统的动态库不是以 .so 为后缀,需要做相应的修改。这个路径可以配置多项,以 ; 分割logger = proj_root.."log/game.log" -- 决定了 skynet 内建的 skynet_error 这个 C API 将信息输出到什么文件中。若配置为 nil,则输出到标准输出。
logpath = proj_root.."/log" -- 配置一个路径,当你运行时为一个服务打开 log 时,这个服务所有的输入消息都会被记录在这个目录下,文件名为服务地址。bootstrap = "snlua bootstrap" -- skynet 会启动 snlua 这个服务profile = true -- 默认为 true, 可以用来统计每个服务使用了多少 cpu 时间。在 DebugConsole 中可以查看。会对性能造成微弱的影响。start = "main" -- 这是 bootstrap 最后一个环节将启动的 lua 服务,也就是你定制的 skynet 节点的主程序。默认为 main ,即启动 main.lua 这个脚本。这个 lua 服务的路径由 luaservice 指定。nodename = "cluster_center" -- 节点服务名称
harbor = 1
standalone = "192.168.255.128:20003"
master = "192.168.255.128:20003"
address = "192.168.255.128:30001"
四、slave 全部配置:
thread = 8 --启动多少个工作线程,通常不要将它配置超过你实际拥有的 CPU 核心数root = "/root/skynet-master/" -- 指定工作目录
proj_root = "/root/server_01/"luaservice = root.."service/?.lua;"..proj_root.."service/?.lua" -- 寻址对于的lua文件的目录列表lualoader = root.."lualib/loader.lua" -- 默认的加载器 lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua;"..proj_root.."lib/?.lua" lua_cpath = root.."luaclib/?.so" cpath = root.."cservice/?.so" -- 用 C 编写的服务模块的位置,通常指 cservice 下那些 .so 文件。如果你的系统的动态库不是以 .so 为后缀,需要做相应的修改。这个路径可以配置多项,以 ; 分割logger = proj_root.."log/game.log" -- 决定了 skynet 内建的 skynet_error 这个 C API 将信息输出到什么文件中。若配置为 nil,则输出到标准输出。
logpath = proj_root.."/log" -- 配置一个路径,当你运行时为一个服务打开 log 时,这个服务所有的输入消息都会被记录在这个目录下,文件名为服务地址。bootstrap = "snlua bootstrap" -- skynet 会启动 snlua 这个服务profile = true -- 默认为 true, 可以用来统计每个服务使用了多少 cpu 时间。在 DebugConsole 中可以查看。会对性能造成微弱的影响。start = "main" -- 这是 bootstrap 最后一个环节将启动的 lua 服务,也就是你定制的 skynet 节点的主程序。默认为 main ,即启动 main.lua 这个脚本。这个 lua 服务的路径由 luaservice 指定。nodename = "cluster_gate1" -- 节点服务名称
harbor = 2
standalone = nil
master = "192.168.255.128:20003"
address = "192.168.255.128:30002"
问题一、disconnect fd = *, error = /root/skynet-master/service/cmaster.lua:63: Slave 1 already register on ip: port
原因:Harbor 重复,Harbor 默认为 1。
skynet master/slave 模式相关推荐
- 适合MySQL master/slave模式的JDBC driver: lbpool
去年写了篇MySQL分表实现上百万上千万记录分布存储的批量查询设计模式的文章,思路是基于MySQL手动分表的.缺点是增加了程序的复杂性.现在有一个更简单和方便的现成的产品了,那就是lbpool lbp ...
- 主从多机matlab代码,Jenkins的Master Slave主从进行多机多环境部署-配置
当我们写好一个程序以后,需要在多台机器上进行部署操作,如果我们使用每台机器独立部署的话,就很耗时间,这个时候我们可以利用Jenkins的主从机制来进行部署操作. 首先看个图,大概理解一下Master ...
- PGPool-II master/slave mode using caveat
PGPool-II的master/slave模式类似load balance模式.只不过master/slave是与PGPool-II以外的第三方复制软件结合使用的.(如当前支持的slony和stre ...
- mysql master slave区别_mysql master/slave 使用感受
使用mysql的master/slave部署已经有一段时间.这种架构不能从根本上弥补数据结构设计失误带来的性能问题.聊胜于无. master/slave模式中,数据同步非常快.而master/slav ...
- RocketMQ多Master多Slave模式部署
每个 Master 配置一个 Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,向应用返回成功. 优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性 ...
- redis配置master-slave模式
由于云服务器存在闪断现象,项目线上会存在基于redis的功能在闪断时段内出现异常,所以redis需要做master-slave模式.直接上代码: 原单机redis,RedisConnectionFac ...
- Redis: Redis的主从复制(Master/Slave),一主二仆,薪火相传,反客为主,哨兵模式sentinel
命令: slaveof 主库ip 主库端口 配置从库 info replication 查看redis连接情况 slaveof no ...
- MongoDB学习笔记——Master/Slave主从复制
Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提 ...
- Redis(八):Redis的复制(Master/Slave)
Redis的复制(Master/Slave)目录导航: 是什么 能干嘛 怎么玩 复制原理 哨兵模式(sentinel) 复制的缺点 是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置 ...
- redis主从复制_Redis 的主从复制(Master/Slave)
1. 是什么 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略自动同步到备机的 master/slave 机制,Master以写为主,Slave 以读为主 2. 能干嘛 数据冗余:主从复制 ...
最新文章
- python没用_大部分Python资料都没有说到的重点-用实战教你解决问题的思路
- VC++中把一个对话框最小化到托盘
- C# WinForm窗体四周阴影效果
- PyQt5笔记(01) -- 创建空白窗体
- susmote个人网站博客论坛(TexTec | 关注互联网技术,传播极客精神)
- mock教程 java_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
- newifid1网页服务器,newifi d1刷老毛子固件测试
- 区块链毕业设计中期检查表模板
- 60秒学脑科学常识——《科学美国人》专栏文集
- tools: USB、MiniUSB、MicroUSB接线
- 自然风景Mac高清动态壁纸分享来了
- Redis Lua 列表批量操作
- 湖北5G继续加码!今年投资64亿元,新建5G基站5万个
- 亿级流量电商详情页系统实战-25.亿级流量商品详情页的多级缓存架构介绍
- 2022海外流媒体十大技术趋势
- 关于HBuilderX的简单介绍
- 安卓桌面软件_金其利银河麒麟桌面操作系统
- 400G PAM4, ANEG LT 自适应及链路学习(Autonegotiation Link Training),浅析自适应及链路学习功能在400/200/100G PAM4模式
- 小红书如何快速运营变现;新手必看运营变现攻略大全丨国仁网络资讯
- Python使用LMDB(闪电内存映射数据库)
热门文章
- pycharm远程调试的“bug”:/miniconda3/envs/learn/bin/python: can‘t open file ‘//<a2a1d7b1c-6145-4e45-...
- 电信物联网平台对接教程
- 计算机无法打开浏览器,Internet选项打不开怎么办?IE浏览器internet选项无法打开解决方法...
- 游戏策划试题(1)——摘自牛客网
- 微信公众账号开发教程(二) 基础框架搭建——转自http://www.cnblogs.com/yank/p/3392394.html...
- 驱动启动时遇到:打开服务失败(错误码=6):句柄无效 解决方案
- Android 常用布局介绍
- 在线图片处理api接口
- 文件管理服务器搭建教程,文件服务器搭建教程
- 元宵节快乐 | 谈心