![跨多个 VM 部署 ASP.NET Core 组件的最佳实践](https://linux22.com/image/790981/%E8%B7%A8%E5%A4%9A%E4%B8%AA%20VM%20%E9%83%A8%E7%BD%B2%20ASP.NET%20Core%20%E7%BB%84%E4%BB%B6%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.png)
我正在做一个需要在云以及私有虚拟机客户提供了4台虚拟机,规定数据库放在一台虚拟机上,应用程序放在其他虚拟机上,某些服务放在特定的虚拟机上。
具体细节:单个 ASP.NET Core 项目:
我可以使用单个 ASP.NET Core Aspire 项目或者我是否需要不同的 APP HOSTS 来连接不同 VM 上的 Docker 容器?
部署建议:
在确保高效通信和可维护性的同时,在不同的虚拟机上部署系统的不同组件的最佳实践是什么?
Docker 容器化:
我是否应该考虑将服务和应用程序容器化,以便在不同的虚拟机之间简化部署?
数据库管理:
关于在单独的虚拟机上管理数据库同时保持与应用程序的顺畅交互,有什么建议吗?
如果我对任何概念有误,请随时纠正。我希望我的所有服务都部署在 Windows Server 上的 docker 上。
答案1
首先,远离 docker windows 容器,它们很麻烦。
您说您需要在私有网络和云中的几台虚拟机上部署 ASP.net 组件。我认为您首先需要查看您的架构。我需要前端吗?我需要后端吗?ASP.net 组件是否依赖于我们需要安装的服务器角色,例如 IIS。哪台服务器将拥有哪些角色和组件?
关于这个问题 部署建议:在确保高效通信和可维护性的同时,在不同的虚拟机上部署系统的不同组件的最佳实践是什么?
我认为最佳做法是:
- 使用命名约定,并尽可能以相同的方式在服务器上部署所有内容(例如,将日志文件放在单独的驱动器上,并且在每个服务器上都相同) - 使用最小权限,授予服务帐户等,仅需要权限,并且尽可能少。记录
- 仅在需要时打开网络端口,并尽可能保持最小。记录
- 与客户一起进行尺寸确定并检查服务器是否有足够的资源。
- 强化服务器,例如使用 cis 基准来尽可能降低攻击面。
- 安装所有最新更新和补丁。