2017-08-20 3 views
0

Je tente de déployer l'exécutable invité Unreal Server sur Service Fabric. J'ai ce poste de mise en jachère blog:Service Fabric ne peut pas se connecter à l'exécutable invité sur UDP (Unreal Engine Server)

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

Sauf que je ne suis pas en utilisant des conteneurs et utiliser le service basé sur Windows.

Sur un cluster local, tout fonctionne. Je peux me connecter du client au serveur déployé.

Lorsque j'essaie de me connecter au serveur distant, je ne peux pas me connecter à celui-ci.

Lorsque vous consultez la page de gestion de ma structure de service Il semble que mon processus de serveur fonctionne (il possède l'ID de processus approprié).

Dans mon service LoadBalancing, j'ai le transfert de port sur UDP/7777, bien que les HealthProbes soient sur TCP (il n'y a pas d'option pour sélectionner UDP, je ne sais pas si c'est le cas).

Est Voici mon ServiceManifest:

<?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> 

Répondre

1

1.You semblent manquer la configuration du service 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 ne sont pas pris en charge pour des sondes sur l'équilibreur de charge. Par conséquent, exposez un deuxième point de terminaison de service qui utilise tcp, tout comme un noeud final de santé.