【问题标题】:Deploying a Spring web application on a vSphere environment在 vSphere 环境中部署 Spring Web 应用程序
【发布时间】:2021-09-18 14:55:45
【问题描述】:

我必须在一家公司的内部服务器上部署一个 Spring 应用程序。服务器在 VMWare vsphere 上运行多个虚拟机,我想知道什么是最好的方法以及什么可以用来部署我的 Java Spring 应用程序。

我的两个想法是:

  • 使用其中一个 Windows Server 实例并在每次启动实例时将其作为服务运行。 (可能是最简单但不是最好的)。
  • 找到一种方法以某种方式将 Java 运行时部署为虚拟机,以便让我的 Spring boot 实例在其中运行。

不幸的是,我的应用程序,就其目的和工作方式而言,需要部署在局域网上(我的应用程序从 LAN IoT 客户端轮询数据,并且它需要在我们的网络内部),因此我不能使用任何AWS 或 Google 等在线服务。

我想知道我的选项 2 是否是一个可行的选项,以及可以使用什么来实现它(就所需的软件而言,以及是否值得付出努力)。不幸的是,我不知道从哪里开始。

【问题讨论】:

    标签: java spring spring-boot vmware vsphere


    【解决方案1】:

    您不能简单地在虚拟机中运行 JVM。 VM 需要先安装操作系统,然后将 JVM 作为其内部的进程运行。就软件堆栈要求而言,本质上在 VM 上运行 Spring Boot 应用程序与在物理机上运行它是相同的。您不必为操作系统使用 Windows,但这取决于您的偏好和公司的政策。最小的 Linux 发行版可以显着减少 VM 所需的资源量,因此 spring-boot 应用程序是主要的资源消耗。

    使用现有虚拟机运行新的不相关服务并不是一个好习惯(我假设您已经在那里运行其他服务器)。虚拟机的主要价值在于它们可以相互隔离,因此不会影响彼此的稳定性,同时仍然受益于位于同一物理硬件上。它们可以在物理主机之间迁移在运行时 (vMotion/DRS) 并在发生故障时自动重新启动 (vSphere HA)。

    【讨论】:

    • 非常感谢您的回答!实际上,我的疑问是,是否已经存在不需要操作系统“下层”并且可以直接在 vmware 上运行的现有环境(例如 Docker 环境),但是如果我理解正确,您只是确认这是不可能的。该请求来自于查看 AWS 等 Web 服务,在弹性 beanstalk 上,您可以创建分配了某些资源的 Java 环境的可运行实例,并且我错误地认为它没有严格运行在 Windows 或 Linux 操作系统上
    • 实际上 Project Pacific 或 vSphere with Tanzu / Kubernetes 7 实际上可以在虚拟机管理程序上支持原生 kubernetes。对于以前的版本,您始终可以使用虚拟机作为 k8s 节点在底层 vSphere 集群上设置 kubernetes 集群。有很多解决方案可以自动执行此操作,例如Pivotal 容器/K8s 服务。
    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2022-06-14
    • 1970-01-01
    • 2018-05-13
    • 2012-09-17
    • 2016-10-11
    相关资源
    最近更新 更多