1

Я заблокирован ошибкой при подключении к кластеру удаленного обслуживания ткани, работающим на предпосылке (не на Azure), используя команду Connect-ServiceFabricCluster PowerShell для подключенных к сети виртуальной машины:Почему я не могу подключиться к этому кластеру Fabric?

WARNING: Failed to contact Naming Service. Attempting to contact Failover Manager Service... 
WARNING: Failed to contact Failover Manager Service, Attempting to contact FMM... 
False 
WARNING: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.1.102:19000 
Connect-ServiceFabricCluster : No cluster endpoint is reachable, please check if there is connectivity/firewall/DNS issue. 
At Install.ps1:3 char:1 
+ Connect-ServiceFabricCluster -ConnectionEndpoint "FABRICTESTSRV:19000" -WindowsCred ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [Connect-ServiceFabricCluster], FabricException 
    + FullyQualifiedErrorId : TestClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.ConnectCluster 

Команда является :

Connect-ServiceFabricCluster -ConnectionEndpoint "FABRICTESTSRV:19000" -WindowsCredential:$True 

Почему это не работает?

Вот что я пробовал:

  • Я попытался поворота брандмауэр Windows полностью. Не повезло.
  • Подключение локально к кластеру внутри виртуальной машины работает нормально: Connect-ServiceFabricCluster "localhost:19000"
  • Это не проблема DNS. Я могу полностью проверить полное доменное имя машины.

Примечание: Это не виртуальная машина, основанная на Azure. Это просто виртуальная машина, подключенная к сети, работающая с Service Fabric Core, ванильная Windows 8.1 x64, полностью обновленная.

Edit: Get-ServiceFabricClusterManifest гласит:

<ClusterManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="ComputerName-Local-Cluster" Version= 
"1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric"> 
    <NodeTypes> 
    <NodeType Name="NodeType0"> 
     <Endpoints> 
     <ClientConnectionEndpoint Port="19000" /> 
     <LeaseDriverEndpoint Port="19001" /> 
     <ClusterConnectionEndpoint Port="19002" /> 
     <HttpGatewayEndpoint Port="19080" Protocol="http" /> 
     <HttpApplicationGatewayEndpoint Port="19081" Protocol="http" /> 
     <ServiceConnectionEndpoint Port="19006" /> 
     <ApplicationEndpoints StartPort="30001" EndPort="31000" /> 
     </Endpoints> 
    </NodeType> 
    <NodeType Name="NodeType1"> 
     <Endpoints> 
     <ClientConnectionEndpoint Port="19010" /> 
     <LeaseDriverEndpoint Port="19011" /> 
     <ClusterConnectionEndpoint Port="19012" /> 
     <HttpGatewayEndpoint Port="19082" Protocol="http" /> 
     <HttpApplicationGatewayEndpoint Port="19083" Protocol="http" /> 
     <ServiceConnectionEndpoint Port="19016" /> 
     <ApplicationEndpoints StartPort="31001" EndPort="32000" /> 
     </Endpoints> 
    </NodeType> 
    <NodeType Name="NodeType2"> 
     <Endpoints> 
     <ClientConnectionEndpoint Port="19020" /> 
     <LeaseDriverEndpoint Port="19021" /> 
     <ClusterConnectionEndpoint Port="19022" /> 
     <HttpGatewayEndpoint Port="19084" Protocol="http" /> 
     <HttpApplicationGatewayEndpoint Port="19085" Protocol="http" /> 
     <ServiceConnectionEndpoint Port="19026" /> 
     <ApplicationEndpoints StartPort="32001" EndPort="33000" /> 
     </Endpoints> 
    </NodeType> 
    <NodeType Name="NodeType3"> 
     <Endpoints> 
     <ClientConnectionEndpoint Port="19030" /> 
     <LeaseDriverEndpoint Port="19031" /> 
     <ClusterConnectionEndpoint Port="19032" /> 
     <HttpGatewayEndpoint Port="19086" Protocol="http" /> 
     <HttpApplicationGatewayEndpoint Port="19087" Protocol="http" /> 
     <ServiceConnectionEndpoint Port="19036" /> 
     <ApplicationEndpoints StartPort="33001" EndPort="34000" /> 
     </Endpoints> 
    </NodeType> 
    <NodeType Name="NodeType4"> 
     <Endpoints> 
     <ClientConnectionEndpoint Port="19040" /> 
     <LeaseDriverEndpoint Port="19041" /> 
     <ClusterConnectionEndpoint Port="19042" /> 
     <HttpGatewayEndpoint Port="19088" Protocol="http" /> 
     <HttpApplicationGatewayEndpoint Port="19089" Protocol="http" /> 
     <ServiceConnectionEndpoint Port="19046" /> 
     <ApplicationEndpoints StartPort="34001" EndPort="35000" /> 
     </Endpoints> 
    </NodeType> 
    </NodeTypes> 
    <Infrastructure> 
    <WindowsServer IsScaleMin="true"> 
     <NodeList> 
     <Node NodeName="_Node_0" IPAddressOrFQDN="localhost" IsSeedNode="true" NodeTypeRef="NodeType0" FaultDomain="fd:/0" UpgradeDomain="0" /> 
     <Node NodeName="_Node_1" IPAddressOrFQDN="localhost" IsSeedNode="true" NodeTypeRef="NodeType1" FaultDomain="fd:/1" UpgradeDomain="1" /> 
     <Node NodeName="_Node_2" IPAddressOrFQDN="localhost" IsSeedNode="true" NodeTypeRef="NodeType2" FaultDomain="fd:/2" UpgradeDomain="2" /> 
     <Node NodeName="_Node_3" IPAddressOrFQDN="localhost" NodeTypeRef="NodeType3" FaultDomain="fd:/3" UpgradeDomain="3" /> 
     <Node NodeName="_Node_4" IPAddressOrFQDN="localhost" NodeTypeRef="NodeType4" FaultDomain="fd:/4" UpgradeDomain="4" /> 
     </NodeList> 
    </WindowsServer> 
    </Infrastructure> 
    <FabricSettings> 
    <Section Name="Security"> 
     <Parameter Name="ClusterCredentialType" Value="None" /> 
     <Parameter Name="ServerAuthCredentialType" Value="None" /> 
    </Section> 
    <Section Name="FailoverManager"> 
     <Parameter Name="ExpectedClusterSize" Value="4" /> 
     <Parameter Name="TargetReplicaSetSize" Value="3" /> 
     <Parameter Name="MinReplicaSetSize" Value="3" /> 
     <Parameter Name="ReconfigurationTimeLimit" Value="20" /> 
     <Parameter Name="BuildReplicaTimeLimit" Value="20" /> 
     <Parameter Name="CreateInstanceTimeLimit" Value="20" /> 
     <Parameter Name="PlacementTimeLimit" Value="20" /> 
    </Section> 
    <Section Name="ReconfigurationAgent"> 
     <Parameter Name="ServiceApiHealthDuration" Value="20" /> 
     <Parameter Name="ServiceReconfigurationApiHealthDuration" Value="20" /> 
     <Parameter Name="LocalHealthReportingTimerInterval" Value="5" /> 
     <Parameter Name="IsDeactivationInfoEnabled" Value="true" /> 
     <Parameter Name="RAUpgradeProgressCheckInterval" Value="3" /> 
    </Section> 
    <Section Name="ClusterManager"> 
     <Parameter Name="TargetReplicaSetSize" Value="3" /> 
     <Parameter Name="MinReplicaSetSize" Value="3" /> 
     <Parameter Name="UpgradeStatusPollInterval" Value="5" /> 
     <Parameter Name="UpgradeHealthCheckInterval" Value="5" /> 
     <Parameter Name="FabricUpgradeHealthCheckInterval" Value="5" /> 
    </Section> 
    <Section Name="NamingService"> 
     <Parameter Name="TargetReplicaSetSize" Value="3" /> 
     <Parameter Name="MinReplicaSetSize" Value="3" /> 
    </Section> 
    <Section Name="Management"> 
     <Parameter Name="ImageStoreConnectionString" Value="file:C:\SfDevCluster\Data\ImageStoreShare" /> 
     <Parameter Name="ImageCachingEnabled" Value="false" /> 
     <Parameter Name="EnableDeploymentAtDataRoot" Value="true" /> 
    </Section> 
    <Section Name="Hosting"> 
     <Parameter Name="EndpointProviderEnabled" Value="true" /> 
     <Parameter Name="RunAsPolicyEnabled" Value="true" /> 
     <Parameter Name="DeactivationScanInterval" Value="60" /> 
     <Parameter Name="DeactivationGraceInterval" Value="10" /> 
     <Parameter Name="EnableProcessDebugging" Value="true" /> 
     <Parameter Name="ServiceTypeRegistrationTimeout" Value="20" /> 
     <Parameter Name="CacheCleanupScanInterval" Value="300" /> 
    </Section> 
    <Section Name="HttpGateway"> 
     <Parameter Name="IsEnabled" Value="true" /> 
    </Section> 
    <Section Name="PlacementAndLoadBalancing"> 
     <Parameter Name="MinLoadBalancingInterval" Value="300" /> 
    </Section> 
    <Section Name="Federation"> 
     <Parameter Name="NodeIdGeneratorVersion" Value="V4" /> 
     <Parameter Name="UnresponsiveDuration" Value="0" /> 
    </Section> 
    <Section Name="ApplicationGateway/Http"> 
     <Parameter Name="IsEnabled" Value="true" /> 
    </Section> 
    <Section Name="FaultAnalysisService"> 
     <Parameter Name="TargetReplicaSetSize" Value="3" /> 
     <Parameter Name="MinReplicaSetSize" Value="3" /> 
    </Section> 
    <Section Name="Trace/Etw"> 
     <Parameter Name="Level" Value="4" /> 
    </Section> 
    <Section Name="Diagnostics"> 
     <Parameter Name="ProducerInstances" Value="ServiceFabricEtlFile, ServiceFabricPerfCtrFolder" /> 
     <Parameter Name="MaxDiskQuotaInMB" Value="10240" /> 
    </Section> 
    <Section Name="ServiceFabricEtlFile"> 
     <Parameter Name="ProducerType" Value="EtlFileProducer" /> 
     <Parameter Name="IsEnabled" Value="true" /> 
     <Parameter Name="EtlReadIntervalInMinutes" Value=" 5" /> 
     <Parameter Name="DataDeletionAgeInDays" Value="3" /> 
    </Section> 
    <Section Name="ServiceFabricPerfCtrFolder"> 
     <Parameter Name="ProducerType" Value="FolderProducer" /> 
     <Parameter Name="IsEnabled" Value="true" /> 
     <Parameter Name="FolderType" Value="ServiceFabricPerformanceCounters" /> 
     <Parameter Name="DataDeletionAgeInDays" Value="3" /> 
    </Section> 
    <Section Name="TransactionalReplicator"> 
     <Parameter Name="CheckpointThresholdInMB" Value="64" /> 
    </Section> 
    </FabricSettings> 
