传奇仿盛大一区八服主从架构搭建、端口分配、网关配置与多机负载实操教程

来源: 作者: 点击:
先定架构。一区八服若按仿盛大老模式做,可采用一作主、多作从:主服务器只跑账号登录与分区分配,从服务器各自跑地图、怪物、角色、战斗数据。这样八台从服同属一区,玩家在登录器看到一区,进入后可由列表分到1线到8线;若希望八服数据完全独立,就按八个独立服务端做,仅用同一个登录列表聚合。两种思路的区别在账号库和角色库是否共享,主从模式账号通用、角色按线隔离,独立八服账号和角色都隔离。

主服务器准备。系统用Windows Server干净环境,路径放D:\MirServer,避免中文和空格。主服只需LoginSrv与LoginGate,其他DBServer、RunGate、M2、LogDataServer交给从服。LoginSrv下配置!AddrTable.txt,按八从服写分区记录,格式为分区名、内网IP、外网IP、网关IP端口;例如一区1线主叫ktest1,2线ktest2直到8线ktest8,主服ServerIndex=0、ServerNumber=0。LoginGate的Config.ini绑定主服公网IP,GatePort可统一7000或用7000到7007分配给八线入口,通信密码与登录器配置器保持一致。主服ID库用独立目录LoginSrv\IDDB,ODBC或BDE建HeroDB别名,只存账号密码和封号信息,不存角色装备。

从服务器1到8分别部署完整运行组件。每台从服目录同样用D:\MirServer,避免直接复制主服登录组件。Mir200\!setup.txt写本线参数:ServerIndex按1到8分别设置,ServerName写ktest1到ktest8,ServerNumber与ServerIndex一致;DBAddr指向本机或集中数据库IP,DBPort例如6001到6008错开;IDSAddr填主服IP,IDSPort填主服IDS端口,通常5600;MsgSrvAddr填本机内网IP,MsgSrvPort用4901到4908错开。若八从服连同一主IDS,主服!AddrTable和从服IDSAddr必须完全对应,否则登录后分配不到线。

DBServer按从服分别配置。DBSrv200\dbsrc.ini或!serverinfo.txt里Port写本线数据库端口,例如1线6001、2线6002;MapFile指向本线Mir200\Envir\MapInfo.txt;IDSAddr写主服IP,IDSPort写主服IDS端口。若八线共用一套地图爆率但角色独立,MapInfo、MonGen、Envir可从基准版一次性分发,后续各线再单独改活动参数。资料库若用DBC,每台从服建独立HeroDB别名,如HeroDB1到HeroDB8;若用SQL,建八个库或同实例八个schema,避免八线写同一库导致角色覆盖。

网关端口规划要一次定死。登录网关每台从服可保留7000+线号,1线7001、2线7002直到8线7008;SelGate选线7101到7108;RunGate每线可开多组,1线7201、7211、7221,2线7202、7212、7222,依次类推;M2内部通信5001到5008错开;LogDataServer用10001到10008错开。主服若统一收登录再转发,可只暴露7000,内部按!AddrTable把玩家分到7001到7008;外网路由器做TCP映射,防火墙只放登录端口、RunGate端口、微端端口。双线电信网通环境给每线两组网关IP,LoginGate分别绑电信网卡和网通网卡,列表写两个入口,避免跨网绕路。

RunGate配置按线复制。每线RunGate目录复制成三份,Config.ini里ServerAddr写本线M2内网IP,ServerPort写5001到5008对应M2内部端口,GatePort写7201等对外游戏端口;多组RunGate写在!Servertable.txt或Servertable里,格式为序号、内网IP、网关IP、端口,1线0 127.0.0.1 内网IP 7201,1 127.0.0.1 内网IP 7211,2 127.0.0.1 内网IP 7221,2线依次换IP和端口。LEG类老引擎二区参考!serverinfo写网关IP端口、!Servertable写多RunGate,八线同理倍增。

M2参数按仿盛大节奏调。GameCenter配置向导里每线独立服务器名称、独立目录、独立数据库别名;网络设置里登录网关通信端口、RunGate通信端口、DBServer端口都按线号错开。人物参数按盛大1.76或仿盛大设定填等级上限、经验、转生、死亡掉装;战斗参数填攻速下限上限、技能倍率、怪物反伤、内功开关。八线若跑同一版本,先在一台测试服把Mir200、Envir、Map、Data、Monster.db、StdItems.db、Magic.db调通,再整体克隆到八台从服,最后改!setup和网关,避免八线配置不一致。

登录器列表按一区八线聚合。BLUE类用竖线或配置器列表,写一区1线公网IP 7001,一区2线公网IP 7002,直到7008;若主服统一7000转发,可只写一区入口7000,由LoginSrv!AddrTable分线。GOM/Hero类用GameList或登录器配置器写名称、IP、端口,例如一区1线公网IP 7001、一区2线 公网IP
7002。列表文件传到Web空间,浏览器直接打开txt能看到文本再生成登录器;登录器配置器填通信密码、微端IP端口、客户端Data/Map/PAK路径,BLUE要载对应bluem2_client.dat,Hero/GOM用配套登录器内核,版本不对会转圈或报密码错误。

启动顺序按依赖来。主服先起LoginSrv、LoginGate;从服按DBServer、LogDataServer、M2、RunGate、SelGate顺序起,若用独立SelGate再放LoginGate之后。多线同机运行要确认每个程序路径独立,不能八个M2共用一个Mir200目录;同机开八线只适合测试,生产建议八从服分物理机或独立虚拟机,每机至少分配固定内存,M2、RunGate、DBServer分开监控。主从都起完后,用登录器刷列表,逐线建号进新手村,看是否各自刷怪、各自存档;建一个角色只在当前线可见,跨线不共享背包,若要做跨线行会或跨线交易,需要额外跨服中心,不在基础一区八服范畴。

数据备份与合线预留。八线独立角色库时,每天备每个从服DBServer的Hum.db/Mir.db或SQL库,备LoginSrv的Id.db,备Mir200\Envir、Map、GuildBase、QuestDiary。后续若合并1线和2线,用合区工具导主库从库,处理重名角色加线号前缀、重名行会加标识,沙巴克、排行榜、活动进度按合区规则重置;多线合并不要一次八线全合,先1+2、3+4、5+6、7+8,再两两合并,降低主键冲突和爆率叠加风险。

排错按现象分。登录器不显示八线,查列表URL可访问性、LoginGate端口映射、!AddrTable分区名与M2 ServerName是否一致。进某线后建角色失败,查该线DBServer端口、数据库别名、MapFile路径、ODBC权限。进游戏后角色数据串线,查八线是否误用同一HeroDB或同一SQL库,独立线必须独立角色库。某线卡顿掉线,查该线RunGate端口冲突、M2攻速参数、MonGen全图同时刷新、NPC脚本死循环。主服能登录但分配不到从服,查从服IDSAddr是否指向主服、IDSPort是否通、!setup里ServerIndex是否重复。双线玩家一部分卡,查LoginGate是否绑错网卡、列表是否只给单线IP。

仿盛大一区八服不建议用一台家用机硬开八完整M2,主从模式最少主一从八共九个运行环境;若资源有限做八线分流而非八独立世界,可主服统一登录,八组RunGate+M2分地图分线,DBServer按线分库,这样更接近盛大早期一区多线。所有端口、IP、数据库名、ServerIndex先列成表再改文件,改完一台从服全量测试再克隆其余七台,比八台同时改更不容易乱。