无法发布到另一台机器上的服务结构本地集群
Posted
技术标签:
【中文标题】无法发布到另一台机器上的服务结构本地集群【英文标题】:Cant publish to service fabric local cluster on another machine 【发布时间】:2017-03-04 17:18:42 【问题描述】:我今天在我的开发机器上安装了一个本地集群来玩。但是,当上传一些来宾 exe 时,结构会崩溃。我什至测试了加载简单的旧notepad.exe,但同样的崩溃。 作为进一步的测试,我将 notepad.exe 推送到公共聚会集群,它运行得很好。 This post 给出了类似的错误,根据 cmets,我怀疑这是 Windows 7 的问题。
所以下一个想法是在新的 Windows 服务器 VM 上安装一个本地集群,并尝试发布到该集群。但我在那里也碰到了另一面墙。我可以连接到“远程”集群的 Web 管理界面,并且可以看到所有 Fabric 进程在端口 19000 上运行和侦听,但 VS 2015 在发布期间拒绝连接。 我禁用了防火墙,认为这是问题所在,并“ping”了各种端口以进行验证。有些响应(例如 19080)但不响应 19000。
想法?
更新:在远程机器上运行 powershell connect 命令有效。
Update2:我已经将“本地集群”安装到其他 3 台机器上,并且都做同样的事情
更新 3: 使用 netsh 命令在远程机器上创建了一个端口转发,以从 18090 路由到 19000。现在我可以通过 powershell 从我的本地机器连接到远程机器的本地集群。 (我还注意到远程机器上的用户名/密码需要相同,如果它们不在同一个域中) Visual Studio 现在也可以连接了,但是 powershell 脚本中途出错,这里是输出。
*>正在将应用程序复制到图像存储... 复制应用程序包成功 正在注册应用程序类型... Register-ServiceFabricApplicationType :应用程序清单文件 在商店中找不到“FabricApp2Type\ApplicationManifest.xml”。 在 C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricS DK\Publish-NewServiceFabricApplication.ps1:244 char:9 + 注册-ServiceFabricApplicationType -ApplicationPathInImageStore $应用程序... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : ResourceUnavailable: (Microsoft.Servi...usterCon nection:ClusterConnection) [Register-ServiceFabricApplicationType], FileNo tFoundException + FullyQualifiedErrorId : RegisterApplicationTypeErrorId,Microsoft.Service Fabric.Powershell.RegisterApplicationType
已完成执行脚本“Deploy-FabricApplication.ps1”。*
我现在求助于在远程机器上安装一个本地的 Visual Studio 副本并使用它来运行我的测试,因为我的 Windows 7 机器不会。
虽然我现在的努力是解决 Win 7 错误,但我可以看到在其他机器上使用“本地集群”进行开发和调试的好处。比必须在 Azure 中建立一个开发集群要容易得多,并且比推送到公共派对集群更安全。我希望 SF 团队中的某个人已经在致力于允许 VS 远程部署和调试。
如果有人对到目前为止如何解决问题有任何建议,请发布。我也很乐意测试想法。
【问题讨论】:
您能否分享您添加到 VS2015 的自定义发布配置文件 我所做的只是将ConnectionEndpoint="myserver:19000"
添加到现有的发布配置文件中。如果我将 myserver 更改为 localhost,那么在本地发布就可以了。
【参考方案1】:
我在开发测试实验室中托管了几个小型单机开发集群,它们运行良好。
我认为主要区别在于我使用的是 Service Fabric Standalone 安装程序,而不是 SDK。我试图让 SDK 版本正常工作,结果与您发现的相同。
这些是我在内部分发的说明,用于在开发测试实验室中创建单机“微集群”。
-
从 Azure 站点下载 Service Fabric 独立包
并解压
https://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-creation-for-windows-server/
编辑文件 ClusterConfig.Unsecure.DevCluster
使用本地机器的 IP 地址或主机名更新 3 个 IP 地址条目,例如“iPAddress”:“10.0.0.5”
使用 PowerShell 命令创建集群(使用管理员)。\CreateServiceFabricCluster.ps1 -ClusterConfigFilePath
.\ClusterConfig.Unsecure.DevCluster.json -AcceptEULA
通过打开浏览器验证集群创建完成 - http://hostname:19080
在本地机器上打开发布端口(如果使用普通 ARM 机器而不是开发测试,则打开端点防火墙)
【讨论】:
如果我将 ip 设置为我从 whatismyip.com 获得的外部 IP 地址,则集群创建失败并显示消息“Machine '94.xxx.xxx.xx' is not reachable on port 445”。该端口已在 windows 防火墙中打开。【参考方案2】:使用SDK创建本地集群仅供一盒开发,不能远程发布应用。要创建远程本地集群,请使用独立包(由 Chuck Duffy 建议)
【讨论】:
【参考方案3】:我们在 Windows 7 和来宾可执行文件中遇到了同样的问题。在 Azure 或 Windows 10 上运行正常。我们最终将来宾可执行文件包装在无状态服务中,这使我们能够在 Windows 7 上本地运行和调试。这最终成为一个更好的解决方案,因为在当时,来宾可执行文件与无状态服务相比存在一些限制。
【讨论】:
以上是关于无法发布到另一台机器上的服务结构本地集群的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法告诉 mongod 登录到另一台服务器上的系统日志?
通过网络将数据从主机上的一个线程发送到另一台机器上运行的某种服务线程
如何从一台服务器上移植Serv-U(版本15)的设置到另一台机器?