Appearance
代理集群部署
本页对应官方教程中的“群组配置”,适用于由 BungeeCord / Waterfall 或 Velocity 代理连接多个 Bukkit 子服的网络。机器人 WebSocket 由代理统一连接,各子服通过独立 TCP 控制连接接入代理。
安装组件
- 在代理的
plugins目录中安装与代理类型对应的StellarAnchorBot-BungeeCord.jar或StellarAnchorBot-Velocity.jar。 - 在每个 Bukkit / Spigot / Paper 子服的
plugins目录中安装StellarAnchorBot.jar。 - 启动代理和所有子服,插件会自动生成各自的配置文件;配置生成后即可编辑对应配置。
| 实例 | 配置文件 | 运行模式 |
|---|---|---|
| BungeeCord / Waterfall 网关 | plugins/StellarAnchorBot/config.yml | 代理网关配置 |
| Velocity 网关 | plugins/StellarAnchorBot/config.yml | 代理网关配置 |
| Bukkit / Paper 子服 | plugins/StellarAnchorBot/config.yml | PROXY_CLUSTER |
配置代理网关
打开生成的 config.yml,将 AutoOpen 设置为 true 即可,其余的如有需要可自行按下面的配置解释逐项修改(一般默认即可,不需要修改):
yaml
# StellarAnchorBot 主程序扩展核心 WebSocket 配置
websocket:
url: "ws://127.0.0.1:9090"
# 断线最大重连次数,-1 代表无限次重连
max_reconnect_times: 5
# 心跳包发送间隔,单位:秒;最低 30 秒,默认 60 秒
heartbeat_interval: 60
# 是否在启动插件时自动连接
# 此功能需提前开启机器人后台且机器人对接地址正确
AutoOpen: true
# 是否在机器人断开连接时自动重连
Reconnect: true| 配置项 | 作用 | 配置说明 |
|---|---|---|
websocket.url | 指定代理连接的机器人 WebSocket 地址 | 机器人主程序与代理同机时使用 ws://127.0.0.1:9090;分机部署时改为机器人所在机器的可达内网地址。这里填写的是 WebSocket 端口,不是 Web 管理后台端口。 |
websocket.max_reconnect_times | 连接失败时的最大重连次数 | 默认 5;需要持续重试时可改为 -1,表示无限重连。 |
websocket.heartbeat_interval | WebSocket 心跳间隔,单位为秒 | 默认 60,最低不能低于 30。通常保持默认值即可。 |
websocket.AutoOpen | 代理插件启动时是否自动连接机器人 | 确认机器人主程序已启动、地址可达后设为 true。设为 false 时需执行 /sab connect 手动连接。 |
websocket.Reconnect | 连接中断后是否自动重连 | 建议保持 true,这样机器人或网络短暂重启后代理会自动恢复连接。 |
保存配置后,执行 /sab reload 重载代理插件,并执行 /sab status 检查 WebSocket 状态;显示连接正常后,再继续配置 Bukkit 子服。
配置 Bukkit 子服
代理配置完成后,逐个编辑每台 Bukkit 子服生成的 plugins/StellarAnchorBot/config.yml。群组配置中,子服不直接连接机器人 WebSocket,而是使用 PROXY_CLUSTER 模式连接代理;每台子服都必须设置自己的唯一 server_id。
yaml
# STANDALONE:独立单服模式
# PROXY_CLUSTER:代理集群模式
# 可通过 /sab reload 热重载全部配置;连接与运行模式会立即按新值切换
run_mode: PROXY_CLUSTER
# 子服唯一标识ID(不可重复!!)
# 集群环境必填,集群网关依靠此ID分配事件
# 单机独立模式可自定义填写,无转发作用,用于日志区分多开子服
server_id: "sub_server_01"
# 是否在启动插件时自动连接
# 此功能需提前开启机器人后台且机器人对接地址正确
websocket:
AutoOpen: true按上面的示例为每台子服填写不同的 server_id,例如 sub_server_01、sub_server_02。子服控制连接参数保持插件生成的默认值即可;如果代理和 Bukkit 子服不在同一台机器,将 control.host 改为子服能够访问的代理内网地址。保存后在子服执行 /sab reload,插件会按新的运行模式连接代理。
当前版本中,
PROXY_CLUSTER子服通过controlTCP 连接代理,连接会自动建立;websocket.AutoOpen不控制这条连接。该项按参考文档保留在示例中,群组连接状态以代理端/sab status和子服列表为准。
白名单只由一个子服处理
白名单与验证码登录校验由 Bukkit 子服执行,代理仅路由请求,不参与玩家判定。 请只在登录服(玩家登录服务器时会进入的那个子服)启用白名单;其他子服保持关闭!!集群只允许一个子服启用 enabled: true 并使用 whitelist 或 captcha 模式,如果多个子服启用会拦截所有进服请求!!!
yaml
# 玩家进服白名单校验
# 集群模式注意:只能有一个子服启用白名单校验;机器人会在每次登录时实时查询权威白名单。
# 如果多个子服同时启用白名单,代理会让相关子服进入 conflict 模式并拦截进服,
# 同时暂停白名单请求路由,直到仅剩一个启用白名单的子服。
whitelist_check:
# 总开关。开启时,玩家登录会向机器人查询白名单;插件不保存白名单归属数据。
enabled: true
# whitelist:无白名单直接提示玩家在群内申请
# captcha:生成验证码,玩家在群内发送后重新连接即可进入
mode: "whitelist"
# 每次登录请求的最长等待时间;超时或并发达到上限时按不可用关闭失败
login_query_timeout_ms: 1200不要在多个子服同时启用白名单校验:代理检测到多个白名单目标时会报告冲突并拦截相关登录请求。
启动与检查
保存代理与全部子服配置后,先启动机器人主程序,再启动代理和 Bukkit 子服。需要重新载入配置时,分别在子服和代理执行 /sab reload。
| 检查项 | 验证方式 |
|---|---|
| 机器人 WebSocket | 代理执行 /sab status,确认机器人连接正常 |
| 子服控制连接 | 代理执行 /sab servers,确认预期子服已接入 |
| 网络可达 | 代理可访问机器人 WebSocket 地址;跨机器部署时子服可访问代理 |
| 子服标识 | 每个 Bukkit 子服使用不同的 server_id |
| 白名单路由 | 集群仅有一个子服启用白名单登录校验 |
遇到连接问题时,先检查代理与子服控制台中的连接日志,再确认对应网络地址可达。