本实验需要一台带有显卡的 Windows 机器,硬盘至少 20G,用于运行游戏客户端。本实验需要容器化改造后的游戏应用镜像,该游戏镜像可直接从镜像仓库下载。本实验需要使用华为公有云 ECS、EVS、EIP、CCE、SWR 等云资源部署并运行游戏。本实验还需要在本地下载游戏的客户端,该游戏的客户端可直接用以下链接下载:http://obs.cn-north-
1.myhuaweicloud.com/cce.cn-north-1/master-images/CCE0.0.0.B001/wlkwowc.rar。
本实验以某游戏 demo 为例,讲解如何部署游戏应用到 CCE 云容器引擎服务中,并演示了伸缩和升级的操作,用于指导游戏类应用的容器化部署。
1.1.2 实验目的
熟悉游戏类应用容器化部署的基本流程。
掌握 docker 环境安装基本过程和 docker 基础指令。
掌握 SWR 镜像仓库的基础使用方法。
掌握 CCE 云容器引擎的基础使用方法。
掌握如何使用 CCE 云容器引擎伸缩和升级应用的方法。
1.1.3 部署流程
图 1-1 实验部署流程
本实验通过上传游戏 demo 包含三个组件(wow-auth 登录认证系统、wow-world 游戏服务器、mysql 数据库)相关镜像到 SWR,方便后续容器调取相应镜像。
环境准备说明
游戏容器化改造前需要进行微服务的架构改造,本教程不对改造细节做深度讲解,仅提供大致的建议。
容器化改造建议:将游戏的三个组件(wow-auth 登录认证系统、wow-world 游戏服务器、 mysql 数据库)分别容器化,部署在虚拟机中。需要部署的应用组件,以及各组件之间的关联关系:
部署游戏应用前,需要准备硬件以及华为云的环境,主要包括以下内容:
硬件环境:您需要准备一台带有显卡的 Windows 机器,硬盘至少 20G,用于运行游戏客户
上传游戏应用镜像:该游戏 demo 包含三个组件:wow-auth 登录认证系统、wow-world 游
戏服务器、mysql 数据库。CCE 支持一键部署 mysql 数据库,无需用户自己制作容器镜像再部署。用户需要准备两个镜像,即:wow-auth 登录认证系统、wow-world 游戏服务器。(在本教程中,这两个组件的镜像已制作完成,用户可直接下载使用,无需自行制作。)
1.2.2 任务二:安装 docker 环境
步骤 1 检查内核版本,docker 只能运行在 64-bit linux 内核 3.10 或高于 3.10 的系统中。 uname –r 步骤 2 更新 apt 包索引。 sudo apt-get update 步骤 3 安装 docker。 sudo apt-get install docker.io 步骤 4 验证。 sudo docker info 步骤 5 启动 docker 服务。 sudo service docker start 步骤 6 检测 docker 服务。 sudo docker run hello-world 步骤 7 查看容器镜像。 docker images
Docker镜像下载
步骤 3 针对游戏 demo,已提前准备了四个镜像,wow-auth 认证系统(5.0 和 5.1 版本)wow-world 游戏服务器(5.0 和 5.1 版本)。各准备两个版本是为了演示后续的升级操作。请分别执行如下命令拉取镜像到本地: docker pull swr.cn-north-1.myhuaweicloud.com/wow/wow:wowauth-5.0 docker pull swr.cn-north-1.myhuaweicloud.com/wow/wow:wowauth-5.1 docker pull swr.cn-north-1.myhuaweicloud.com/wow/wow:wowworld-5.0-withmap docker pull swr.cn-north-1.myhuaweicloud.com/wow/wow:wowworld-5.1-withmap 镜像较大,预计需要耗时 5-10 分钟,请耐心等待。 步骤 4 查看镜像。 docker images 步骤 5 上传 wowauth-5.0、wowworld-5.0-withmap、wowauth-5.1、wowworld-5.1- withmap 镜像到容器镜像仓库,请选择北京四并创建全局唯一的组织。 sudo docker tag [{镜像名称}:{版本名称}] swr.cn-north-4.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称} sudo docker push swr.cn-north-4.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称} 说明:swr.cn-north-4.myhuaweicloud.com 中的 cn-north-4 为执行上传镜像的弹性云服务器所在区域。 请输入以下命令: wowauth5.0 wowworld-5.0 上传 docker tag swr.cn-north-1.myhuaweicloud.com/wow/wow:wowauth-5.0 swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowauth-5.0 docker push swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowauth-5.0 docker tag swr.cn-north-1.myhuaweicloud.com/wow/wow:wowworld-5.0-withmap swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowworld-5.0-withmap docker push swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowworld-5.0-withmap wowauth-5.1、wowworld-5.1 上传 docker tag swr.cn-north-1.myhuaweicloud.com/wow/wow:wowauth-5.1 swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowauth-5.1 docker push swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowauth-5.1 docker tag swr.cn-north-1.myhuaweicloud.com/wow/wow:wowworld-5.1-withmap swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowworld-5.1-withmap docker push swr.cn-north-4.myhuaweicloud.com/sooele/wow:wowworld-5.1-withmap
1.3.2 任务二:创建 MySQL 数据库
步骤 1 登录 CCE 控制台,左侧导航栏中选择“工作负载 > 有状态负载 StatefulSet”,在右侧页面单击“创建有状态工作负载”。
步骤 3 单击“下一步:容器设置”,单击“添加容器”,选择 mysql 镜像,单击“确定”。选择镜像为“5.7”
步骤 4 设置环境变量,此处一共需要设置四个环境变量。
MYSQL_ROOT_PASSWORD:MySQL 的 root 用户密码。 MYSQL_DATABASE:镜像启动时要创建的数据库名称。 MYSQL_USER:数据库用户名称。 MYSQL_PASSWORD:数据库用户密码。
步骤 5 添加云存储,作为mysql的存储。将存储挂载到容器的 /var/lib/mysql 路径,这是mysql默认使用的路径。
步骤 6 单击“下一步:工作负载访问设置”,配置负载信息。有状态负载需要配置一个用于实例间发现的Headless Service,本示例没有使用该功能,随便填写一个端口即可。
步骤 7 单击“添加服务”。
访问类型选择集群内访问(ClusterIP),服务名称设置为mysql,容器端口和访问端口都配置为3306,单击“确定”。
mysql镜像的默认访问端口默认为3306,所以容器端口的ID设置为3306,访问端口可以设置为其他端口号,但这里也设置成3306是为了方便使用。
这样在集群内部,通过服务名称:访问端口就可以访问MySQL负载,也就是mysql:3306。
步骤 8 单击“下一步:高级设置”,然后单击“创建”。
步骤 9 待负载状态为“运行中”,负载创建成功。
1.3.3 任务三:部署wow-auth认证系统
步骤 1 在CCE左侧导航栏中选择“工作负载 > 无状态负载 Deployment”,单击“创建无状态工作负载”。
步骤 3 单击“下一步:容器设置”,单击“添加容器”选择镜像,搜索wow,选择wowauth-5.0版本的镜像。
步骤 5 展开“环境变量”,配置环境变量,用于连接数据库,以及连接wow-world游戏服务器。
mysqlipmysqlip:数据库访问地址 。 选择有状态负载,点击新创建的mysql,点击其访问方式,拷贝访问地址。 mysqlrootpasswdmysqlrootpasswd:数据库管理员权限密码 。 biboaddressbiboaddress:游戏服务器外部访问地址,可以选择弹性 IP 方式,或者负载均衡。本例使用弹性 IP biboport:游戏服务器外部访问端口,需要预先自定义设置一个值,范围为 30000 -32767 ,此处设为 32500 。
1.3.4 任务四:部署wow-world游戏服务器
步骤 1 在CCE左侧导航栏中选择“工作负载 > 无状态负载 Deployment”,单击“创建无状态工作负载”。
步骤 4 容器规格请设置如下。计算资源根据应用本身所需设置,本例游戏的wow-world组件至少需要2 Core的CPU,和2GiB的内存。
步骤 5 设置环境变量,用于连接数据库。
mysqlip:变量值请填写数据库访问地址。 mysqlrootpasswdmysqlrootpasswd:数据库管理员密码 。
1.3.5 任务五:运行游戏
wow-auth 的服务端口:选择 CCE 左侧导航栏的“工作负载 > 无状态负载
Deployment ”,单击 wowwow-auth 名称,进入详情页面,选择“访问方式”页签,获取其服务端口
步骤 4 下载魔兽茶馆80级怀旧服-正式登录器,合并到wlkwowc目录后进入登入器编辑模式。修改入服务器网址和端口为:服务器地址:wow-auth的服务端口。