第七节 什么是跨服?
跨服同时也是搭建我的世界服务器中的一项复杂的一门技术,在搭建多个服务器时,要做一些研究以及了解的工作。
自我思考
- 我是不是需要跨服?
- 我的服务器是否有那么多的玩家在游玩?
- 我的服务器是不是性能多余,核心老是满不起来?
- 想不想把服务器做大,游戏内容多样话,同时玩家在游玩的时候体验的非常舒适?
如果是的请继续往下
了解
跨服大致就是“分布式部署“我的世界的服务端从而提高服务器硬件的利用率的一种技术手段。
也就是代理服务器,他的作用就是代理玩家进入到服务器内部的一个个子服务端,作为内网与外网之间的桥梁。
从前到后、从后到前、跨服版本数量繁多
BungeeCord、Velocity、Lilypad、WaterFall、HexaCord、Travertine、Minecraft-Proxy
本次采用的是 BungeeCord
首先构思一下服务器的框架以及配置文件
学习 配置文件(Config.yml)详细介绍
server_connect_timeout: 5000#服务器无响应,多少毫秒后BungeeCord会关闭这个连接remote_ping_cache: -1#远程Ping缓存forge_support: false#ForgeMOD支持,如果有MOD服务器,请打开这个选项player_limit: -1#玩家限制,它将限制整个服务器的玩家人数,-1为不限permissions:# BungeeCord服务器权限组 也就是指令权限default:- bungeecord.command.server#服务器- bungeecord.command.list#显示在线玩家admin:- bungeecord.command.alert#全服公告- bungeecord.command.end#关闭BungeeCord- bungeecord.command.ip#IP- bungeecord.command.reload#BungeeCord重载插件权限timeout: 30000#当玩家在BungeeCord中无响应多长时间,BungeeCord才会将他踢出去,log_commands: false#记录命令network_compression_threshold: 256#这个参数只有1.8的服务端才有,含义是网络封包压缩的阀值。当封包长度高于这个值时,封包会被压缩。(适当调整可提高性能)online_mode: true#正版验证,如果是盗版服请关闭disabled_commands:#服务器禁止的指令- disabledcommandhereservers:#子服务器列表lobby:#服务器名称motd: '&1Just another BungeeCord - Forced Host'#服务器MOTD 支持颜色字符address: localhost:25565#服务器的内网ip地址以及端口restricted: falselisteners:- query_port: 25577#UDP查询端口motd: '&1Another Bungee server'#客户端列表看到的服务器介绍tab_list: GLOBAL_PINGquery_enabled: false#是否开启UDP监听查询proxy_protocol: false#代理协议forced_hosts:#可以用域名绑定通过域名直接进入指定服务器pvp.md-5.net: pvpping_passthrough: false#是否穿透BungeeCord直接获取后端服务器ping信息,如motd等。priorities:#优先服务器列表,就是登录服务器或者大厅服务器- lobbybind_local_address: true#是否把BungeeCord端和你服务器通讯的IP地址设置为BungeeCord端监听的地址host: 0.0.0.0:25577#BungeeCord的IP地址,访问它就能进入BC服务器进入其他服务器。max_players: 1#服务器显示的最大人数 不是真实人数tab_size: 60#按Tab键的时候,显示的玩家列表总容量。60的时候是三列,80的时候是四列force_default_server: false#强制跳转到默认服务器ip_forward: false#是否启用真实IP与UUID转发功能remote_ping_timeout: 5000#远端服务器无响应,多少毫秒后BungeeCord会关闭这个连接prevent_proxy_connections: false#防止远端使用代理登入groups:#玩家组权限md_5:- adminconnection_throttle: 4000#连接间隔,当玩家退出后多就能加入stats: b2bd44d7-c14e-4a4c-8s67-e5ecdf22d160#机器码,请不要修改,服务端会自己生成的log_pings: true# 记录ping值
BungeeCord 搭建
我们假设以三个服为准:登入服、生存服和创造服。
玩家可以通过指令、菜单和传送门到达各子服务端,同步玩家的背包以及状态、聊天以及公告。

在 BungeeCord目录下 config.yml 配置 servers:和host:
host: 0.0.0.0:61390#定义为 0.0.0.0 指接受任意地址连接#端口需要设置为服务商提供的对外开放的端口,独立IP则自选。servers:服务器名称(可以中文最好英文):motd: '子端标语(可以保留不变)'address: 子端地址:子端端口restricted: false
如下:
server:登入服:motd: '&1Just another BungeeCord - Forced Host'address: localhost:21000restricted: false生存服:motd: '&1Just another BungeeCord - Forced Host'address: localhost:22000restricted: false创造服:motd: '&1Just another BungeeCord - Forced Host'address: localhost:23000restricted: false
服务器目录框架

对应的修改每一个子服务端的server.properties
登入服server-ip=127.0.0.1server-port=21000生存服server-ip=127.0.0.1server-port=22000创造服server-ip=127.0.0.1server-port=23000
注意:设置server-ip=127.0.0.1 可以防止玩家不经过登陆服直接访问到子服务端,务必设置到内网地址!
注意:子服端口server-port= 不需要设置为服务商提供的对外开放的端口!
如果使用 Spigot 类型的端,一般目录下会有一个spigot.yml文件,在其中需要将bungeecord项修改为true来支持跨服的协议:
bungeecord: true
如果使用 Paper 服务端,一般目录下会有一个paper.yml文件,若你搭建的是非正版服务器,则需要将其中的bungee-online-mode项修改为false:
bungee-online-mode: false
安全起见,建议将 BungeeCord 的config.yml中的groups项进行如下修改:
groups: {}
如此一来,我们便成功地搭建了一个有三个子端的Bungee群组服务器。

在后期也可以安装BungeeCord安装相关的插件来加强Bungee的功能。
