一、相关配置项

  • 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 模式相关推荐

  1. 适合MySQL master/slave模式的JDBC driver: lbpool

    去年写了篇MySQL分表实现上百万上千万记录分布存储的批量查询设计模式的文章,思路是基于MySQL手动分表的.缺点是增加了程序的复杂性.现在有一个更简单和方便的现成的产品了,那就是lbpool lbp ...

  2. 主从多机matlab代码,Jenkins的Master Slave主从进行多机多环境部署-配置

    当我们写好一个程序以后,需要在多台机器上进行部署操作,如果我们使用每台机器独立部署的话,就很耗时间,这个时候我们可以利用Jenkins的主从机制来进行部署操作. 首先看个图,大概理解一下Master ...

  3. PGPool-II master/slave mode using caveat

    PGPool-II的master/slave模式类似load balance模式.只不过master/slave是与PGPool-II以外的第三方复制软件结合使用的.(如当前支持的slony和stre ...

  4. mysql master slave区别_mysql master/slave 使用感受

    使用mysql的master/slave部署已经有一段时间.这种架构不能从根本上弥补数据结构设计失误带来的性能问题.聊胜于无. master/slave模式中,数据同步非常快.而master/slav ...

  5. RocketMQ多Master多Slave模式部署

    每个 Master 配置一个 Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,向应用返回成功. 优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性 ...

  6. redis配置master-slave模式

    由于云服务器存在闪断现象,项目线上会存在基于redis的功能在闪断时段内出现异常,所以redis需要做master-slave模式.直接上代码: 原单机redis,RedisConnectionFac ...

  7. Redis: Redis的主从复制(Master/Slave),一主二仆,薪火相传,反客为主,哨兵模式sentinel

    命令: slaveof 主库ip  主库端口         配置从库 info replication                         查看redis连接情况 slaveof  no ...

  8. MongoDB学习笔记——Master/Slave主从复制

    Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提 ...

  9. Redis(八):Redis的复制(Master/Slave)

    Redis的复制(Master/Slave)目录导航: 是什么 能干嘛 怎么玩 复制原理 哨兵模式(sentinel) 复制的缺点 是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置 ...

  10. redis主从复制_Redis 的主从复制(Master/Slave)

    1. 是什么 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略自动同步到备机的 master/slave 机制,Master以写为主,Slave 以读为主 2. 能干嘛 数据冗余:主从复制 ...

最新文章

  1. python没用_大部分Python资料都没有说到的重点-用实战教你解决问题的思路
  2. VC++中把一个对话框最小化到托盘
  3. C# WinForm窗体四周阴影效果
  4. PyQt5笔记(01) -- 创建空白窗体
  5. susmote个人网站博客论坛(TexTec | 关注互联网技术,传播极客精神)
  6. mock教程 java_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
  7. newifid1网页服务器,newifi d1刷老毛子固件测试
  8. 区块链毕业设计中期检查表模板
  9. 60秒学脑科学常识——《科学美国人》专栏文集
  10. tools: USB、MiniUSB、MicroUSB接线
  11. 自然风景Mac高清动态壁纸分享来了
  12. Redis Lua 列表批量操作
  13. 湖北5G继续加码!今年投资64亿元,新建5G基站5万个
  14. 亿级流量电商详情页系统实战-25.亿级流量商品详情页的多级缓存架构介绍
  15. 2022海外流媒体十大技术趋势
  16. 关于HBuilderX的简单介绍
  17. 安卓桌面软件_金其利银河麒麟桌面操作系统
  18. 400G PAM4, ANEG LT 自适应及链路学习(Autonegotiation Link Training),浅析自适应及链路学习功能在400/200/100G PAM4模式
  19. 小红书如何快速运营变现;新手必看运营变现攻略大全丨国仁网络资讯
  20. Python使用LMDB(闪电内存映射数据库)

热门文章

  1. pycharm远程调试的“bug”:/miniconda3/envs/learn/bin/python: can‘t open file ‘//<a2a1d7b1c-6145-4e45-...
  2. 电信物联网平台对接教程
  3. 计算机无法打开浏览器,Internet选项打不开怎么办?IE浏览器internet选项无法打开解决方法...
  4. 游戏策划试题(1)——摘自牛客网
  5. 微信公众账号开发教程(二) 基础框架搭建——转自http://www.cnblogs.com/yank/p/3392394.html...
  6. 驱动启动时遇到:打开服务失败(错误码=6):句柄无效 解决方案
  7. Android 常用布局介绍
  8. 在线图片处理api接口
  9. 文件管理服务器搭建教程,文件服务器搭建教程
  10. 元宵节快乐 | 谈心