目录

云服务器的配置

本文会以阿里云为例子介绍云服务器环境中如何进行分布式搭建。

第一步:获取每台服务器的内网地址和外网地址

登录阿里云,左侧导航选中“云服务器 ECS”->“实例”,查看服务器信息:

查看对应服务器的外网IP和内网IP:

记录下来。我们这里假设,外网IP为“ip_external”,内网IP为“ip_internal”。


第二步:配置kbengine.xml

该文件位于{项目资产库}/res/server/kbengine.xml

Loginapp和Baseapp:

如果该服务器是Loginapp,我们配置如下:

<root>
    <loginapp>
        <internalInterface> ip_internal </internalInterface>
        <externalInterface> ip_external </externalInterface>

        <externalAddress>   ip_external </externalAddress>
        <!-- 暴露给客户端的端口范围
            (Exposed to the client port range) 
        -->
        <externalPorts_min> 20013 </externalPorts_min>					
        <externalPorts_max> 0 </externalPorts_max>					
    </loginapp>
</root>

如果和其他app,在同一台服务器上,我们可以把internalInterface标签内置空,使其使用本机的本地连接(如127.0.0.1),否则请保留上方的配置,这样可以让内网环境内的其他app知道Loginapp的内网地址。

我们知道Loginapp是需要外部访问的,我们需要在externalInterface中填入外网IP。

这里,我们在externalAddress标签下也设置为外网的IP,是因为有时候云服务器的外网IP是通过端口映射的方式暴露出去的,所以我们强行指定一下。

Baseapp类似配置,把标签loginapp换成baseapp即可。


Machine:

我们在其他章节中已经介绍过Machine,这里不再赘述。它会在启动时,使用UDP广播的方式对内网环境做一些响应测试。在云服务器环境中,UDP广播是经常被禁止的。这里我们就需要对配置中的machine节点做一些配置。

<root>
    <machine>
        ...
        <!-- 服务组使用多台硬件组成网络,在某些网络环境由于路由器的设置不允许UDP广播造成跨物理机组网不成功时
            可在此填入所有相关物理机的地址,引擎将会向具体的地址发送探测包来完成组网。
            (When the network is composed of a plurality of hardware, the specific network address is detected.) 
        -->
        <addresses> 
            <item>127.0.0.1</item>
            <item>ip_internal</item>
            <item>ip_internal2</item>
            ...
        </addresses>
    </machine>
</root>

addresses节点中以item为标签,插入所有内网服务器的ip。这样就可以使Machine工作正常。

注意: 这里我们插入了127.0.0.1,当该服务器上有多个app时,可以使本机也进行UDP广播。


其他app:

除Loginapp和Baseapp外,都是内网app,所以只需设置internalInterface标签即可。当一台服务器运行所有app时,该标签仍然置空即可。当分布式时,需要设置为ip_internal。我们拿Cellapp为例:

<root>
    <cellapp>
        <internalInterface> ip_internal </internalInterface>
        ...
    </cellapp>
</root>

这样配置即可让内网环境内的其他app知道当前app的内网地址。


DBMgr:

DBMgr稍有些不同,它需要额外配置数据库连接。在阿里云中提供了专门的“云数据库 RDS版”,性能比在ECS上自己安装的数据库要强劲许多,它的内网、外网地址是一个类似“rm-xxxx.mysql.rds.aliyuncs.com”的域名。

<root>
    <dbmgr>
        ...
        ...
        <databaseInterfaces>
            <default>
                <!-- 数据库地址 
                    (Database address)
                -->
                <host> 你的数据库内网地址 </host>								
                <port> 你的数据库内网端口 </port>	
                <!-- 数据库账号验证 
                    (Database auth)
                -->
                <auth>  
                    <username> 你的数据库用户名 </username>									<!-- Type: String -->
                    <password> 你的数据库登录密码 </password>							<!-- Type: String -->
                    
                    <!-- 为true则表示password是加密(rsa)的, 可防止明文配置 
                        (is true, password is RSA)
                    -->
                    <encrypt> true </encrypt>
                </auth>
            </default>
        </databaseInterfaces>
    </dbmgr>
</root>


恭喜你,完成云服务器环境下的配置了!

OK!经过这些配置,在云服务器环境下的就可以正常建立起引擎体系,并顺利启动服务器了。


Copyright © 2018 Yolo Technologies. Publication: 2.0-025. Built: 2018-12-07.