</ClusterManifest> 
+1

Я думаю, проблема в 'IPAddressOrFQDN =" localhost "'. Попробуйте изменить его на IP-адрес удаленного компьютера или лучше на полное доменное имя. – cassandrad

+0

@cassandrad Вы правы. Я отправлю все шаги, которые мне нужно предпринять, чтобы все это работало с удаленными подключениями, так как были некоторые тонкие другие проблемы, но это было самое главное, как ни странно. Пожалуйста, разместите это как ответ, и я дам его вам в качестве принятого ответа. Спасибо за вашу помощь. – Alexandru

+0

Спасибо, вы можете отметить свой собственный ответ, как принято, потому что он лучше моего. – cassandrad

ответ

4

Почему это не работает?

Он не работает, потому что вы установили IP-адрес своих узлов как localhost, что делает их неоткрываемыми. Он будет работать для локального кластера отладки, но для локальных и кластеров Azure вам необходимо указать допустимый и доступный IP-адрес или квалифицированное имя.

Кроме того, я не уверен на 100% прямо сейчас, но могу предложить указать полное доменное имя вместо IP-адреса, если вы хотите, чтобы ваш кластер был доступен по URI, а не по IP. Я помню, что у меня были проблемы с этим, но до сих пор неясно, что помогло - FQDN или что-то еще.

3

Были несколько вопросов, но самый большой, как уже упоминалось @cassandrad, в том, что развертывание по умолчанию связывается с TCP доменным локального хоста (IPAddressOrFQDN="localhost") а не IP-адрес устройства, поэтому он позволяет только локальные подключения по умолчанию.

Вот полные шаги для фиксации моего вопроса:

  • Я первый побежал netstat -a | FindStr "19000" в командной строке, чтобы проверить, какие переплеты были активны, для того, чтобы утверждать, что @cassandrad сказал.
  • Чтение this guide, я решил скачать Service Fabric standalone package for Windows Server (отлично работает за пределами Windows Server, на Windows 8.1 x64, кстати).
  • Я скопировал, а затем модифицировал ClusterConfig.Unsecure.DevCluster.json, в разделе nodes раздел I сменил все узлы iPAddress будет 192.168.1.102. Я вызвал новый файл ClusterConfig.Unsecure.CustomDevCluster.json.
  • Я бежал CreateServiceFabricCluster.ps1. Он спросил меня, какую конфигурацию JSON использовать, поэтому я дал ей ClusterConfig.Unsecure.DevCluster.json.
  • Впервые это произошло из-за ошибки, вызванной Newtonsoft.JSON версии 6.0.0.0, как видно из следов, что было довольно раздражающей, запутанной ошибкой. Ошибка состояла в том, что у меня не было .NET Framework 4.6.2, поэтому я downloaded и установил ее.
  • Во второй раз это не удалось, так как был установлен Microsoft Azure Service Fabric MSI. Эта ошибка возникла из-за того, что ранее я установил MicrosoftAzure-ServiceFabric-CoreSDK.exe. Я пошел в «Программы и функции» и удалил Microsoft Azure Service Fabric (я оставил установленный Microsoft Azure Service Fabric SDK).
  • Я запустил сценарий в последний раз, скрестив пальцы, и он наконец сработал.
  • Это незащищенный кластер, поэтому я смог просто подключиться к нему, используя Connect-ServiceFabricCluster "192.168.1.102:19000". Если вы хотите включить другие механизмы аутентификации, измените и используйте некоторые из других конфигураций образцов .json.
+0

Как вы выбрали ip "192.168.1.102"? Я хочу подключиться к моему кластеру с удаленного компьютера через Интернет. Как объяснено [здесь] (https://stackoverflow.com/questions/40192846/cant-publish-to-service-fabric-local-cluster-on-another-machine?rq=1), IP должен быть установлен на внешний ip, который я посмотрел на «whatismyip.com». Но при создании кластера я получаю сообщение об ошибке «Машина «94 .xxx.xxx.xx» недоступна на порту 445. » Открываются все порты на локальном компьютере. –