1

目前,我有一个套接字服务器,它监听两个端口(例如 7777 和 7778)上的传入连接并回复它们。数据存储在 RDS 环境中,该环境是访问相同数据的更大 Elastic Beanstalk 环境的一部分。套接字服务器被实现为 Windows 服务。到目前为止,一切都很好。有用。

但是,我问自己,是否可以在同一个(或可能另一个)Elastic Beanstalk 环境中使用套接字服务器,但到目前为止,我还没有找到任何方法来做到这一点。

我的目标是

  1. 为了有一个更简单的部署过程,就像在生产环境中一样,我需要套接字服务器位于负载均衡器后面,并且不想在每个实例上部署 Windows 服务。
  2. 只有一个环境可以部署,这样我就不必每次在 DAL 中进行更改时都进行部署(手动或自动)。

套接字服务器不需要作为Windows 服务来实现,它只是现在。

一切都是用 C# 实现的。任何帮助表示赞赏。

4

1 回答 1

0

我想,我得到了这个覆盖。但是,我无法独立部署没有错误的 Windows 服务,而只能作为 Web 应用程序的一部分。不过,在我的场景中这不是一个真正的问题。

对于这种情况,我有两个项目;Web 应用程序和 Windows 服务应用程序。

  1. 在构建服务器上,我创建了一个 Windows 服务可执行文件的 ZIP 文件(使用zip.exe
  2. 在构建服务器上,我将 ZIP 文件上传到 S3 存储桶(使用s3.exe
  3. web 应用程序的项目中,我创建了一个.ebextensions目录
  4. .ebextensions目录中,我有一个whatever.config文件
    1. 从 S3 获取 ZIP 文件并将其解压缩到我首选目录中的 C-Drive
    2. InstallUtil.exe调用一个批处理文件(ZIP 文件的一部分),使用实用程序(.Net 框架的一部分)卸载并重新安装 Windows 服务
  5. 在我的夜间构建(完整解决方案)中,使用awsdeploy.exe.
    • 因此,我指向我的Web 应用程序目录中的一个configuration.txt文件。builds
    • 您可以使用 Visual Studio 中的手动 Elastic Beanstalk 部署生成此类构建文件;但一段时间后它们很容易。

现在发生的情况是,在我的 Nightly Builds 中,Web 应用程序被部署到 Elastic Beanstalk 环境中;部署将识别出存在配置,并将执行上面第 4 步中提到的步骤。由于 Nightly Build 在此之前创建并上传了 Windows 服务的 ZIP 文件,我确信我会安装最新的 Windows 服务。

我现在唯一的问题是,由于臭名昭著的标记为删除错误,Windows 服务并不总是自行安装。但那是另一回事了。

我希望这对某人有所帮助。如果有人有简化这一点的建议,欢迎他添加评论。

于 2013-10-01T12:44:29.123 回答