Service Fabric 无法连接到 UDP 上的来宾可执行文件(Unreal Engine 服务器)

Service Fabric can't connect to guest executable on UDP (Unreal Engine Server)

我正在尝试将 Unreal Server 来宾可执行文件部署到 Service Fabric。 我一直在关注这个博客 post:

http://haishibai.blogspot.com/2017/03/setting-up-highly-available-minecraft.html

除非我不使用容器并使用基于 Windows 的服务。

在本地集群上一切正常。我可以从客户端连接到已部署的服务器。

尝试连接到远程服务器时,无法连接。

查看我的服务结构管理页面时,我的服务器进程似乎正在运行(它有正确的进程 ID)。

在我的 LoadBalancing 服务中,我在 UDP/7777 上进行了端口转发,尽管 HealthProbes 在 TCP 上(select UDP 没有选项,我不知道那是不是 mnatter)。

这是我的服务清单:

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="UnrealGuestPkg"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <!-- This is the name of your ServiceType. 
         The UseImplicitHost attribute indicates this is a guest executable service. -->
    <StatelessServiceType ServiceTypeName="UnrealGuestType" UseImplicitHost="true" />
  </ServiceTypes>

  <!-- Code package is your service executable. -->
  <CodePackage Name="Code" Version="1.0.0">
    <!-- The SetupEntryPoint is an optional element used to specify a
         program to be executed before the service's code is launched. -->
    <!--
    <SetupEntryPoint>
      <ExeHost>
        <Program></Program>
      </ExeHost>
    </SetupEntryPoint>
    -->
    <EntryPoint>
      <ExeHost>
        <Program>ActionRPGGame\Binaries\Win64\ActionRPGGameServer.exe</Program>
        <Arguments>-log</Arguments>
        <WorkingFolder>CodeBase</WorkingFolder>
        <!-- Uncomment to log console output (both stdout and stderr) to one of the
             service's working directories. -->
        <!-- <ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048"/> -->
      </ExeHost>
    </EntryPoint>
  </CodePackage>

  <!-- Config package is the contents of the Config directoy under PackageRoot that contains an 
       independently-updateable and versioned set of custom configuration settings for your service. -->
  <ConfigPackage Name="Config" Version="1.0.0" />

  <Resources>
    <Endpoints>
      <!-- This endpoint is used by the communication listener to obtain the port on which to 
           listen. Please note that if your service is partitioned, this port is shared with 
           replicas of different partitions that are placed in your code. -->
      <Endpoint Name="UnrealGuestTypeEndpoint" Port="7777" Protocol="udp" />
    </Endpoints>
  </Resources>
</ServiceManifest>

1.You 似乎缺少服务 endpoint 配置。

<Resources>
  <Endpoints>
    <!-- This endpoint is used by the communication listener to obtain the port on which to 
         listen. Please note that if your service is partitioned, this port is shared with 
         replicas of different partitions that are placed in your code. -->
    <Endpoint Name="ServiceEndpoint" Port="7777" />
  </Endpoints>
</Resources>
  1. 负载均衡器上的探测不支持 UDP。因此,公开第二个使用 tcp 的服务端点,就像健康端点一样。