为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

征途服务器端架设完全攻略

2017-09-17 22页 doc 54KB 510阅读

用户头像

is_713593

暂无简介

举报
征途服务器端架设完全攻略征途服务器端架设完全攻略 游戏服务器注意事项? 一、硬件的安装? 1、保证服务器风扇正常转动。? 2、保证服务器各个提示灯是否正常。? 3、开机察看服务器有无报警情况。? 4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)? 二、系统的安装? 安装RHEL 4.1? 选择自动分区。? 分别给2块网卡配置ip,方便以后配置,其中eth0配内网ip,eth1配外网ip。? 不启用防火墙。? 增加中文语言包。? 选择软件包时,只选择开发包.? 三、系统的简单设置? 1、防火墙的简单设置:? ?? v...
征途服务器端架设完全攻略
征途服务器端架设完全攻略 游戏服务器注意事项? 一、硬件的安装? 1、保证服务器风扇正常转动。? 2、保证服务器各个提示灯是否正常。? 3、开机察看服务器有无报警情况。? 4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)? 二、系统的安装? 安装RHEL 4.1? 选择自动分区。? 分别给2块网卡配置ip,方便以后配置,其中eth0配内网ip,eth1配外网ip。? 不启用防火墙。? 增加中文语言包。? 选择软件包时,只选择开发包.? 三、系统的简单设置? 1、防火墙的简单设置:? ?? vi /etc/rc.d/forward? :(例子)? #!/bin/bash? echo 1 >/proc/sys/net/ipv4/ip_forward? if [ -e /proc/sys/net/ipv4/tcp_ecn ]? then? echo 0 > /proc/sys/net/ipv4/tcp_ecn? fi? /sbin/iptables -F? /sbin/iptables -F -t nat? /sbin/depmod -a? /sbin/modprobe ip_tables? /sbin/modprobe ip_conntrack? /sbin/modprobe ip_nat_ftp? /sbin/modprobe ip_conntrack_ftp? /sbin/iptables -A INPUT -i?? lo -j ACCEPT? /sbin/iptables -A INPUT -i?? eth0 -j ACCEPT? /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT? #/sbin/iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset? /sbin/iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable? #sshd? /sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT? /sbin/iptables -A INPUT -s 218.80.198.250 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT? /sbin/iptables -A INPUT -s 210.22.188.21 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT? #ftp server? #/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT? #game server? /sbin/iptables -A INPUT?? -p tcp -m state --state NEW -m tcp --dport 6020 -j ACCEPT? #db server? /sbin/iptables -t nat -A PREROUTING -s 218.80.198.234?? -d 203.110.165.30 -p tcp --dport 3306 -j DNAT --to 192.168.102.158:3306? /sbin/iptables -t nat -A PREROUTING -s 218.80.198.234?? -d 203.110.165.30 -p tcp --dport 3307 -j DNAT --to 192.168.102.159:3306? /sbin/iptables -P INPUT DROP? /sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.102.0/24 -j MASQUERADE? 保存后退出。? ?? chmod 744 /etc/rc.d/forward? ?? 然后运行防火墙脚本,以后根据需求修改脚本。? ??? ?? 再vi /etc/rc.d/only_forward? #!/bin/bash? echo 1 >/proc/sys/net/ipv4/ip_forward? if [ -e /proc/sys/net/ipv4/tcp_ecn ]? then? echo 0 > /proc/sys/net/ipv4/tcp_ecn? fi? /sbin/iptables -F? /sbin/iptables -F -t nat? /sbin/depmod -a? /sbin/modprobe ip_tables? /sbin/modprobe ip_conntrack? /sbin/modprobe ip_nat_ftp? /sbin/modprobe ip_conntrack_ftp? /sbin/iptables -A INPUT -i?? lo -j ACCEPT? /sbin/iptables -A INPUT -i?? eth0 -j ACCEPT? /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT? #/sbin/iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset? /sbin/iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable? #sshd? /sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT? /sbin/iptables -A INPUT -s 218.80.198.250 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT? /sbin/iptables -A INPUT -s 210.22.188.21 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT? #ftp server? #/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT? #game server? /sbin/iptables -A INPUT?? -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 6020 -j ACCEPT? #db server? /sbin/iptables -t nat -A PREROUTING -s 218.80.198.234?? -d 203.110.165.30 -p tcp --dport 3306 -j DNAT --to 192.168.102.158? /sbin/iptables -t nat -A PREROUTING -s 218.80.198.234?? -d 203.110.165.30 -p tcp --dport 3307 -j DNAT --to 192.168.102.159:3306? /sbin/iptables -P INPUT DROP? /sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.102.0/24 -j MASQUERADE? 此防火墙只允许公司的电脑可以登录游戏。? 2、设置系统自动启动防火墙? ????vi /etc/rc.d/rc.local? 增加一行? ????/etc/rc.d/forward? ???? 保存后退出? 3、设置文件打开数? 1) 修改/etc/security/limits.conf 增加2行:? *????????soft???? nofile?? 4096? *????????hard???? nofile?? 65535? 2) 修改/etc/pam.d/login 增加1行? session required?? pam_limits.so? 可用:? echo “*??????soft???? nofile?? 4096” >>/etc/security/limits.conf? echo “*????????hard???? nofile?? 65535” >>/etc/security/limits.conf? echo “session required?? pam_limits.so” >>/etc/pam.d/login? 4、修改默认语言? ????vi /etc/sysconfig/i18n 修改? LANG="zh_CN.GB2312"? 新建游戏运行用户ztgame,设置密码? useradd ztgame? passwd ztgame? 用ztgame用户登录服务器,修改vi /home/ztgame/.bash_profile增加一行? ulimit –c unlimited? ????保存后退出。? 四、游戏环境的搭建(按照4台网关服务器,5台场景服务器,1台数据库服务器的构架)? 1、服务器IP设置? 4台网关服务器配置外网ip和内网ip,5台场景服务器和数据库服务器只配置内网ip,并且服务器默认网关为第一台网关服务器的内网ip。? 服务器以服务器应用-序号-机房序号命名(例GWServer01-CHJ01)。? 修改/etc/hosts。? 例子:? 127.0.0.1????????????????GWServer01-CHJ01 localhost.localdomain localhost? 192.168.100.101??????????GWServer02-CHJ01? „„„? 192.168.100.104??????????ScenServer01-CHJ01? „„„? 192.168.100.109 DBServer-CHJ01? 2、公钥的生成? 在ztgame的用户下登陆第一台网关服务器,输入ssh-keygen -t dsa? 接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。? 使用以下命令改变你的 .ssh 的许可权限:? chmod 755 ~/.ssh? 把 ~/.ssh/id_dsa.pub用scp命令传到其它剩余9台服务器? scp~/.ssh/id_dsa.pub?ztgame@192.168.102.108:~/.ssh/authorized_keys? 在其它9台服务器下使用以下命令改变你的 authorized_keys 文件的许可权限:? chmod 755 ~/.ssh? chmod 644 ~/.ssh/authorized_keys? 3、数据库服务器的安装? #首先确定你是root用户? #确定你有以下包? perl-DBD-MySQL-2.9004-3.1? perl-DBI-1.40-5? mysql-4.1.7-4.RHEL4.1? 获得mysql-4.1.*.tar包,用tar –zxvf mysql-4.1.*tar解开压缩包,然后进入mysql-4.1.* 目录? #根据体统类型选择编译方式? #i386体系结构的? CFLAGS="-O3 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O3 -mcpu=pentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-raid --enable-thread-safe-client --enable-assembler?? --with-server-suffix =" for >>>MySQL Database of Zebra by Yhc<<<" --without-debug --with-extra-charsets=none --without-isam --disable-shared --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --without-bench? #64位系统,x86_64? CFLAGS="-O3 -m64" CXX=gcc CXXFLAGS="-O3 -m64 -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-raid --enable-thread-safe-client --enable-assembler?? --with-server-suffix =" for >>>MySQL Database of Zebra by Yhc<<<" --without-debug --with-extra-charsets=none --without-isam --disable-shared --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --without-bench? #然后根据CPU数量进行编译? make -j 2 && make install? #添加用户? groupadd mysql && useradd -g mysql mysql? #创建目录? mkdir /usr/local/mysql/data && mkdir /usr/local/mysql/run && mkdir /usr/local/mysql/log && mkdir /usr/local/mysql/var? #更改mysql目录所有者? chgrp mysql -R /usr/local/mysql && chown mysql -R /usr/local/mysql? #增加打开文件数量? ulimit -n 4096? #添加PATH? echo " ATH=\"/usr/local/mysql/bin:\$PATH\"" >> /etc/profile && export PATH="/usr/local/mysql/binPATH"? #strip可执行文件? strip /usr/local/mysql/libexec/mysqld? #添加LIB PATH? echo "/usr/local/mysql/lib" >> /etc/ld.so.conf && ldconfig? #将my.cnf文件cp到/etc目录下? cp support-files/my-huge.cnf /etc/my.cnf? #修改my.cnf? datadir=/db/mysql? #创建数据库存放路径? mkdir /db? chown mysql.mysql /db -R? #初始化Mysql? su - mysql -c "mysql_install_db"? #启动服务器? su - mysql -c "mysqld_safe --skip-name-resolve --open-files-limit=4096&"? #创建数据库和用户? GRANT ALL PRIVILEGES ON *.* TO ztgame@'192.168.104.%' IDENTIFIED BY '' WITH GRANT OPTION;? GRANT ALL PRIVILEGES ON *.* TO ztgame@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;? GRANT ALL PRIVILEGES ON *.* TO ztgame@'218.80.198.234' IDENTIFIED BY '' WITH GRANT OPTION;? 4、数据库配置? 用mysql进入,然后用create database dbname创建数据库。分别创建SuperServer、 RecordServer、Bill数据库,然后用安装包目录下的*.sql的文件建立相应的表。 (SessionServer.sql也导入到RecordServer库中)。? 在SuperServer数据库SERVERLIST表内添加服务器配置信息。? 例子:? INSERT INTO `SERVERLIST` VALUES (1,1,'SuperServer','192.168.104.109',10000,'192.168.104.109',10000);? INSERT INTO `SERVERLIST` VALUES(20,20,'SessionServer','192.168.104.109',6000,'192.168.104.109',6000);? INSERT INTO `SERVERLIST` VALUES(21,21,'SceneServer','192.168.104.104',6010,'192.168.104.104',6010);? INSERT INTO `SERVERLIST` VALUES(22,21,'SceneServer','192.168.104.105',6011,'192.168.104.105',6011);? INSERT INTO `SERVERLIST` VALUES(23,21,'SceneServer','192.168.104.106',6012,'192.168.104.106',6012);? INSERT INTO `SERVERLIST` VALUES(24,21,'SceneServer','192.168.104.107',6013,'192.168.104.107',6013);? INSERT INTO `SERVERLIST` VALUES(25,21,'SceneServer','192.168.104.108',6014,'192.168.104.108',6014);? INSERT INTO `SERVERLIST` VALUES(2200,22,'GatewayServer','192.168.104.100',6020,'210.51.23.132',6020);? INSERT INTO `SERVERLIST` VALUES(2201,22,'GatewayServer','192.168.104.101',6020,'210.51.23.133',6020);? INSERT INTO `SERVERLIST` VALUES(2202,22,'GatewayServer','192.168.104.102',6020,'210.51.23.134',6020);? INSERT INTO `SERVERLIST` VALUES(2203,22,'GatewayServer','192.168.104.103',6020,'210.51.23.135',6020);? INSERT INTO `SERVERLIST` VALUES(11,11,'RecordServer','192.168.104.109',7010,'192.168.104.109',7010);? INSERT INTO `SERVERLIST` VALUES(12,12,'BillServer','192.168.104.109',7020,'192.168.104.109',7020);? 在RecordServer数据库上初始化某些表格,目前有ANSWER,TECH,COUNTRY,NPCDARE, ACCPRIV。? 数据库服务器上跑SuperServer、SessionServer、RecordServer、BillServer四个服务,4 个网关服务器分别跑4个网关服务,5个场景服务器分别跑5个场景服务。场景服务器对应 的ID就是国家配置的ID号,这个ID号决定场景服务器上面跑几个国家。? 五、服务端的配置和安装? 1、获得安装包:? release-version.tar.bz2? map-version.tar.bz2? 在/home/ztgame下建立以时间为名字的目录(game20050928),压缩包放入此目录,然后用 tar –jxvf?? release-version.tar.bz2 和tar –jxvf map-version.tar.bz2解开压缩包? 进入release目录,cp –rf ../map .? 按照config.xml.example格式创建文件config.xml? 配置文件主要定义了服务器的各种参数:? [global]这段主要定义了通用参数,如服务器本地网络设备名称,扩展网络设备名称,日志 级别,SuperServer的服务器地址,端口等参数。? 其他各个段定义了具体的服务参数,主要是指定该服务对应的数据库,数据库的连接地址, 端口,用户名,密码等数据库连接字符串。每个服务可以定义日志文件的存放位置,如果没 有指定,缺省放置在/tmp/目录下面。? 如SuperServer服务? ? ???????????????? ? ???????????????? mysql://test:123456@192.168.2.14:3306/SuperServer? ???????????????? /home/test/tmp/superserver.log? ? 上面配置指明SuperServer服务,采用连接串用户名test,密码123456,访问192.168.2.14 服务器上3306端口下SuperServer数据库,日志文件存放在/home/test目录下。其他服务 配置类似。? 例子:? ? ? ? ? ?? ? ?? debug? ?? ? ?? ? ?? eth0? ?? ? ?? 192.168.104.109? ? ? ???????????????? ? ???????????????? loginServerList.xml? ???????????????? ? ???????????????? 218.80.198.252? ???????????????? ? ???????????????? 218.80.198.252? ???????????????? ? ?? mysql://ztgame:yS29wahvCH@192.168.104.109:3306/SuperServer? ???????????????? ? ???????????????? /log/superserver.log? ???????? ? ? ?? ? ?? mysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer? ?? /log/recordserver.log? ? ? ???????????????? ? ???????????????? mysql://ztgame:yS29wahvCH@192.168.104.109:3306/Bill? ?? /log/billserver.log? ? ? ?? ? ?? /log/clienttrade.log? ? ? ?? ? ???????????????? mysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer? ?? /log/sessionserver.log? ?? 3600? ?? /log/offlineMessages? ? ? ?? scenesinfo.xml? ???????????????? npctrade.xml? ???????????????? messageSystem.xml? ???????????????? initcharinfo.xml? ?? magicrangefile.xml? ?? quest/? ???????????????? map/? ???????????????? map/? ???????????????? /log/gm_log.log? ???????????????? ? ?? 300? ?? /log/? ?? /log/scenesserver.log??? ? ? ???????????????? ? ???????????????? 2? ???????????????? /log/gatewayserver.log? ???????????????? scenesinfo.xml????????????????? ???????????????? 1? ???????????????? forbidWords? ? ? 注意存放日至的目录是否建立,以及建立session服务所要求的日志存放子目录 offlineMessages。? 修改loginServerList.xml,填入平台中心的FLServer服务器ip以及端口。? 例子:? ? ? ???????? ? ???????? ? ? 然后将修改好的版本传至其它9台服务器。并启动服务? 六、服务器的启动,停止和更新? 1、将运行脚本传至各个服务器。? 2、开启游戏服务? 通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过网关服务器连接其他9台服务器,? 10个窗口内分别进入最新的服务端存放目录/home/ztgame/game200508**/release/? 数据库服务器 启动服务./SuperServer -d 和 ./SessionServer -d 和 ./RecordServer -d?? 和 ./BillServer -d? 场景服务器 启动服务./ScenesServer -d? 网关服务器 启动服务./GatewayServer -d? 以上操作可以通过/home/ztgame/tools/allstart game200508**来启动(由于程序是后台运行,所以如发现程序运行时间过长,可以CTRL+c中断,并不影响程序的正常运行。)? 3、停止游戏服务? 通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allstop, 中止所有服务? ,此脚本是并不是强行杀进程,所以如果发现进程无法kill的情况,用/home/ztgame/tools/allstop_9来强行杀死进程。? 4、查看游戏服务? 通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allview, 查看所有服务运行状态。? 5、更新游戏服务? 通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过服务器连接其他9台服务器,? 分别在/home/ztgame目录下面建立最新的服务端存放目录game200508**.? 然后将服务器端安装包通过scp传到第一台网关服务器,在game200508**下解压。? tar jxvf zebra-release-*****? tar jxvf zebra-release-*****? cp map release/ -rf? 然后从上一个版本里拷贝出一些配置文件覆盖源文件? cp /home/ztgame/game_old/release/config.xml /home/ztgame/game_new/release/? cp /home/ztgame/game_old/release/loginServerList.xml /home/ztgame/game_new/release/? cp /home/ztgame/game_old/release/messageSystem.xml /home/ztgame/game_new/release/? 以上工作准备好后就可以将网关服务器上的版本传到其他服务器? scp -r /home/ztgame/game_new/*?ztgame@192.168.100.111:/home/ztgame/game_new? 以上操作可以通过shell脚本来实现? /home/ztgame/tools/installPackage game_new game-old? 七、服务器数据的备份? 1、数据备份? 为了防止意外情况的发生造成数据的丢失,关键数据或整个系统或对有选择的系统部分,在 本地和异地进行定时备份,以保证系统全部或部分在灾害出现时也能持续运行。? 2、具体方案? 1)、数据库每日备份? ????每天4:00,将RecordServer数据库拷贝至/root/back后进行压缩,然后上传至 192.168.1.9服务器上,/root/back留有压缩版本。? ????运行脚本/root/scripts/back.sh? 例子:? #!/bin/bash? rm /root/back/RecordServer/* -rf? /usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/RecordServer -u ztgame -p yS29wahvCH? sleep 5? cd /root/back? tar zcf `hostname`-RecordServer`date +%Y%m%d`.tar.gz RecordServer? sleep 5? echo "tar ok!"? /usr/local/bin/ncftpput -u gamebak -p gamebak@ztgame 218.80.198.234 /?? /root/back/`hostname`-RecordServer`date +%Y%m%d`.tar.gz? sleep 20? echo "upload RecordServer ok!"? 2)、数据库即时备份? 每隔1小时,将RecordServer数据库拷贝至/root/back/hour目录进行备份,然后将压缩文 件传给特定服务器。? 例子:? #!/bin/bash? hottime=`date +%Y%m%d%H%M`? mkdir /root/back/hour/RecordServer"$hottime"? /usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/hour/RecordServer"$hottime" -u ztgame -p yS29wahvCH? sleep 5? cd /root/back/hour? tar zcf `hostname`-RecordServer"$hottime".tar.gz RecordServer"$hottime"? sleep 5? echo "tar ok!"? /usr/local/bin/ncftpput -u backupdb -p backupdb 192.168.102.119 /?? /root/back/hour/`hostname`-RecordServer"$hottime".tar.gz? sleep 20? echo "upload RecordServer ok!"? rm `hostname`-RecordServer"$hottime".tar.gz -f? 3)、日志备份? ????每天02:00,将/log/下前一天的日志,进行压缩,然后上传至192.168.1.9服务器。? ????运行脚本/root/scripts//upload_daily? 例子:? #!/bin/bash? cd /log/? mkdir log`date --date '1 days ago' +%Y%m%d`? mv *.log.`date --date '1 days ago' +%y%m%d`-*?? log`date --date '1 days ago' +%Y%m%d`? sleep 10? tar zcvf `hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz log`date --date '1 days ago' +%Y%m%d`? /usr/local/bin/ncftpput -u log -p log@ztgame 218.80.198.234 /?? /log/`hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz? rm `hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz? 注:计划任务通过/etc/crontab –e来进行设置? 4)、即时日志备份? ????直接运行/home/ztgame/tools/upload 将最新日志上传至192.168.1.9服务器,方便研 发部门查看。? ????运行脚本/home/ztgame/tools/upload,(如果所有服务器的日志都需要上传,可以运行 网关服务器上的/home/ztgame/tools/allupload)
/
本文档为【征途服务器端架设完全攻略】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索