CABAL技术部管理安装流程 Word文档资料,我就不上传了.直接COPY 该文档资料来自:http://www.asdsf.com/ 转载请注名 CABAL惊天动地 维护管理手册
文档版本 1.00 文档作者 田祎庆 文档阅览 项目管理组 撰写日期 2007-6-11 最近修改 2007-6-11 文档属性 内部资料 本手册包括从服务器的安装->配置->安全->维护->更新->备份->故障等全方面的、详细的介绍了惊天动地的操作和管理,包括其服务器核心技术和详细配置,属于保密文档,谨供部门内部使用,请大家妥善保管,防止外泄。 子 目 录 一、 项目概述------------------------------------------------------40 1、游戏简介 ------------------------------------------------------------------------------------ 40 2、平台描述 ------------------------------------------------------------------------------------ 40 3、拓扑结构 ------------------------------------------------------------------------------------ 40 二、 服务端安装配置篇----------------------------------------------40 1、Win Server 安装 ----------------------------------------------------------------------------- 40 2、Linux 安装 ---------------------------------------------------------------------------------- 41 3、数据库安装 ---------------------------------------------------------------------------------- 51 4、安全设置------------------------------------------------------------------------------------- 52 5、服务端程序安装 ------------------------------------------------------------------------------ 57 6、配置说明 ------------------------------------------------------------------------------------ 75 三、 维护管理篇----------------------------------------------------80 1、工具介绍 ------------------------------------------------------------------------------------ 80 2、日常维护 ------------------------------------------------------------------------------------ 83 3、停机维护 ------------------------------------------------------------------------------------ 86 4、更新流程 ------------------------------------------------------------------------------------ 87 5、数据备份 ------------------------------------------------------------------------------------ 98 四、 惊天动地FAQ--------------------------------------------------96 1、服务端故障 ---------------------------------------------------------------------------------- 96 2、客户端故障 ---------------------------------------------------------------------------------- 97 五、 参考选项------------------------------------------------------97 1、参考文档------------------------------------------------------------------------------------97 2、其他说明------------------------------------------------------------------------------------97
一、项目概述 1、游戏简介 惊天动地是我公司代理的第一款韩国网络游戏,由EST Soft开发,其有别于其他的MMORPG,游戏中更突出休闲的性质。是一款容易上手的奇幻风格MMORPG,游戏中没有难懂的游戏系统,也没有有时间上的限制,一般的MMORPG玩家都能很容易上手。另外,为了避免无休止的练级,游戏中设计了剧情,当一个剧情结束后将会有新世界和新任务。被誉为“有结局的网游!”
2、平台描述 惊天动地的服务端是跨系统的组合模式,采用了CentOS4.x的Linux系统和Windows Server 2000 以上版本的双系统跨平台整合系统;架设一组大区至少需要16台以上的各类应用服务器,同时每增加一组需要至少5台应用服务器。这里要特别说明的是惊天动地服务端的频道系统特点:可以自由配置频道的多少,根据服务器配置自定义每台服务器运行多少个频道,从而使服务器数量的调整更加多样化,也使得调整范围更加灵活。 构架一个区域服务器最低配置包括:账号数据库、游戏数据库、游戏服务器、登录认证服务器、客户端更新服务器、聊天服务器、全局管理服务器、数据库查询服务器、web管理服务器等。下面会陆续介绍各个服务器功能和配置。
3、拓扑结构 详见《cabal逻辑结构拓扑图.vsd》以及《Cabal网络结构拓扑图.vsd》
二、服务器安装篇 1、Win Server 安装 1.1软件准备: Windows 2000 Server英文安装盘 1 张 MS Sql 2000程序包 IIS程序包(i386目录复制到系统中的D盘根目录下) 杀毒软件Mcafee 8.0 en(安装包复制到系统中的D盘software目录下) 服务器驱动程序准备 1.2硬件准备: 服务器硬件:详见《Cabal服务器配置文档》 1.3安装过程 A、开始安装 分区方案 C盘15G以上,其余D盘。 网络连接数9999其他设置默认;
B、安装完成后 为系统安装中文支持(需要安装光盘或者i386目录提供); 第一步:控制面板→区域和语言选项→语言→为东亚语言安装文件 第二步:控制面板→区域和语言选项→区域选项→两个选择项分别设为Chinese(PRC)和China 第三步:控制面板→区域和语言选项→高级→Chinese(PRC) 安装远程终端(此项一定要在装SP补丁前安装); 在控制面板windows添加/删除组件中选中安装。 对计算机进行改名; 根据服务器组别和当前服务器功能来命名,如:GameDB01,LogDB等 需要重启,等所有设置完成,最后重启。 安装windows SP4补丁; 对windows进行在线升级:IE工具栏→Windows Update; 安装杀毒软件Mcafee 8.0 en,安装完后要进行在线升级; 其他组件根据服务器职能进行相应安装(需要安装光盘或者i386目录提供); 2、Linux 安装 CentOS 4.x 安装光盘#1-3张 2.1安装方法选择 把第1张 CD放在 CD-ROM 光驱,在系统ROM-BIOS(SETUP模式)里,选择 CD-ROM boot后重启服务器:
“boot:”里输入 <ENTER>,就可以用显卡画面模式设置. 2.2确认 CD有无物理异常
Anaconda执行时,为了检验CD有无物理异常,会出现CD测试画面. 按Skip. 2.3环境信息
开始设置LINUX的环境信息. 选“Next”.
2.4 Language Select
Language Selection选择现在设置过程所需的语言。不是设置以后要用的语言,只是选择设置过程所需的语言,通常选“English”.
2.5 Keyboard Configuration
选择适用的键盘种类. 因为大部分是使用美国式的键盘,选 “U.S.English”.
2.6 Installation Type
Cabal应用于服务器,设置成Server 也可设置为Custom 模式.
2.7 Disk Partioning Setup
各服务器数据如果使用备份服务器备份,不会出现大问题,选Automatically partition. 或者选择Disk Druid,创建新的partition,把重要的data储存在partition里.
2.8 Boot Loader Configuration
导入下阶段LINUX的 “LINUX BOOT LOAD 设置”阶段. 按Next.
2.9 Network Configuration
设置LINUX NETWORK阶段.
分IP时,选择 “Edit”.
确认解除“Configure using DHCP”,确认“Activate on boot”. 输入IP Address与 Netmask 值.(也可安装完后配置)
设置LINUX服务器的HOST NAME. (例, game01, login02,…) 为了使“Gateway”与别的NET通信,输入 Gateway值. “Primary DNS”这个服务器使用时,输入第一个NAME服务器IP地址.
2.10 Firewall Configuration
LINUX自身的防火墙程序iptables设置成 No firewall,按 Next. SElinux的设置. 选Disables按 Next. “SElinux”现在的比传统的LINUX系统增加了三个选项, Disables, Warn, Active.
2.11 Additional Languasge Support
这个阶段选择LINUX服务器要使用的语言. English(USA)
2.12 Time Zone
Time Zone Selection 选择北京/上海地区时段.
2.13 Set Root Password
设置(Root Password) Root是linux的管理账号,这里设置的密码必须足够强壮。
2.14 Package Group Selection
除了之前已经选的PACKAGE,如果没有FTP server和 Development Tools,确认后设置. [软件包说明] Package Grpup Selection X Window System : WINDOW环境(PC用必选)时必选 GNOE Desktop Environment : X WINDOW用PACKAGE (GNOME)设置. KDE (K Desktop Environment) : X WINDOW PACKAGE (KDE)设置. XFCE : 设置叫XFCE的新的 X WINDOW PACKAGE Editors : 可以使用在LINUX的各种编辑器PACKAGE Engineering and Scientific : 工学,技术,科学领域所需的PACKAGE Graphical Internet : 可以INTERNET使用的几种GRAPHIC 工具 Text-based Internet : TEXT基础下使用INTERNET环境的PACKAGE. Office/Productivity : PC用LINUX可使用的商务用,即OA用PACKAGE Sound and Video : 支持声卡与视频卡的PACKAGE Authoring and Publishing : LINUX下,著作与出版相关的应用软件 Graphics : 与GIMP一样的LINUX用graphic工具. Games and Entertainment : 包含有趣的LINUX用游戏与娱乐的PACKAGE Server Configuration Tools : 设置服务器的工具. Web Server : 要使用WEB SERVER就必须设置 (httpd) Mail Server : sendmail 的 pop一样的邮件服务器用PACKAGE. Windows File Server : (SAMBA)相关PACKAGE. DNS Name Server : 使用NAME SERVER必须使用 (named) FTP Server : FTP 设置(vsftpd) PostgreSQL Database : Postgres SQL DATABASE设置 MySQL Database : MYSQL DATABASE设置. News Server : 使用NEWS SERVE时,设置NEWS DAEMON (innd) Network Servers : NETWORK环境下,设置C/S环境PACKAGE. Legacy Network Server : LINUX Legacy network 服务器用PACKAGE. Development Tools : 开发者所需的工具 (gcc, c++) X Software Development : X 软件开发工具. GNOME Software Development : GNOME 开发工具 KDE Software Development : KDE 开发工具 XFCE Software Development : XFCF 开发工具 Legacy Software Development : Legacy 软件开发所需PACKAGE Administration Tools : LINUX服务器管理工具PACKAGE System Tools : 系统管理用PACKAGE Printing Support : 打印机相关PACKAGE (使用打印机服务器时使用) Everything :上述所有PACKAGE (选择这个时,呈全选状态)
2.15 About to Install
结束各阶段的选择后,把所选的PACKAGE复制到硬盘里.
全部完成后,选择“Reboot”,安装设置过程全部结束,等待文件复制过程,需要#1-3张安装光盘。
3、数据库安装 数据库安装MSSQL Server 2000英文版,sa密码必须设置的足够强壮,数据库的主文件不能放在系统分区下,放在D盘分区的cabal\data\目录下,安装完毕后打上SP4补丁。
4、安全设置 4.1 CentOS系统 A、BIOS安全 添加BIOS密码,设置启动顺序,禁止软盘和光驱启动。
B、登录口令 帐号密码强度:修改/etc/login.defs文件中PASS_MIN_LEN等于8,即最少密码长度为8位。建议密码设置由大小写字母+特殊字符+数字组成。管理员密码应该定期更新。
C、系统帐号 CentOS系统中存在一些默认帐号和组,如ftp、halt、uucp等,禁止所有默认的被操作系统本身启动的,但是却不必要的账号,尤其是以非/sbin/nologin结尾的帐号。如:netdump等。 操作步骤:修改/etc/passwd和/etc/shadow文件,将不必要的帐号注释。如下图所示:
同样修改/etc/group和/etc/gshadow文件,将不必要的组注释。如下图所示:
建议只保留所需服务启动的帐号。比如需要用到ftp服务时可以启用ftp帐号和组。 D、帐号口令文件安全 操作步骤:在确认以上文件无误后,修改以上文件属性为不可修改文件! chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow 以上可在服务器全部安装测试完毕后进行操作。(注:其他重要的配置文件确认修改无误后,也按此操作。)
E、启动服务安全 系统安装完毕后,会启动许多无需使用的服务;可在setup中设置,统一关闭默认启动。 操作步骤:输入“setup” 出现如下菜单:
选择System services项,按Run Tool确认:
图中带[ * ]为选中该服务,可按空格键进行选择。只需保留network、crond、sshd、syslog等服务,其他服务根据应用程序在以后操作中增加。确认后,按ok键确认退出; 设置服务启动脚本权限,只有root才能控制启动各项服务: chmod -R 700 /etc/rc.d/init.d/* chmod -R 700 /etc/init.d/* F、配置主引导程序Grub安全 操作步骤:编辑/etc/grub.conf文件,修改字段timeout=0;(注:引导时不等待) 添加字段password --md5 (md5加密字符串) 修改主引导程序参数需要输入密码。使用grub-md5-crypt命令得到md5加密字符串。
G、修改登录系统信息 用户登录服务器后系统会自动显示系统、内核版本信息。 我们可以通过修改/etc/issue和/etc/issue.net文件来修改这些信息。 CentOS release 4.3 (Final) Kernel \r on an \m 以上是原文件中的内容。 echo > /etc/issue echo > /etc/issue.net 清空文件信息。
H、用户级启动进程init设置 操作步骤:init为第一进程,其PID始终为1,通过编辑/etc/inittab 来修改init的启动配置。 设置应用服务器启动级别为3;(启动级别一共7级,0关机,6重启,5窗口模式,1单用户模式,2-4多用户模式。) id:3:initdefault: 加上注释符,屏蔽Ctrl+Alt+Delete重新启动快捷键。 #ca::ctrlaltdel:/sbin/shutdown -t3 -r now 修改完毕后可运行:init q 直接生效无需重启。
I、配置网络访问控制 Linux系统默认允许所有的请求,配置TCP_WRAPPERS可以增强系统安全性,修改/etc/hosts.deny和/etc/hosts.allow来增加访问限制。 操作步骤:这里将/etc/hosts.deny设为“ALL: ALL”拒绝所有访问。 在/etc/hosts.allow文件中添加允许的访问。 sshd: 192.168.1.0/255.255.255.0 game.cabal.com 表示允许IP地址192.168.1.0网段或者主机名game.cabal.com可以通过SSH连接。
J、iptables配置 Linux防火墙软件包,功能强大,在实际操作中,不要和TCP_WRAPPERS同时使用。 配置过程根据服务器实际应用写入规则; 许多安全隐患都可以通过iptables来解决。
K、阻止广播段ping测试 操作步骤:修改启动脚本/etc/rc.d/rc.local在最后添加以下行: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
L、预防IP地址欺骗 操作步骤:编辑host.conf文件并增加如下几行来防止IP欺骗攻击。 order bind,hosts (解析顺序为先DNS后查询/etc/hosts 注:与default设置相反) multi off (禁止主机拥有多个IP地址 此为默认设置) nospoof on (阻断IP地址欺骗) M、阻止DoS攻击(HTTP服务) 操作步骤:设置系统中用户资源限制,内存数量以及进程数等;编辑/etc/security/limits.conf 添加以下行: #<domain> <type> <item> <value> * hard core 0 * hard rss 5000 * hard nproc 20 limits.conf文件有相关参数的说明。数值大小根据实际应用进行调整,否则可能导致服务无法正常应用。 上面的参数禁止core files “core 0”,限制进程数为 “nproc 20”,且限制内存使用为5M “rss 5000”。
N、限制root用户终端登录 操作步骤:可在/etc/securetty注释tty2~11的行,这样root就只能在tty1登录。
O、系统安全日志文件 /var/log 系统日志目录 syslogd 系统日志服务名 /etc/syslog.conf 系统日志服务的配置文件 /var/log/secure记录文件是检测是否有网络入侵的重要线索; /var/log/messages 记录系统中重要操作的标准和错误输出信息;
P、软件包更新 更新软件包,可以修正软件中存在的安全隐患和bug。 不过不注册是无法使用up2date自动更新。 一些服务的软件包可以通过手动下载更新。
4.2 Windows 2000 Server 配置前,请先安装SP4补丁,打开自动更新。 A、在网络连接中禁用TCP/IP上的NetBIOS 操作步骤:网上邻居属性→本地连接属性→TCP/IP属性→高级→WINS→禁用TCP/IP上的NetBIOS B、删除所有默认共享 操作步骤:建立一个文本文档,输入以下代码再保存为bat批处理文件,执行。 echo 将下列代码做成批处理文件后,执行完毕即可! echo Windows Registry Editor Version 5.00> c:\delshare.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\delshare.reg echo "AutoShareWks"=dword:00000000>> c:\delshare.reg echo "AutoShareServer"=dword:00000000>> c:\delshare.reg echo 运行 delshare.reg 修改注册表 regedit /s c:\delshare.reg echo 删除 delshare.reg 临时文件 del c:\delshare.reg net stop server /y net start server C、禁用无需用到的服务 操作步骤:开始→运行→输入“services.msc” TCP/IP NetBIOS Helper Disable DHCP Disable Wireless Configuration Disable Print Spooler Disable Windows Time Disable Server Disable Distributed File System Disable Computer Browse Disable
D、IP sec 设定 操作步骤:开始→运行,输入“MMC”,按确定;出现Windows的管理控制台界面,按“CTRL+M”键,在出现的对话框中点“添加”,在“添加独立的管理单元”对话框中,选中“IP安全策略管理” Deny所有的端口和网络 根据不同Server的功能,开放相应服务端口 内网暂时不做任何限定
E、对于涉及到IIS的安装,具体配置如下 操作步骤:修改WEB默认主页的主目录配置,改变默认目录,通常只要给它读取和日志访问权力。删除原有的虚拟目录,如果需要可自己重新建立新的(如scripts)重新配置执行许可,删除不要用的ISAPI应用程序设置(特别是.htw .IDQ .printer 等)不要安装WEB管理。
F、终端服务的设置 操作步骤:终端服务是win2000自带的远程管理程序,默认配置下只要Administrators就可以远程管理。 修改连接权限,指定单一用户与system组可以使用,这样就是被黑客加入了一个Administrators用户也不能用终端服务管理。必要时也可以修改终端服务的TCP端口。(可在IPsec中设置允许终端服务的网络地址)
4.3 MS Sql 2000 server设置 操作步骤: A、使用安全的密码策略; 对于sa更应该注意,同时不要让sa帐号的密码写于应用程序或者脚本中。 SQL Server 2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非你确认必须使用空密码。
B、使用安全的帐号策略; 由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa帐号,只有当没有其它方法登录到 SQL Server 实例(例如,当其它系统管理员不可用或忘记了密码)时才使用 sa。建议数据库管理员新建立一个拥有与sa一样权限的超级用户来管理数据库。安全的帐号策略还包括不要让管理员权限的帐号泛滥。 SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库的话,可以在帐号管理中把系统帐号“BUILTIN\Administrators”删除。不过这样做的结果是一旦sa帐号忘记密码的话,就没有办法来恢复了。很多主机使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配帐号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public帐号能够select就可以了。
C、管理扩展存储过程; 对存储过程进行大手术,并且对帐号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。 如果你不需要扩展存储过程xp_cmdshell请把它去掉。使用这个SQL语句: use master sp_dropextendedproc xp_cmdshell xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。如果你需要这个存储过程,请用这个语句也可以恢复过来。 sp_addextendedproc xp_cmdshell, xpsql70.dll 如果你不需要请丢弃OLE自动存储过程(会造成管理器中的某些特征不能使用) 这些过程包括如下: Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_OAStop 去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来 如下: Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues Xp_regread Xp_regremovemultistring Xp_regwrite 还有其他的扩展存储过程需要检查。在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。
5、服务端程序安装 5.1 Linux 服务端安装 5.1.1 Linux系统下应用服务器种类 GlobalDBAgent –与ACCOUNT DB通信的服务器; DBAgent – 与GAME DB通信的服务器; GlobalMgrSvr – 连接GDBA, LoginSvr, WorldSvr, (Server Monitor) 之间通信的服务器; LoginSvr – 与玩家通信,认证登录的服务器; WorldSvr – 游戏服务器 ChatNode – 聊天服务器
端口信息 GlobalDBAgent DBAgent GlobalMgrSvr LoginSvr WorldSvr ChatNode 38180 38181~38189 38170 38101~38109 38111~38119 38121
5.1.2 Linux服务端程序 所有的守护进程,均以 cabal的账号执行,必须在系统内加入cabal账号(安装服务端时自动完成); # useradd cabal A、DataBase 通信 RPM (unixODBC, freetds-unixodbc) 设置. 为了与DB通信,要准备下面的RPM. 即: GDBA, DBA服务器所必须的程序; B、unixODBC 设置 外部网络可用的话,可以采用网络安装: # yum install unixODBC
也可以直接下载设置: # rpm -Uvh unixODBC-2.2.11-1.RHEL4.1.i386.rpm
C、freetds-unixodbc 设置 在使用Sybase/Microsoft 的 Tabular DataStream protocol,而现在的0.64RC3 版本里,直接使用RPM包进行安装,命令如下: # rpm -Uvh freetds-unixodbc-0.64RC3-1.i386.rpm
5.1.3 unixODBC, freetds-unixodbc安装后设置 为了支持中文,要在环境参数里设置FREETDS_UNIXODBC_CHARSET='cp936',我们是使用叫cabal的帐号,要在/home/cabal/.bash_profile文件的参数里加进FREETDS_UNIXODBC_CHARSET='cp936'; # adduser cabal (如果没有cabal帐号,就建立一个. 不需要设置密码.)
# vi /home/cabal/.bash_profile if [ -f ~/.bashrc ]; then . ~/.bashrc fi PATH=$PATHHOME/bin
export PATH unset USERNAME export FREETDS_UNIXODBC_CHARSET='cp936'
/etc/odbcinst.ini 确认文件里有没有下面的内容,如果没有就加进去. #vi /etc/odbcinst.ini [FreeTDS] Description = FreeTDS unixODBC Driver Driver = /usr/lib/libtdsodbc.so.0 Setup = /usr/lib/libtdsodbc.so.0 UsageCount = 1
在/etc/odbc.ini里加入以下服务器信息. [服务器名称] Driver = FreeTDS (与/etc/odbcinst.ini里指定的一样就可以) Address = 服务器IP Port = 端口, 基本 1433 Database = DATABASE名称 TDS_Version =版本 MS-SQL 2000 8.0
EX 1) 设置DBAgent时,加进 GAMEDB 的内容. #vi /etc/odbc.ini [CabalGame01] Driver = FreeTDS Address = 192.168.0.21 Port = 1433 Database = SERVER01 TDS_Version = 8.0
[CabalGame02] Driver = FreeTDS Address = 192.168.0.21 Port = 1433 Database = SERVER02 TDS_Version = 8.0 ……. EX 2) 设置GDBA时,加进ACDB的内容. #vi /etc/odbc.ini [CabalAccount] Driver = FreeTDS Address = 192.168.0.26 Port = 1433 Database = ACCOUNT TDS_Version = 8.0
5.1.4 cabal-server RPM 安装即cabal服务端程序 A、cabal-server 设置 设置cabal-server-1.0-1.i386.rpm. (1.0-1为服务端版本号) # rpm -Uvh cabal-server-1.0-1.i386.rpm Preparing... ################################# [100%] 1:cabal-server ################################# [100%]
<参考>如果不装 unixODBC 或 freetds-unixodbc而设置RPM 的话,会出现如下错误. # rpm -Uvh /tmp/cabal-server-1.0-1.i386.rpm error: Failed dependencies: libodbc.so.1 is needed by cabal-server-1.0-1.i386 libodbcinst.so.1 is needed by cabal-server-1.0-1.i386 Suggested resolutions: /home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/unixODBC-2.2.9-1.i386.rpm 不使用DBA, GDBA的服务器不需要上述的RPM ,设置时可以选--nodeps. # rpm –Uvh --nodeps /tmp/cabal-server-1.0-1.i386.rpm
<参考>如果想在已经设置 cabal-server 的服务器再设置RPM ,可以删除后再装, 设置时如果选择force,不删除就可以强制重装RPM. # rpm –Uvh –nodeps --force /tmp/cabal-server-1.0-1.i386.rpm 注:该RPM包括了所有Cabal服务端的进程程序。 B、/etc/cabal/server_list 设置 在/etc/cabal/server_list 记下相应服务器要运营的DEAMON; EX) 服务器上包括GlobalDBAgent, GlobalMgrSvr, DBAgent_01, DBAgent_02的进程 #vi /etc/cabal/server_list GlobalDBAgent GlobalMgrSvr DBAgent_01 DBAgent_02
EX) 设置LoginSvr_01, WorldSvr_01_01, WorldSvr_01_02, WorldSvr_02_01, WorldSvr_02_02 的话. #vi /etc/cabal/server_list LoginSvr_01 WorldSvr_01_01 WorldSvr_01_02 WorldSvr_02_01 WorldSvr_02_02
C、/etc/cabal/*.ini 设置 更换/etc/cabal/*.ini的设置文件的内容. <参考> rpm 设置后生成的 GlobalMgrSvr.ini, WorldSrv.ini, LoginSrv.ini, GlobalDBAgent.ini, DBAgent.ini是服务器进程配置文件的模板,修改这个文件后,执行/home/cabal/gen_config.sh,就会按照 /etc/cabal/server_list里的进程名,自动生成要正式运营的服务器的配置文件 (*.ini); 配置文件中不使用的部分 (如, 网吧认证),在内容前可以加注(;). EX) 各服务器的设置文件模板 #vi /etc/cabal/DBAgent.ini [NetLib] ;Port=DBAgent里使用的 port 序号. Port=38181 SendMaxBufSize=65536 ProcessDataLimit=10000 MaxUserNum=100 WatchsNoPackLimit=100000 SystemLogTTimeOut=100 ReactorTimeOut=-1 LogLevel=3
[DBAgent] ServerIdx=1 DBProcessTNum=5 要与; DNS= odbc.ini里指定的[服务器名称]一致. DSN=CabalGame01
[DSN] ; DBAddr=GAMEDB IP, WINDOW服务器设置所需的部分. DBAddr=218.153.8.36 ; DBCatalog=DB 名称, WINDOW服务器设置所需的部分. DBCatalog=SERVER01 ; DBId=连接DB 帐号. DBId=cabalgame ; DBPwd=连接DB帐号的密码. DBPwd=rjf2aus.wnrdj
#vi /etc/cabal/GlobalDBAgent.ini [NetLib] ;Port=GDBAgent使用的 Port, Port=38180 SendMaxBufSize=65536 ProcessDataLimit=30000 MaxUserNum=32 WatchsNoPackLimit=100000 SystemLogTTimeOut=100 ReactorTimeOut=-1 LogLevel=3
[DBAgent] ServerIdx=128 DBProcessTNum=10 要与;DNS=odbc.ini文件保存的 [服务器名称]相一致. DSN=CabalAccount
[DSN] ;DBAddr=ACDB IP DBAddr=218.153.8.36 ;DBCatalog=DB 名称 DBCatalog=ACCOUNT ;DBId=连接的DB帐号 DBId=cabalgame ;DBPwd= DBPwd=rjf2aus.wnrdj
#vi /etc/cabal/GlobalMgrSvr.ini [NetLib] ;Port=GlobalMgrSvr 使用的 Port, Port=38170 SendMaxBufSize=65536 ProcessDataLimit=50000 MaxUserNum=500 WatchsNoPackLimit=100000 SystemLogTTimeOut=100 ReactorTimeOut=-1 ConnectRetryTime=5000 ConnectRetryNum=50 LogLevel=3
[GlobalMgrSvr] Timer=1:10000 WorldMaxUserNum = 100 NoNotifyTimeLimit=60000 DefaultServerOpen=0
[DBAgent] ;Addr=GDBAgent IP Addr=127.0.0.1 ;Port=GDBAgent Port Port=38180
[PCBangLK] Addr= Port=
#/etc/cabal/LoginSvr.ini [NetLib] ;Port=LoginSvr使用的 Port. Port=38101 SendMaxBufSize=65536 ProcessDataLimit=1024 MaxUserNum=20000 WatchsNoPackLimit=10000 SystemLogTTimeOut=100 ReactorTimeOut=-1 ConnectRetryTime=5000 ConnectRetryNum=10 LogLevel=3
[LoginSvr] GroupIdx=1 Timer=1:10000,2:5000,3:5000 NoActiveLimitTime=40000 ;指定客户端版本.客户端更新后要修改版本信息. client_version=9932
[GlobalMgrSvr] ;Addr=GlobalMgrSvr IP Addr=218.153.8.38 ;Port=GlobalMgrSvr port Port=38170
# vi /etc/cabal/WorldSvr.ini [NetLib] ;Port=WorldSvr使用的 Port. Port=38111 SendMaxBufSize=32768 ProcessDataLimit=10000 MaxUserNum=500 WatchsNoPackLimit=30000 UseEncryptPacket=1 SystemLogTTimeOut=100 ReactorTimeOut=100 DisableReactorPipe=1 ConnectRetryTime=5000 ConnectRetryNum=10 LogLevel=3
[WorldSvr] ; ServerIdx=服务器组序号 ServerIdx=1 ; GroupIdx=频道序号 GroupIdx=1 Timer=1:100,2:150,3:3000,4:10000,5:5000,6:60000,7:3600000,8:2000,9:10000 CommonIniPath=Common.ini IPAddress= UpdateInterval=300000
# UseGameGuardAuth ## GAME GUARD认证使用与否 (0: false, 1: true) UseGameGuardAuth=0
# AddGameGuardName ## GAME GUARD认证, V2.5开始不使用 AddGameGuardName=libggauth2.so.0
# GameGuardInterval ## GAME GUARD认证邀请间隔 (msec) ## GAME GUARD认证技能实施时间on/off: GameGuardInterval=0 GameGuardInterval=60000 NoResponseTimeout=180000
[DBAgent] ;DBAgent IP Addr=218.153.8.38 ;DBAgent Port Port=38181
[GlobalMgrSvr] ;GlobalMgrSvr IP Addr=218.153.8.38 ;GlobalMgrSvr port Port=38170
注:模板文件通过gen_config.sh的脚本处理来生成正式运营的配置文件。 D、/home/cabal/gen_config.sh 执行 执行/home/cabal/gen_config.sh.依据/etc/cabal/server_lis里服务器的目录,在 /etc/cabal/文件夹下自动生成正式运营服务器的环境设置文件 (ini). 此外,生成 /etc/init.d/服务器名称执行文件。 #/home/cabal/gen_config.sh
以下的设置文件是正式运营服务器上的文件,执行/home/cabal/gen_config.sh后。再仔细确认一下每个文件设置是否完整.
DBAgent_XX.ini ( XX : 各个服务器组序列号 ) GlobalMgrSvr.ini GlobalDBAgent.ini LoginSvr_XX.ini ( XX : LoginSvr 服务器个数,与 服务器组序号无关.) WorldSvr_XX_YY.ini ( XX : 服务器组序号, YY : 频道序号)
<参考> 如果修改了 /etc/cabal/server_list DAEMON名称,执行了 /home/cabal/gen_config.sh, 修改/etc/cabal/server_list后必须要再次执行/home/cabal/gen_config.sh
E、GlobalMgrSvr 服务器(DAEMON) 认证 执行GMS之前,需要GMS认证码.认证方法是EST进行,新服务器设置时申请;(限定了新服务器开设必须通过EST)
F、关于服务器 (DAEMON)错误,要设置生成Core 文件 为了了解各服务机宕机的原因,要设置生成的core文件。 /etc/init.d/functions 的 DAEMON 函数,就可以发现如下: # vi /etc/init.d/functions …. # make sure it doesn't core dump anywhere unless requested ulimit -S -c ${DEMON_COREFILE_LIMIT:-0} >/dev/null 2>&1
# if they set NICELEVEL in /etc/sysconfig/foo, honor it [ -n "$NICELEVEL" ] && nice="nice -n $NICELEVEL" # Echo DEMON [ "${BOOTUP:-}" = "verbose" -a -z "$LSB" ] && echo -n " $base" # And start it up. if [ -z "$user" ]; then $nice initlog $INITLOG_ARGS -c "$*" else $nice initlog $INITLOG_ARGS -c "runuser -s /bin/bash - $user -c \"$*\"" fi [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
把下面的部分 $nice initlog $INITLOG_ARGS -c "runuser -s /bin/bash - $user -c \"$*\""
修改如下. $nice initlog $INITLOG_ARGS -c "runuser -s /bin/bash - $user -c \"ulimit -S -c ${DEMON_COREFILE_LIMIT:-0} >/dev/null 2>&1 && $*\""
5.1.5服务器(DAEMON) 执行 执行各服务器的DAEMON: # service DAEMON名字 start
Ex) service WorldSvr_01_01 start Service LoginSvr_01 start
统一执行各服务器的DAEMON: # service cabal start
5.1.6 ACE Library 所有服务器都需要ACE,现在使用的是5.5.1版本。 检查服务器上是否有/usr/lib/libACE.so.5.5.1 文件。 安装服务端程序后,会自动设置。
5.1.7 进程软链接设定 实际的服务器,是链接到服务器名称使用 # ls -al /usr/bin/DBAgent_01 lrwxrwxrwx 1 root root 18 May 8 09:11 /usr/bin/DBAgent_01 -> /usr/bin/DBAgent # ls -al /usr/bin/WorldSvr_01_10 lrwxrwxrwx 1 root root 19 May 8 09:11 /usr/bin/WorldSvr_01_10 -> /usr/bin/WorldSvr
5.2 Windows 系统服务端安装 5.2.1 运行在windows系统的cabal服务端程序介绍 账号数据库、游戏数据库服务器 更新服务器:P3 and update web(info server) 更新服务器构成要素. ■ Client-Side Updater (Cabal update file download application)
■ Server-Side Update web Server (info server) - urlinfo.ini ( environment File ), fileinfo.dat (记录文件的CRC) - UpdateFileName.torrent ( Torrent File ) - setup.exe.torrent (安装版用 Torrent File)
P3 Server - BitTorrent Tracker - BitTorrent File Seeder - P3Register ( Update File Register Application)
5.2.2 数据库服务器 游戏数据库服务器说明见《GameDB 说明手册》; 账号数据库说明韩方未提供;
5.2.3 更新服务器info server A、确认服务器上安装IIS服务器 B、将更新文件和urlinfo文件复制到http目录下,架构如下: Pds/目录: - setup.exe.torrent 文件( 要有安装文件.) Update/Files/Pure/目录: - urlinfo.ini, FileInfo.dat 文件(更新文件信息与记录了文件的CRC 的文件) Pds/P3_SerialNumber/ - 如果 P3Server 有3台, 就会有 P3_1, P3_2, P3_3文件夹, 更新文件update_123.dat, update_124.dat, update_125.dat 要在 P3_1, P3_2, P3_3文件夹. 文件名字虽然一样,但内容不同。 EX) Pds/P3_1/ update_123.torrnet, update_124.torrent, update_125.torrent Pds/P3_2/ update_123.torrnet, update_124.torrent, update_125.torrent Pds/P3_3/ update_123.torrnet, update_124.torrent, update_125.torrent
转载请注明出处:www.02zt.com 注: P3_1/, P3_2/, P3_3/里有内容不同的torrent 文件, P3_1/里有指向 P3Server 1的内容,P3_2/里有指向P3Server 2的内容。 C、确认链接正确: 打开网页浏览器,在地址栏输入下面地址. http://update DNS 名称/Update/Files/Pure/urlinfo.ini EX) http://update.cabalchina.com.cn/Update/Files/Pure/urlinfo.ini 下载窗口出现,说明可以正常设置了。
D、urlinfo.ini 文件内容注释 先在; updateur下载,失败时在updateurl2下载. ; updateurl放在 CDN,updateurl2 交给EST. ; setupfile是 cabal_downloader不能用 p3下载时,用于下载的路径. ;updateurl =http://info.cabalchina.com.cn/Update/Files_1/ ;updateurl =http://info.cabalchina.com.cn/Update/Files_3/ [urlinfo] updateurl = http://info.cabalchina.com.cn/Update/Files_2/ : 下载更新相关内容的地方 setupfile = http://info.cabalchina.com.cn/pds/ : 下载安装版的地址. torrentfile = http://update.cabalchina.com.cn/Pds/ : 下载Torrent File 的地址.
[updateinfo] 更新文件内容. updatemax=10 FileSeeder( BitTorrent_UpdateSvr) 最大数. updateindex=4 现在有效的 FileSeeder (Update File 数) testmax=3 test 服务器的最大 File Seeder testindex=1 test server 有效的 FileSeeder (Update File 数) p3count=3 服务的 P3服务器数 p3subdir=P3_ 文件夹名 p3SubDir1=P3_1 P3与服务器相匹配的文件夹名. P3count如果是 2 ,只读到 P3SubDir2. p3SubDir2=P3_2 p3SubDir3=P3_3 转载请注明出处:www.02zt.com [101] 100以上开始的是Test server 用文件. version=1512 ;文件版本 ( update_1512.dat) subversion=0 ;SERVER文件版本 DirectMode=0 ;下载方式(0为cdn和p3混合模式,1为cdn单独) torrenturl=http://update.cabalchina.com.cn/Pds/update_1512.dat.torrent ;Torrnet 文件接收地址. fileurl=http://info.cabalchina.com.cn/pds/update_1512.dat ;更新文件接收地址
[1] ;INDEX从1开始的是正式服务时所需的更新文件数 version=1350 subversion=1 DirectMode=0 torrenturl=http://update.cabalchina.com.cn/Pds/update_1350_1.dat.torrent fileurl=http://info.cabalchina.com.cn/pds/update_1350_1.dat
[2] version=1460 subversion=1 DirectMode=0 torrenturl=http://update.cabalchina.com.cn/Pds/update_1460_1.dat.torrent fileurl=http://info.cabalchina.com.cn/pds/update_1460_1.dat 转载请注明出处:www.02zt.com [3] version=1500 subversion=0 DirectMode=0 torrenturl=http://update.cabalchina.com.cn/Pds/update_1500.dat.torrent fileurl=http://info.cabalchina.com.cn/pds/update_1500.dat
[4] version=1508 subversion=0 DirectMode=0 torrenturl=http://update.cabalchina.com.cn/Pds/update_1508.dat.torrent fileurl=http://info.cabalchina.com.cn/pds/update_1508.dat
5.2.4 更新服务器P3 Server A、更新文件上传所需的IIS FTP设置 为了上传更新文件,设置IIS FTP. 把HOME DIRECTORY设置在c:\Inetpub\ftproot\. ( 其他地方也可以) 更新文件上传在 c:\Inetpub\ftproot\update\ 文件夹下. P3Register.exe 程序 FTP path 要与上传文件夹路径 (c:\Inetpub\ftproot\update\ )一致.
B、CabalP3Component.zip 压缩解压 CabalP3Componet.zip在 D:\里解压. 解压后 D:\CabalP3Componet\ DIRECTORY下有以下的DIRECTORY. ▪ Server Folder Tracker Program(P2P Server) ▪ Client Folder p2p Client ( File Seeder ) ▪ UpdateFile Folder Update File 所在的文件夹 ▪ TorrentFile Folder 关于Update File的 Torrent 文件所在的文件夹 ▪ TrackerInfo Folder Tracker保存 client 信息的地方(Option) ▪ Program Folder python-2.3.4.exe ( 为了运转Tracker,要设置PYTHON.) maketorrent.exe ( 建立Update File相关的 Torrent文件的程序) srvany.exe ( 把一般 Form 程序登录到SERVICE的程序) instsrv.exe ( 登录SERVICE的程序) ▪ BatFile Folder Tracker 与 File Seeder所需的Registry 设置 bat, Reg 文件等 ▪ AutoRegister Folder p3serviceregister.exe (上传Update,这个程序就会登录到SERVICE) P3Service.ini ( 以上程序参照的环境文件) - Log Folder ( P3ServiceRegister.exe.log : Log File )
C、python-2.3.4 安装 设置Tracker相关的WINDOW用 python 程序. 设置后确认是否有 C:\Python23\python.exe.
D、把srvany.exe, instsrv.exe复制到 c:\winnt\system32\ 为了登录各个P3程序,把srvany.exe, instsrv.exe复制到 c:\winnt\system32\;
E、登录各 P3 程序SERVICE 把BitTorrent_P3Register, BitTorrent_Tracker, BitTorrent_UpdateSvr1~10 登录到SERVICE; 执行D:\CabalP3Component\BatFile\ServiceRegister.bat; 命令语形式 : instsvr “SERVICE名” “执行文件” 建立“BitTorrent_name” 的SERVICE. 执行的程序是 srvany.exe. D:\CabalP3Component\BatFile\ServiceRegister.bat 内容 instsrv "BitTorrent_P3Register" "C:\WINNT\system32\srvany.exe" instsrv "BitTorrent_Tracker" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr1" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr2" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr3" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr4" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr5" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr6" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr7" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr8" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr9" "C:\winnt\system32\srvany.exe" instsrv "BitTorrent_UpdateSvr10" "C:\winnt\system32\srvany.exe"
F、Tracker SERVICE设定. 执行D:\CabalP3Component\BatFile\Torrent_Tracker.reg文件. 形式) - AppDirectory : Tracker 执行文件(bttrack.py 所在的文件夹) - Application : 设置PYTHON的执行文件 - AppParameters : Tracker 参数
EX) D:\CabalP3Component\BatFile\Torrent_Tracker.reg 内容 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BitTorrent_Tracker\Parameters] "AppDirectory"="D:\\CabalP3Component\\Server" "Application"="C:\\Python23\\python.exe" "AppParameters"="D:\\CabalP3Component\\Server\\bttrack.py --port 6969 --dfile \"D:\\CabalP3Component\\TrackerInfo\\dstate\" --allowed_dir \"D:\\CabalP3Component\\TorrentFile\" --reannounce_interval 500 --yn_infoip \"218.232.117.245\"" 执行 regedit ,在 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BitTorrent_Tracker] 确认.
G、BitTorrent_UpdateSvr SERVICE (File Seeder) 设置. 执行D:\CabalP3Component\BatFile\FileSeeder.reg 文件. 一般运营 10个SERVICE(BitTorrent_UpdateSvr1~10), 也可以适当增加. 格式) - AppDirectory : Seeder 执行文件(btdownloadheadless.exe所在的文件夹) - Application : Seeder 执行文件 Path - AppParameters : Seeder 参数 - Format : Appparameters 的形式
EX) D:\CabalP3Component\BatFile\FileSeeder.reg 内容 Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BitTorrent_UpdateSvr1\Parameters] "AppDirectory"="D:\\CabalP3Component\\Client" "Application"="D:\\CabalP3Component\\Client\\btdownloadheadless.exe" "AppParameters"="--responsefile \"D:\\CabalP3Component\\TorrentFile\\setup.exe.torrent\" --saveas \"D:\\CabalP3Component\\UpdateFile\\cabal0816.exe\" --max_uploads 500 --min_uploads 50 --display_interval 1 --max_upload_rate 3000" "Format"="--responsefile \"{0}\" --saveas \"{1}\" --max_uploads 500 --min_uploads 50 --display_interval 1 --max_upload_rate 5000" ….
H、BitTorrent_P3Register SERVICE设置 执行D:\CabalP3Component\BatFile\P3Register.reg 文件. 格式) - AppDirectory : P3Register 执行文件(P3Register .exe所在的文件夹) - Application : P3Register执行文件 Path - AppParameters : 不使用.
D:\CabalP3Component\BatFile\P3Register.reg Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BitTorrent_P3Register\Parameters] "AppDirectory"="D:\\CabalP3Component\\Program\\AutoRegister" "Application"="P3ServiceRegister.exe" "AppParameters"="" I、D:\CabalP3Componet\Program\AutoRegister\P3Register.exe 设置. P3Register.exe周期监视在 P3Server FTP Root 里的 update文件夹,如有更新文件就登录到SERVICE,保证File Seeder拥有; ■ p3serviceregister.exe
[update] 文件夹结尾要以 \ 结束. -设置 IP = tracker 的IP( 主要用本地IP) - FTP=D:\BitTorrent\Update\ : 要监测的文件夹路径.(更新文件要上传的位置) - UPPATH=D:\BitTorrent\UpdateFile\ :复制 update 文件的文件夹路径 - TORRENTPATH=D:\BitTorrent\TorrentFile\ :复制 torrent文件的文件夹路径
[File Server INFO] : FileSeeder 要参照的参数 ( P3Register把 update文件登录到SERVICE时,在相应的SERVICE AppParameter. ) - MINUPLOAD=50 : Seeder 的最小上传数 - MAXUPLOAD=100 : Seeder 的最大上传数 - MINPORT=6881 - MAXPORT=6999 : Seeder 使用的port 范围 [ 6881 ~ 6999 ] - MAXUPRATE=5000 // 不使用. - SERVICENAME=BitTorrent_UpdateSvr : 相应SERVICE名称 - SERVICECOUNT=10 : SERVICE index - DISPLAYINTERVAL=1 :更新比率
[Function] : - AutoCopy=0 : 决定是否把更新文件复制到别的P3Server. P3 服务器为复数个时,全部上传会浪费时间,所以连到network drive复制的PLAG P3Server 1里有更新文件时,用NETWORK DRIVE把文件传给其他的P3Server 注:FileSize大时,分别用 P3 Server上传时,会花费很长时间。要使用这个技能时在下面的[Option] 里的 AutoCopy值改为1; 0是不复制更新文件,自行处理。 COUNT=3 D_1=M:\Inetpub\ftproot\update (P3Server FTP Root/Update/ 文件夹) D_2=N:\Inetpub\ftproot\update D_3=O:\Inetpub\ftproot\update
- RegistType=0: 0 一般更新文件, 1 安装版文件
■ 使用方法 (1) 设置 INI与 P3Server符合.(用CONTROL在程序内设置,服务器宕机时可以保存) (2) 执行程序. (确认有auto service 时,周期监测) (3) 程序周期检查在 FTP root 里的 Update 文件夹, update_1.dat, update_1.torrent, update_1.end, urlinfo.ini 文件(4个)都在时,开始更新. (4) 检索到上面文件后,把 .dat 与 .torrent文件复制成update Path 与 torrent Path. (5) 确认其他设置,把剩下的END, ini 文件删除. 注:update 文件夹要一直空着. Update_XX.dat, Update_XX.torrent 文件编号(XX)要一致, 要记录在urlinfo.ini,才可以正常驱动。 (6) 程序搜索记录在现有SERVICE ini里,以BitTorrent_UpdateSvr 名字开始的SERVICE,把version, subversion 值与记录在 urlinfo.ini里的有效更新文件编号进行对比,优先把无效的SERVICE中止后,把REGISTRY里各参数值用现有更新文件名字替换后,重新开始SERVICE. 如果Update_150.dat是刚上来的值 ,就会被记录version = 150이. 如果名为 update_152_2.dat的文件上来,就被记录成version = 150, subversion = 2.
J、用 Tracker确认更新文件是否正常使用 在EXIP=IP的 PC网页里,用相应的ip进去,就可以看到如下的更新文件内容. http://P3服务器IP:6969
如果更新文件上传后, BitTorrent_UpdateSvr SERVICE正常重开始时,上面表格中,相应更新文件的complete 变成 1以上, download变成0以上. Complete如果不是 1,说明File Seeder没有正常登录文件.
6、配置说明 6.1 Linux 系统下服务端进程配置文件 在/etc/cabal 目录中, '服务器种类[_序号].ini'是Cabal相应服务端的配置文件; EX) /etc/cabal/GlobalMgrSvr.ini /etc/cabal/WorldSvr_01_21.ini A、GlobalDBAgent - 执行文件 /usr/bin/GlobalDBAgent 直接使用DBAgent 进程时,一般是连上该进程的软链接进行控制。 [root@gms-sms ~]# ll /usr/bin/GlobalDBAgent lrwxrwxrwx 1 root root 16 Apr 26 09:11 /usr/bin/GlobalDBAgent -> /usr/bin/DBAgent
- 配置文件 /etc/cabal/GlobalDBAgent.ini [DBAgent] DSN =在 /etc/odbc.ini里写入要使用的DB.在 /etc/odbc.ini 里加入与 ACDB相关的名称. [DSN] DBAddr, DBCatalog 在实际LINUX里是不使用的. WINDOW时,在守护进程开始时,已经登录了ODBC,只需参考上面即可。 LINUX是已经在/etc/odbc.ini 里登录了.(因为从程序上不好登录,所以事先登录好后开始.) DBId = 要连接到DB的ID DBPwd = DB密码
B、DBAgent - 执行文件 /usr/bin/DBAgent_XX 软链接文件是'DBAgent_服务器序号' 形态.
-配置文件 /etc/cabal/DBAgent_XX.ini Port = 为了不与别的服务器重复,在38181~38189之间设置. [DBAgent] ServerIdx = 记下相应的服务器序号. 在DBAgent_XX.ini 里要与 XX 值一样. 其余与 GlobalDBAgent 的设置方法一样.
C、GlobalMgrSvr - 执行文件 /usr/bin/GlobalMgrSvr GlobalMgrSvr全服只需要一个,所以直接用/usr/bin/GlobalMgrSvr;
- 配置文件 /etc/cabal/GlobalMgrSvr.ini [DBAgent] Addr = GlobalDBAgent 的IP Port = GlobalDBAgent 的端口 (基本 38180) * [PCBangLK] * MIDEA WEB PC房认证服务器 (LK) 信息 * Addr = LK 的IP * Port = LK 的端口 (基本 10004) * 如果不使用网吧认证,上面的值留为空白就可以.
D、LoginSvr - 执行文件 /usr/bin/LoginSvr_XX 软链接的文件是 'LoginSvr_服务器序号'. 客户端更新后在 /etc/cabal/LoginSvr_XX.ini 修改客户端版本信息后, 需要重新引导配置文件;
# service LoginSvr_XX reload
- 配置文件 /etc/cabal/LoginSvr_XX.ini [LoginSvr] GroupIdx = 记下相应GROUP序号. 在LoginSvr_XX.ini 要与 XX 的值一样. client_version=输入客户端版本信息. [GlobalMgrSvr] Addr = GlobalMgrSv的IP Port = GlobalMgrSvr的端口 (基本 38170)
E、WorldSvr - 执行文件 /usr/bin/WorldSvr_XX_YY 软链接的文件是'[WorldSvr]_服务器序号_频道' 形式。
-配置文件 /etc/cabal/WorldSvr_XX_YY.ini [NetLib] Port = 为了不和别的服务器重复,在38111~38119之间设置. [WorldSvr] ServerIdx = 记下相应的服务器序号.在 WorldSvr_XX_YY.ini 里要与 XX 的值一样. GroupIdx = 记下相应GROUP (频道)的序号.在 WorldSvr_XX_YY.ini 里要与 YY的值一样. AddGameGuardName =填写需实时LOAD的GAME GUARD CS认证MODULE.(只需 GAME GUARD认证LIBRARY V2.0) UseGameGuardAuth = [0: Off, 1: On] (GAME GUARD CS认证 On/Off, RUN TIME可适用) GameGuardInterval = GAME GUARD CS认证 [DBAgent] Addr = DBAgent_XX 的IP Port = DBAgent_XX 的端口 (38181~38189) [GlobalMgrSvr] Addr = GlobalMgrSvr的IP Port = GlobalMgrSvr的端口 (基本 38170)
F、ChatNode - 执行文件 /etc/cabal/ChatNode_XX.ini 软链接的文件是'[ChatNode]_服务器序号' 形式。 -配置文件 [NetLib] Port = 38121 [ChatNode] ServerNationIdx = 记下相应的服务器序号.在 ChatNode_XX.ini 里要与 XX 的值一样 [DBAgent] Addr = DBAgent_XX 的IP Port = DBAgent_XX 的端口 (38181~38189) [GlobalMgrSvr] Addr = GlobalMgrSvr的IP Port = GlobalMgrSvr的端口 (基本 38170)
6.2关键文件说明 A、/etc/cabal/server_list 运营中服务器上记录着要执行的守护进程的清单. 在/etc/init.d/cabal, /home/cabal/check_daemon.sh, /home/cabal/gen_config.sh里参考这个文件;
B、/etc/logrotate.d/cabal 适当截取'/var/log/cabal/服务器名称.log' 的 logrotate 设置文件;
C、/home/cabal/backup_trc.sh 把放在服务器上的'/var/log/cabal/服务器名称_时间.trc' 文件复制成备份服务器; 以供备份服务器构成时设置;
D、/home/cabal/check_daemon.sh 在/etc/cabal/server_list的守护进程里,如果检查有进程没有执行,马上执行它; E、/home/cabal/dump_core.sh 把WorldSvr 死掉时留下的 /home/cabal/core.pid 文件读取; 方便查看'gdb /usr/bin/WorldSvr.debug core.xxxx' 的脚本。
F、/home/cabal/gen_config.sh 把/etc/cabal/server_list 里的守护进程的设置 (/etc/cabal/*.ini)自动GENERATING的脚本
G、/etc/cron.d/backup_trc 每天凌晨 1点执行/home/cabal/backup_trc.sh.
H、/etc/cron.d/chk_cabal 每 1分钟执行 /home/cabal/check_daemon.sh. 服务器宕机时,在1分钟内重新启动.
I、/etc/init.d/cabal_server '/etc/init.d/软链接到守护进程名称'的文件
J、/etc/init.d/cabal 读取/etc/cabal/server_list 种类,一次执行'/etc/init.d/服务器名称'等. EX)重新开始这个服务器里所有的守护进程 # /etc/init.d/cabal restart 等同 service cabal restart
6.3 LOG文件 在/var/log/cabal 目录,以'服务器种类[_序号].log' 保存. EX) /var/log/cabal/LoginSvr.log /var/log/cabal/WorldSvr_21_01.log
6.4 cabal进程脚本 使用Redhat linux系统里用于进程控制的脚本。 /etc/init.d 里有与服务器名相同的脚本。 EX) /etc/init.d/LoginSvr /etc/init.d/DBAgent_21 实际上,服务器都使用一样的 /etc/init.d/cabal_server 文件,在脚本里选择用各种不同的进程种类来控制的守护进程开启与关闭。 # ll /etc/init.d/GlobalMgrSvr lrwxrwxrwx 1 root root 24 May 8 09:11 /etc/init.d/GlobalMgrSvr -> /etc/init.d/cabal_server 三、维护管理篇 <参考>排错思路 ▪ 发现故障后,首先确认故障点; ▪ 排查准则,先软后硬; ▪ 先查网络状态,再查服务进程; ▪ 找到故障问题点和起因,核查程序日志; ▪ 排除故障后,详细记录,作为维护参考FAQ;
1.工具介绍 Cabal维护的主要工具包括Server Monitor、Cabal Manager、Mailing Manager、Log Viewerl、Program Browser; 这里主要介绍Server Monitor和log Viewerl工具: 1.1 使用Server Monitor Server Monitor 开服流程: A、 打开每个区域的Server Monitor工具;输入授权的账号和密码登录; B、 输入Ctrl+R 勾选range和open,输入服务器和频道的序号范围点击apply开启服务;
C、 输入Ctrl+G 可以对每个服务器和频道进行状态设定;
D、 其中J代表绿色频道,A代表白色频道,War代表战争频道,conn可设定频道人数上限; E、 为了开机是能快捷和准确,我们设定了脚本开机方式;同时按下Ctrl+Alt+A,脚本格式如下: <server> <srange>1</srange> ;服务器范围 <channel> <range>1</range> ;频道范围 <limit>200</limit> ;人数上限 <adult>0</adult> ;频道属性[0为绿色频道、1为白色频道] </channel> <channel> <range>2~6</range> <limit>100</limit> <adult>0</adult> </channel> <channel> <range>7</range> <limit>200</limit> <adult>0</adult> </channel> </server>
F、 设定玩脚本代码点击’save’保存代码的修改,按’Execute’执行代码,勾选server open的话就会按照代码指定的属性进行开服操作。 G、 完成以上操作后,所有人头图标全部为绿色,为成功开服,使用客户端登录测试。 Server Monitor 关服流程: A、 右键点击Login Server的图标,选择OFF,关闭Login Server。 B、 敲入Ctrl+R,确定不勾选Open,选择use range appoint,输入所有服务器和频道范围,点击apply。
C、 敲入Ctrl+M,选择send message的广播方式向玩家发送即将关服的信息。
D、 接着使用shutdown的广播方式开始确认踢人。 E、 最后使用force shutdown的广播方式踢出所有玩家。
1.2 Log Viewer工具使用 A、Start 菜单 用于与服务器连接 Connect: 与服务器连接 DisConnect: 切断与服务器的连接 B、 Option 菜单 连接后激活 GetData & Create Macro 打开可以获取数据的MARCO创建窗口 保存创建的MARCO,可以减轻重设置MARCO的麻烦
C、 制作Marco
点击‘New’新建一个Macro
在Setting窗口中,选择要查询的Server、Channel和Commands查询类目(类目详细介绍可参考Cabal log明细单.xls),并且可以设定条件,如时间、角色ID号、登录IP地址等,选定后,可以保存为一个特定Macro,按Run进行查询,完成后,点击ok; 出现如下图示:
点击‘Save to Excel’,将输出的内容保存为Excel文件。
2. 日常维护 2.1常用指令集 检查网络状态:(绿色字体本地PC执行,红色字体远程服务器执行) A、测试故障服务器网络是否正常: ping ‘IP’ IP为故障点服务器外网IP; B、查看故障服务器的网络链接情况: netstat –an (PS:检查是否有公网IP的链接以及各应用服务器间链接是否正常建立,监听端口是否正确;) tcp 0 0 0.0.0.0:38112 0.0.0.0 LISTEN tcp 0 0 0.0.0.0:32768 0.0.0.0 LISTEN tcp 0 0 0.0.0.0:38113 0.0.0.0 LISTEN tcp 0 0 0.0.0.0:2049 0.0.0.0 LISTEN tcp 0 0 0.0.0.0:38114 0.0.0.0 LISTEN tcp 0 0 0.0.0.0:998 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:982 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:38111 0.0.0.0:* LISTEN tcp 0 280 222.73.241.17:38112 222.185.246.222:41299 ESTABLISHED tcp 0 90 222.73.241.17:38114 220.152.161.139:50032 ESTABLISHED tcp 0 36 222.73.241.17:38111 58.37.3.117:1135 ESTABLISHED tcp 0 51 222.73.241.17:38113 222.67.51.141:1085 ESTABLISHED LISTEN为本机监听端口,ESTABLISHED为成功建立两台服务器之间的链接。 C、查看cabal进程是否正常运行: # ps aux |grep cabal (正确显示以下内容为正常) cabal 2575 15.5 15.2 877360 633540 ? S<l Jun07 237:32 WorldSvr_01_01 cabal 2610 7.0 12.6 754052 525112 ? S<l Jun07 107:46 WorldSvr_01_02 cabal 2645 6.6 13.5 777028 560808 ? S<l Jun07 101:28 WorldSvr_01_03 cabal 2680 6.0 12.7 753352 530284 ? S<l Jun07 91:50 WorldSvr_01_04 D、查看cabal进程日志(日志文件的说明上面已经列明): #tailf /var/log/cabal/WorldSvr_01_01.log 实时监控日志文件输出内容; #tail -50 /var/log/cabal/WorldSvr_01_01.log 查看日志文件的最后50行; #more /var/log/cabal/WorldSvr_01_01.log 以每频幕为单位显示日志文件的所有内容(空格键继续); #cat /var/log/cabal/WorldSvr_01_01.log |grep –i error 只检查日志文件的Error行; 注:检查日志文件以查看Error行为主,判断出错原因。 E、查看服务器运行的哪些进程? #catcabal (脚本命令等同cat /etc/cabal/server_list) WorldSvr_01_01 WorldSvr_01_02 WorldSvr_01_03 WorldSvr_01_04 F、Cabal维护脚本说明: 所有维护用脚本全部放在各区manager server的/root/cabal/目录下: chnstop_all:关闭所有cabal服务进程; chnstart_all:开启所有cabal服务进程; chnstart_world:只开启World Server 进程; chnstop_world:只关闭World Server 进程; chnstop_chat:只关闭Chat Server进程; chnstart_chat:只开启Chat Server进程; cmd[game/chat]_shell.sh: 全服(游戏服/聊天服)控制命令; scp[game/chat]_cmd.sh: 全服(游戏服/聊天服)复制命令; check_md5.sh:校验各服务器进程主程序的md5值; check_proc.sh:检查每台服务器的服务进程运行情况; 所有脚本使用规则: 确定当前目录为/root/cabal/ 脚本执行格式:./脚本名字 [参数1] [参数2] 脚本陆续更新中…… 2.2系统维护内容 A、系统帐户 查看有无新增系统帐户,并了解其来源及用途;查看管理员组里有无新增帐户,以及所有账户的账户策略有无变动; Windows服务器操作如下: 开始 -> 运行 -> regedt32(赋予查看sam键值的权限) 开始 -> 运行 -> regedit (HKEY_LOCAL_MACHINE/SAM/SAM/DOMAIN/USERS/NAMES/) 开始 -> 运行 -> compmgmt.msc (打开计算机管理窗口检查里面的用户权限和策略) Linux服务器操作如下: cat /etc/passwd查看有没有大于500的用户;(cabal用户除外) B、监听端口 查看当前打开的服务端口,查找可疑的端口; Windows服务器操作如下: 使用Fport工具或netstat -an |findstr "LISTEN" Linux服务器操作如下: 直接打LISTEN或netstat –ant |grep LISTEN C、任务管理器 使用任务管理器,查找有无可疑的应用程序或后台进程在运行,并观察CPU及内存的使用状态; Windows服务器操作如下: Ctrl + Alt + Del 选择task manager Linux服务器操作如下: top命令可查看系统状态,free命令可查看系统内存信息。 D、 系统服务 开始->程序->管理工具->服务,察看所有系统服务,检查是否有陌生的未知的服务; E、 启动项 检查注册表编辑器,查找有无可疑的程序被加到Windows的启动项里; Windows服务器操作如下: 开始 -> 运行 -> regedit (HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/RUN) Linux服务器操作如下: cat /etc/rc.local有无多余执行脚本或者命令存在。 F、 日志分析 Windows服务器操作如下: 查看事件查看器,检查“系统日志”“安全日志”“应用程序日志”里有无可疑的事件或影响系统性能的事件; Linux服务器操作如下: cat /var/log/message |more 查看有没有错误信息 cat /var/log/secure |more查看有没有入侵和攻击信息 G、 共享目录 检查共享目录,关闭所有共享; H、 硬盘空间 检查磁盘空间情况,对必要内容进行备份; Windows服务器操作如下: 磁盘信息查询,我的电脑(备份服务器详见《cabal服务器备份方案》) Linux服务器操作如下: 服务器状态可查询各区监控服务的接口或用df –h命令查看磁盘状态,linux下备份可使用脚本完成。 I、在线人数/服务器监控 利用工具实时监控在线人数,各个频道状态,及时发送需求的公告和运营信息。发现人数变动异常及时记录和汇报相关负责人和部门主管。 服务器状态监控,各个大区都有一套监控平台。检查关键指标的峰值和均值,发现异常及时处理。
3.停机维护 3.1系统更新 检查操作系统的系统更新,保持同步更新; 3.2安全扫描 使用病毒及木马查杀软件扫描内存及硬盘,并保持病毒库的更新。 3.3操作记录 记录所有的维护项目及操作步骤,如发现任何异常情况及时汇报相关负责人和部门主管。 3.3重启服务器 完成所有检测后,重启该服务器。 3.4数据库备份 A、检查数据库服务器备份情况 B、检查是否依据制定的备份方案定期备份 C、校验备份包及事物日志 D、检查最新备份包是否传送到备份服务器 3.5 硬件和网络 重启服务器后,检测每台服务器的状态,如发现有服务器故障,及时联系IDC机房,检测网络和硬件状态,并汇报相关负责人和部门经理。
4.更新流程 4.1更新环境 惊天动地游戏更新按内容主要分为服务器端更新、客户端更新两个部分,逻辑图如下:
A、服务端更新: -涉及服务器全部为linux系统; -服务器类型:World Server、Login Server、GMS Server、Chat Server、DBA Server; -由Manager Server同步更新; -执行脚本进行更新、检查和排错; -更新前必须先关闭服务的进程,更新完毕后,需要重启系统。
B、客户端更新: -涉及服务器为windows和linux系统; -服务器类型:P3 Server、info server、Login Server以及CDN; -更新包需要上传到CDN,提前完成; -Info server最后更新:指定客户端下载更新文件定位和方式『P3和CDN』; -确定服务端和客户端版本一致;
4.2更新原则 更新采用覆盖原文件的方式,所以每次更新前必须备份原程序(尤其是二进制和data文件); 覆盖服务器文件前,确保更新文件的正确性(尤其是配置文件);
4.3服务端更新流程 A、测服更新 更新在停机维护的时候进行; 更新前确认需要更新的程序和文件是哪些?什么时候更新?是否需要改动配置文件? 韩方会在远程将ITS 服务器(222.73.241.209)更新完毕; 根据更新的程序和文件修改update脚本: 脚本所在位置:/root/cabal/ 脚本文件名:update_xx(xx表示区域)update_gz update_sh update_tj update_xn 修改的脚本内容:vi update_sh #sync_backup $server /usr/bin/LoginSvr (Login Server的主程序如更新需要重启该服务) sync_backup $server /usr/bin/GlobalMgrSvr (GMS Server的主程序如更新需要重启该服务) #sync_backup $server /usr/bin/DBAgent (DBA Server的主程序如更新需要重启该服务) sync_backup $server /usr/bin/WorldSvr (Game Server的主程序如更新需要重启该服务) #sync_backup $server /usr/bin/ChatNode (Chat Server的主程序如更新需要重启该服务)
#sync_backup $server /usr/lib/libggauth2.so.0 #sync_backup $server /usr/lib/libggauth2.so.50 #sync_backup $server /usr/lib/libggauth2.so.51 #sync_backup $server /usr/lib/libggauth2.so.52 #sync_backup $server /usr/lib/csauth2.cfg
#sync $server /etc/cabal/CashDBAgent.ini #sync $server /etc/cabal/GlobalDBAgent.ini #sync $server /etc/cabal/GlobalMgrSvr.ini #sync $server /etc/cabal/LoginSvr.ini #sync $server /etc/cabal/DBAgent.ini #sync $server /etc/cabal/ChatNode.ini #sync $server /etc/cabal/WorldSvr.ini #sync $server /etc/cabal/Common.ini #sync $server /etc/cabal/Data/ 注:行首带“#”的为注释,修改时,根据需更新的程序和文件在这里进行设定,也就是在行首增加和删除“#” 其他内容不需要进行更改。 修改完4个地区名的脚本后,依次执行脚本; 确保在/root/cabal/目录下: cd /root/cabal/ ./update_sh ./update_tj ./update_xn ./update_gz
B、Manager Server更新 完成以上步骤后,4个地区的Manager Server就和ITS的程序文件同步了。 以下步骤将更新同步到Real Server: 登录到各区的Manager Server,这里以上海(请查阅《cabal服务器信息简表》)为例: 进入更新脚本所在目录: cd /root/cabal/ 相关更新需要用到脚本说明: update_all:同步所有cabal Server; update_login:同步login Server; update_gms:同步GMS Server; update_dba:同步dba Server; update_chat:同步Chat Server; update_world:同步World Server; update:同步某一台服务器;(如:update login01) check_md5.sh:校验各服务器进程主程序的md5值; check_proc.sh:检查每台服务器的服务进程运行情况; 关闭服务器 Server Monitor 关服,并踢出玩家。 同步前修改update脚本:(以更新World Server为例) vi update 修改内容同ITS,另外取消以下两条的注释: ssh $server rm -f /home/cabal/core\* ssh $server rm -f /home/cabal/check_daemon.log 关闭服务进程: cd /root/cabal/ ./chnstop_world (关闭所有的World Server的进程) 同步更新文件至每台game server: ./update_world 检查更新文件(比对md5值是否一致) cd /root/cabal/check/ ./check_md5.sh ***** gms01 ***** local GlobalMgrSvr : 2a980a0a2e722c09abe5a65136896a77 /usr/bin/GlobalMgrSvr gms01 GlobalMgrSvr : 2a980a0a2e722c09abe5a65136896a77 /usr/bin/GlobalMgrSvr 开启服务进程(维护时重启系统) cd /root/cabal/ ./chnstart_world (开启所有的World Server的进程) ./cmdgame_shell.sh reboot (重启所有World Server的操作系统) cd /root/cabal/check/ ./check_proc.sh (重启系统后执行,坚持所有World Server的进程是否运行)
C、更新流程图
开启服务器 Server Monitor 开服。玩家正常登录,确定更新完成。 注:如需要,可在防火墙作限制,进行内部测试。
4.4客户端更新流程 A、上传CDN 更新包文件update_xxx.dat(xxx为更新版本号,非客户端版本号) 上传CDN的FTP 222.73.242.246 的update目录 计算dat文件的md5值,使用工具winmd5等。 发送以上信息给CDN:邮件'icust@chinacache.com'; 'isupport@chinacache.com'; 'support@chinacache.com' 邮件内容写明更新文件名,upload位置,md5值,更新频道。例如: Icust 您好!
本次更新1个文件: ftp://222.73.242.246/update/update_159.dat md5值 ce26bf9ac330f0335b8e546c2cf2daa4 update_159.dat 更新频道为 http://hnupdate.cabalchina.com/ http://hdupdate.cabalchina.com/ http://xbupdate.cabalchina.com/ http://dbupdate.cabalchina.com/ 的pds目录下
请尽快更新 谢谢! 电话确认更新事宜,CDN更新完毕后,会通过邮件回复。 分别测试:四个频道的下载地址。如:http://hnupdate.cabalchina.com/pds/update_159.dat 链接无问题CDN同步成功。
B、上传P3 Server 非必要更新,视更新包文件大小而定,目前暂定大小超过6MB需要更新。
C、更新Info Server (所有更新完毕后) Info Server主要提供客户端版本比对和更新lanucher版本。 找到urlinfo.ini文件,一般位于HTTP发布目录下的Update\Files\pure\目录中。 内容注释: [download] MAX_FAIL_P3TRAN=10 LIMIT_LOW_SPEED=5 STANDARD_P3_SPEED=5 LIMIT_SPEED_MAX_COUNT=60 ALLOW_SPEED_INC_VALUE=2 DOWNLOAD_RETRY_COUNT=5 CONNECT_WAIT_TIME=20 [MODE] P3=1 [version] #lanucher 版本 launcher=1.21 [urlinfo] updateurl = http://hdinfo.cabalchina.com/Update/Files_2/ setupfile = http://hdinfo.cabalchina.com/pds/ torrentfile = http://hdinfo.cabalchina.com/pds/ [updateinfo] updatemax =10 updateindex =6 #更新文件索引 最大值为10 testmax =3 testindex =0 p3count =4 p3subdir =P3_ p3SubDir1 =P3_1 p3SubDir2 =P3_2 p3SubDir3 =P3_3 p3SubDir4 =P3_4 [1] #更新文件索引号 version=21 subversion=1 DirectMode=0 torrenturl=http://hdinfo.cabalchina.com/pds/update_21_1.dat.zip fileurl=http://hdupdate.cabalchina.com/pds/update_21_1.dat subfileurl=http://hdupdate.cabalchina.com/pds/update_21_1.dat ………… [6] #更新文件索引号 添加的项目数不能大于updateindex所设之数。 version=166 #更新文件版本 subversion=0 #子版本号 DirectMode=0 #下载方式(0为cdn和p3混合模式,1为cdn单独) torrenturl=http://hdinfo.cabalchina.com/pds/update_166.dat.zip #种子文件所在位置 fileurl=http://hdupdate.cabalchina.com/pds/update_166.dat #更新文件下载位置 subfileurl=http://hdupdate.cabalchina.com/pds/update_166.dat
韩方会提供比对的urlinfo.ini文件,据此,更新info服务器的设置,增加和删除项目。不可直接使用韩方提供的文件。 其次根据实际情况设定DirectMode。视更新包文件大小而定。 更新文件索引号的数量请参考韩方给的urlinfo.ini。
更新lanucher的方法: 直接将更新的文件(update.exe update.1st等) 覆盖HTTP目录下的Update\Files_2\的原文件。 注:各区的url的地址都不相同,所以更新时,最好的方法就是在原来的urlinfo文件上修改。
D、调整LoginSvr上的客户端版本 登录各区的LoginSvr; 进入Login Server 的配置文件所在目录: #cd /etc/cabal 编辑配置文件: #vi LoginSvr_01.ini [NetLib] Port=38101 SendMaxBufSize=65536 ProcessDataLimit=10240 MaxUserNum=20000 WatchsNoPackLimit=10000 SystemLogTTimeOut=100 ReactorTimeOut=-1 ConnectRetryTime=5000 ConnectRetryNum=10 LogLevel=3
[LoginSvr] GroupIdx=1 Timer=1:10000,2:5000,3:5000 NoActiveLimitTime=40000 client_version=1071 #客户端版本 修改与cabalmain.exe的版本相同;
[GlobalMgrSvr] Addr=172.16.1.5 Port=38170
重载配置文件 #service LoginSvr_01 reload
4.5客户端更新流程图
4.6 数据库更新 数据库更新EST实现给出详细更新方法和执行用的SQL脚本,一般根据更新方法的说明,依次在每台gameDB或者每个区的AccountDB中的查询分析器中执行sql脚本即可。 EST在更新数据库是会提供在线帮助的服务,有问题及时联系商务部韩翻即可。 5.数据备份 游戏整体数据备份方面,主要包括Server端程序以及数据库两部分的备份内容: 5.1服务器端程序备份: 首先:服务器端程序的备份相对简单,主要是采取刻录光盘的形式,即每次有新版本的服务器端程序发布后,将其连同客户端,一同刻录光盘保存。 其次:在每次更新服务端程序时,必须备份原来的旧程序到本地的备份目录中,以便出现问题时可以及时恢复。 最后:做好相应的所有更新前后的版本整理工作。
5.2数据库备份 Cabal DB的架构: Game DB 主数据库(记录玩家在游戏中角色信息等) Account DB 账号数据库(记录玩家用户信息等) Shop DB 商城数据库 根据各DB的数据重要程度,各DB的具体备份情况如下: 5.2.1 Game DB 的备份
A、Game DB数据比较重要,一般Game DB数据所在的硬盘需要作raid 1的冗余备份;物理上对数据作冗余备份,有利于因硬件磁盘故障导致数据丢失后的数据恢复工作; B、先利用SQL自带的数据库维护计划,分别对DB进行完全备份以及事物日志备份, 备份目录统一为D:\Sql_bak; C、利用同步备份软件,将每次备份的数据同步备份至Backup Server; D、每周将最近一次备份的资料上传到存储设备或者下载到公司服务器上并刻录成光盘保存。
5.2.2 Shop DB、Account DB的备份 (由于这两中DB都比较重要,故建议以下3个备份方案,具体采用哪个备份方案将通过综合考虑决定?) Account DB和Shop DB采用相同的备份方案,以下以Account DB为例进行介绍 服务器硬盘之间直接备份(方法同Game DB) A、架设服务器时, Account DB数据所在的磁盘需要作raid 1的冗余备份;物理上对数据作冗余备份有利于因硬件磁盘故障导致数据丢失后的数据恢复工作; B、先利用SQL自带的数据库维护计划,分别对DB进行完全备份以及事物日志备份, 备份目录统一为D:\Sql_bak; C、利用同步备份软件,将每次备份的数据同步备份至Backup Server; D、每周将最近一次备份的资料上传到存储设备或者下载到公司服务器上并刻录成光盘保存。 数据库群集备份
A、架设服务器时, Account DB数据所在的磁盘需要作raid 1的冗余备份;物理上对数据作冗余备份有利于因硬件磁盘故障导致数据丢失后的数据恢复工作; B、采用数据库群集的架构,既可以保障数据的安全,同时也可以减轻单台Account Server的负载,减少计划外的停机时间; C、每周将最近一次备份的资料上传到存储设备并下载到公司服务器上并刻录成光盘保存。
四、惊天动地 FAQ 1.服务器故障 A、客户端用户登录后无法显示服务器列表? 查看server monitor是否正常开始服务,server monitor工具是否正常运作。 B、 客户端用户登录中,无法连接服务器? 检查login服务器是否正常运行?GlobalDBAgent 服务器和AccountDB链接是否正常。 C、 客户端显示登录服务器版本不对? 只有更新维护后,会出现这个故障,原因为login服务器的进程配置文件中client_version字段的内容和客户端主执行文件cabalmain的版本不正确。
LoginSvr_01.ini文件中client_version=1104; D、 连续多组服务器同时出现服务中止现象? 判断为游戏服务器所在的刀片中心故障,按照排错思路,先检查网络状态,然后查看进程运行情况。也就是先检查刀片中心的交换模块,可在刀片中心的模块管理中,重启交换模块,来解决该问题。在确认刀片中心网络正常的情况下:在排查每台刀片服务器的网络状态,确保网络可以正常工作。确认以上步骤都正常的情况下,还不能连通网络,可联系机房查看网线连接和交换机端口。 E、 多个或者单个频道出现故障? 多个频道故障,现在每台World Server提供连续的4个频道服务,确定是这些频道的服务器出现故障后,同样的先查网络,如外网不通,可通过manager服务器进行内网连接,内网也不通的话,可判断为服务器已经宕机或者网络服务中断,可通过刀片中心的管理模块远程连接到该服务器上查看,如已经宕机,可在管理模块中重启该片服务器。单个频道故障一般系统会自动重启该频道,如不行,可登上该服务器进行手动重启。 F、 玩家反映不能进行私聊或者工会服务? 该服务由聊天服务器提供,定位故障点的服务器,进行手动重启该进程,就能解决。必须在确保网络正常连接的情况下。 G、 Server Monitor显示服务正常工作,但玩家不能正常登录,且login人数异常? 如果是全服都存在该问题,先检查globalDBAgent服务器状态是否正常,进程服务、网络状态、并查看日志;和accountDB连接是否正常等;接着查看AccountDB服务器状态是否正常,sql服务、网络服务、磁盘空间等。 个别服务器组存在该问题:查看该服务器组的DBAgent和对应的GameDB服务器。检查项目依照排错思路。 H、 玩家分配道具异常,摩宝箱可看到道具但不能正常转移到角色身上? 主要是CashDBAengt服务器出现故障引起,依照排错思路进行检查。
2.客户端故障 详见官网(逐步添加)
五、参考选项 1.参考文档 cabal逻辑结构拓扑图 cabal网络结构拓扑图 GAME DB 说明手册 Blade manual(IBM刀片中心管理模块介绍) 刀片服务器和刀片中心介绍参考: http://www-900.ibm.com/cn/support/viewdoc/uprosupport?pageid=0&category=2131&docordown=down Linux 学习论坛 http://www.linuxfans.org/nuke/index.php http://bbs.linux.org 2.其他说明
|