阿里云弹性容器 ECI + 持久存储 NAS 搭建饥荒游戏专服
阿里云 ECI 有免费试用的活动,使用代金券免费搭建饥荒专服,活动时间:2020年11月1日-2021年12月31日,账户可能需要有 100¥ 余额(下面我会解释这个问题),本文适合有一定饥荒专服搭建基础的朋友。
我需要的就是按需付费,因为伙伴平时都上班的,每天就晚上玩几个小时,为这几个小时开一天就有点亏,如果能有2v4G的学生机那肯定划算,但是我们已经过了时间了,现在再开包年的已经开不起了。
账户需要 100¥ 余额?
首先因为当前的 NAS 并没有提供一个可以在线编辑文件系统的功能,如果你要编辑自己持久化存储的文件,必须将其绑定到 ECS 实例,然后通过实例来操作,清凉应用服务器是不可以的,所以我们需要一个 ECS 实例:
- 我已有,已有实例的话就不用管余额了,注意你的后续操作的专属网络、交换机和 NAS 文件系统和你的已有实例保持在一个区即可;
- 我没有,但我有钱/有渠道(比如学生机),我分分钟买一个,那在你购买实例之后也是像上述一样不用 100 余额;
- 我没有,我也买不起原价一个月几百的实例,那就可以用按需付费的方式,因为我们操作文件的次数频率不会很高,所以按需付费购买个1v1G的,用完就删掉也就一两毛钱的事儿,缺点就是使用按需付费的 ECS 需要你的账户有 100 余额
注意目前来说只有 ECS 可以操作 NAS ,轻量应用服务器是不可以的,之前看这两者的区别的时候,看到说 ECS 支持扩展,当时不知道是什么意思,现在用到了,就明白了,像 NAS 就是扩展之一,给服务器挂载数据卷。我自己之前开的也是轻量应用服务器,毕竟带宽要更好些,然后现在要用 NAS 就得保持账户余额这种方法。
准备 NAS
NAS 是阿里云提供的一项持久化存储服务,需要付费,但是以我们的存储量,需要支付的也不会很多,我选的是最便宜的一种(通用型里的容量型),一个月 0.35/GB ,这里的话还是建议大家使用通用型里的性能型,读写延迟更低,价格虽然看起来很多,但是因为我们的使用量并不大,最多也就用个 1G ,我感觉一个月3毛和一个月一块多就还好吧,不如选一块多的。
注意不同地区可提供的套餐也不同,如果发现只有容量型或者只有性能型的选项不妨切换可用区试试,默认给到的都是性能型。创建专属网络和 VPC ,记得 和你的实例在一个位置 ,建议你人在哪就选哪个地域得了,比如你在上海就直接选个上海的地域,记也好记。创建专属网络和 VPC 差不多把必填的都填了就问题不大,拿不准填啥的就用它给你推荐的。
创建专属网络和交换机
可以看到图中就两个必填项,名称填一个符合格式的,网段上方的提示中蓝字是可以点击的,直接点击一个自动填充进去就好了
在下方的交换机配置中,选择一个可用区, 此处的可用区要和你的实例(如果你有自己的 ECS 实例)对应上的 ,在一个可用区才能通信
初始化 NAS
NAS 在没有文件传入的时候是啥都没有的就一个根目录,首先创建一个按量付费的 ECS ,配置就选个 1v1G 的配置就好,同样的要注意专属网络和交换机和 NAS 要在同一个区,NAS 中。进入文件系统的详情页,如图显示,选择挂载使用,可以看到下方有显示 挂载到ECS 的选项,点击即可看到操作步骤,十分简单,几步命令就可以了。
挂载成功后,进入 NAS 目录,新建几个存档路径备用,或者使用 ftp 或 sftp 将存档上传到根目录后重命名,假设重命名为 save_1
,这里的存档得是用 docker 镜像版专服生成的存档,其实主要就是确保使用的端口一致。
ECI
ECI 可以在页面上创建,也和 ECS 实例一样有启动模板,它提供了一个 eci-client 的方式来创建容器组实例,这里我使用的是 eci-client 的方式,我的目标是以最方便的方式搭建,在页面上操作的步骤还是挺多的,我倾向命令操作。按照 文档 要求安装好 client 客户端,注意这里的客户端目前只支持 Mac 和 Linux ,命令行可用命令参数查看 ECI-CLI 。
通过文件配置启动参数
新建文件命名为 ali-eci.yml
,文件里面的注释是我为了方便解释加的,如果使用的话最好将注释去了,省的来回粘贴的时候错行了,将安全组ID、交换机ID和 token 填入你自己的,公网带宽的配置我选择放在启动参数里单独写。
ContainerGroupName: dst-group # 容器组名称
RegionId: cn-beijing # 地区ID - 北京
ZoneId: cn-beijing-h # 可用区ID - 可用区H
SecurityGroupId: sg-xxxxx # 安全组ID - 填入你自己的
VSwitchId: vsw-xxxx # 交换机ID - 填入你自己的
CPU: 2.0 # CPU 2核
Memory: 2.0 # 内存 2G
Container: # 容器设置
- Name: dst-1 # 名字
Image: registry-vpc.cn-beijing.aliyuncs.com/goodlcw1-prod/dst-server # 镜像,我猜默认拉取版本是 latest
ImagePullPolicy: IfNotPresent # 镜像拉取策略:按需拉取
CPU: 2.0 # 给这个容器分配多少 CPU
Memory: 2.0 # 给这个容器分配多少内存
VolumeMount:
- Name: nas # 挂载名为 nas 的数据卷
MountPath: /data # 容器内挂载路径为 /data
ReadOnly: false # 非只读
EnvironmentVar: # 环境变量
- Key: DST_CLUSTER_TOKEN
Value: 填入你的 token
Volume: # 数据卷配置
- Name: nas # 命名为 nas
Type: NFSVolume # 类型
NFSVolume:
Server: xxx.nas.aliyuncs.com # 挂载路径,在你的文件系统的挂载使用栏可以看到
Path: /save_1 # 路径 /save_1
ReadOnly: false # 非只读
新建 h.sh
文件,写入
echo "-------------- 执行容器组实例创建 ----------------"
eci run -f ali-eci.yml -w 5
echo "------------ 执行完毕 ---------------"
exit
这样就配置好了,当需要启动的时候只要执行这个脚本就可以了,使用完之后就把这个实例销毁掉。是否写脚本看各自需要。
eci ps # 查看正在运行的实例
eci logs -t 1000 imageId # 输出最新的1000 条日志
费用
我用过的 1v2G 的大约每小时 2 毛钱,2v4G 的大约 四毛五每小时,2v2G 的大约是四毛,然后现在 ECI 在推广期,有 100 元的代金券,每天玩几个小时的话能用两三个月。