而在几天前亚马逊AWS游戏行业研讨会上,亚马逊将它们的这些案例做了一次系统的梳理,其跨国企业及市场营销拓展部主管林家伟分享了AWS在一款游戏的初创期、成长期、成熟期,衰退期这四个阶段,分别能为游戏公司解决什么样的问题。
初创期
林家伟首先举了个例子,Supercell现在已经成为2013年的手游明星,但他们的第一款游戏Gunshine却并不成功。与Supercell一样,在游戏还在初创期时,游戏公司就不可避免需要大量的试错、而且这些尝试本身必须需要是迅速和低成本的,这样游戏公司才能做更多的人力物力去进行游戏创新。
这就是为什么越来越多的开发者开始选择云计算服务:游戏客户不需购买额外得硬件资源,而能直接通过AWS快速部署游戏网络——比如游戏开发者可以选择位于离终端用户最近的区域部署服务器,并根据需求,选择服务器的数量,而不用做其他的冗余的设计。著名的跨国游戏公司育碧,就曾利用AWS在8周内连续推出10款游戏。
在AWS上部署好服务器之后,你可以选择自己熟悉的OS应用环境、可以是Linix或者是Windows,以及更多软件开发工具包写入代码,进行游戏部署。AWS能够自动化地对多台服务器进行流量入口分配,保证每台服务器的负载均衡。如果开发者有DNS服务的需求,可以使用Amazon Route 53服务。而在数据库上,AWS提供了两种选择——游戏开发者既可以使用亚马逊自有的数据库RDS(Amazon Relational Database Service),也能在EC2上自建数据库。所有这些的服务的部署只需要几分钟的时间。整个过程中,AWS都会自动处理有关容量预配置、负载均衡、Auto-scaling 和应用程序运行状况监控的部署细节。
在游戏测试期间,AWS也能根据需求快速的调整游戏策略,它的好处是——游戏的运营人员不需要半夜起来去做服务期的调试设置,而是直接通过亚马逊的管理控制台界面(支持中文)做服务器的部署。对于现在许多已经出海的游戏公司而言,他们能直接通过AWS服务去管理欧洲等海外市场地区服务器,控制台还支持移动端设备进行设置。
增长期
游戏在增长期时所面对的最大问题,就是难以估量的用户爆发量,给服务器带来的压力,开发者一方面需要提升服务器的稳定性减少宕机,另一方面又得考虑成本问题——如果用户增长没有达到预期,那么限制的服务器就是在浪费成本。
林家伟在这里分享的例子是Rovio公司的《愤怒的小鸟》,这款风靡世界的游戏达到过20亿人次的下载,拥有2.5亿月活跃用户,它们的服务就是AWS平台。它们把不同游戏放在不同可用区域,一方面可以做负载平衡,另外,当一个区域受影响的时候,不至于游戏崩溃。而亚马逊数据库服务RDS,支持作多地区部署。在A可用区域数据,会在B可用区域做即时的数据库备份。一旦A部分出现问题,客户不需要修改程序,而是自动切换到B可用区域上来,作为主要的数据库,减少对终端影响。
应对DUA(日活跃用户数)的快速变化,亚马逊推出的Auto Scaling服务。举个例子,在一天中的不同时段,游戏服务器所面对的压力是不同的——比如许多游戏会在中午12点领体力、签到等活动,流量就会迅速攀升。Auto Scaling会根据流量变化,在1分钟的时间内自动增加服务器数量,而在夜晚用户流量回落时,也AWS会自动减少服务数量,帮客户节省资源。这项服务在不同时段区间所启动的服务器量可以让游戏公司根据自己的需要自行设定。它之前只能用API控制,现在也能直接在用户界面控制。
游戏用户在快速增长时,遇到的另一个问题可能是服务器性能上的瓶颈,比如每秒读写的速率问题。亚马逊提供了Provisioned IOPS,提供游戏开发商明确要求的读写性能。这个要求可以很高,甚至可以EBS块连接起来,达到3万量级的IOPS。但对于许多内容,只是被用户读,而不需要写入,游戏客户只需要用ElastiCache 服务,做读写分流,就能降低对数据库请求压力。
索尼旗下的顽皮狗游戏公司,曾对AWS服务做过架构调整。它们把之前关系型数据库中的数据,放在了Amazon S3中。S3能根据用户的存储数量的按需付费。它的好处是,由于并不是所有的玩家都会长期游戏,有些用户玩了一两个月后,很久才回去玩,这些沉淀数据对与延迟要求不高,存储在S3就能降低对数据库的压力,等需要用到数据时,再从S3调入。
在游戏用户快速成长的时候,需要快速做产品迭代,解决游戏中的问题和推出更多的内容迎合玩家需求。而亚马逊CDN,能帮助游戏用户快速把游戏升级包分发出去。
当游戏运行到海量数据时,游戏用户可能会需要亚马逊DynamoDB动态数据库服务。使用它的通过时忽视数据库软硬件服务所带类的所有问题。用户只需设定每秒必须请求的数量,亚马逊能直接帮你配置的到分配到的硬件数量,并能够根据需求调整。而这数据存储在固态硬盘上,能够快速读写调用。在安全性上,这些数据会跨过多个可用区域,自动复制备份。配合DynamoDB同步复制架构,任何单个节点出现的问题,都不会影响到数据库的稳定性。
成熟期
当一个游戏进入成熟期后,游戏公司就需要根据一个相对稳定的状况来进行运营上的成本控制。亚马逊EC2提供了三种预留实例(Reserved Instance),能根据用户的使用频率,对应不同的价格,在保证要部署的区域有足够的服务器资源的情况下,节省主机的租赁成本。
(Funplus如何调配预留实例,降低游戏运营成本的)
最后一部分是结束期,这个时期一般游戏运营会用较少的服务器,保持游戏正常运行,同时保持低开销。客户可以用很少的heavy utiliztion RI保持服务器的正常使用;也可以完全撤出对所有的服务器使用。
1、ssh连接服务器连接不上
aws默认创建非root用户,并且使用密钥对登录,公钥存储在/home目录+用户名的隐藏.ssh文件下,因为公司项目有要求也是只能通过密钥对登录就没有修改账户密码登陆,登录后使用命令sudo -i 切换到root用户。因为挂载磁盘在/home目录下所以密钥对没有当断开连接或超时自动断开时就会再也连不上去了。所以可行的时挂载到/mnt目录或者挂载/home前备份文件,挂载后cp到/home下。
这个问题弄得我好烦,我以为是更改端口的问题,后面没更改还是一样出错,而且aws还不允许初始化系统和还原快照好像。
创建root用户密钥对
其实这个也适合配置服务器间ssh免登录
2、修改默认端口
因为默认ssh端口不安全容易被黑客找到机会,要求更改默认端口,并且生产环境要求启用防火墙,想着测试环境各种关闭防火墙部署环境那叫一个爽,到了生产就叫苦了。更改默认端口后需要开启防火墙和selinux,云上还要开启安全组,记得开启防火墙端口后要重载,selinux也需要开放端口,ssh需要重启。
这里困扰了挺久的,我想到了防火墙和安全组,没注意selinux。
3、防火墙
服务器上部署etcd,服务连不上etcd,报错no route to host,结果还是防火墙问题,开放2379和2380端口,并且记得重载。
4、启动docker容器时报错
5、nginx安装失败
6、etcd连接不上
7、ip ping不通
这个是安全组未开放icmp端口,开放所有ipv4就可以了。
8、asw S3设置公开访问权限
这个配置我是真的挺无语的,设置了好久解决不了,还是json来配置吧。老外的思维和我们还是挺大的哈。
8、购买服务器
购买服务器选择镜像一定选择官方镜像,注意安全。
9、购买RDS
AWS RDS可以设置只对内网开放或公网开放,通过终端节点连接,所以不要去傻傻的找公网IP和私有IP了。
连接方式终端节点+端口+主用户+主密码。
10、nginx问题
Nginx 500错误(Internal Server Error 内部服务器错误)
HTML 文档的字符编码未声明。如果该文件包含 US-ASCII 范围之外的字符,该文件将在某些浏览器配置中呈现为乱码。页面的字符编码必须在文档或传输协议层声明。
原因是nginx配置以及权限问题。
还有几个是未解之谜,怪事年年有,aws特别多
文章仅给自己引以为戒,犯过的错误不要再犯,归根结底还是对AWS不熟悉。
国外除了AWS,还有 https://www.linode.com/ , https://www.vultr.com/ ,这几个都不错的。
首先登陆 『AWS管理控制台』 ,进入 『EC2』 。 左侧树依次点击『ELASTIC BLOCK STORE』-『Volumes』,点击『Create Volume』创建一个新的volume。 按照 AWS 免费套餐条款 ,每月有30 GB 的 EBS 可用。但也没必要最大额,够用即可。 Availabilit...欢迎分享,转载请注明来源:夏雨云
评论列表(0条)