![对于这种用例我应该使用 proxmox 吗?](https://linux22.com/image/789037/%E5%AF%B9%E4%BA%8E%E8%BF%99%E7%A7%8D%E7%94%A8%E4%BE%8B%E6%88%91%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%20proxmox%20%E5%90%97%EF%BC%9F.png)
所以基本上我需要托管一个前端和后端的 Web 应用程序,所有 PHP,以及一个具有 HA 的 MySQL 数据库。
不同的数据中心将会有 2 台服务器。
我在想我们是否应该使用带有 2 个 VM 的 Proxmox,一个用于 Web 应用程序,另一个用于数据库。
或者我应该只安装 debian 并将所有内容放在一起并完成它。
Web 服务器的 HA 由另一台服务器上的 HaProxy 实例处理。数据库 HA 将由 HA 中的 ProxySQL 处理(因此,MysQL 服务器和 ProxySQL 基本上位于同一台服务器中),但我的应用程序需要知道它们应该连接到哪个 ProxySQL。
如果我使用 Proxmox,使用 Keepalived 来做到这一点就很简单了,因为一切都将使用内部 IP,而且没问题。
但是如果我使用 debian,它将是公共 ip,并且我使用的托管(OVH)有一个允许这种称为浮动 IP 的东西,但切换大约需要 5 分钟,所以网站会在 5 分钟内瘫痪。
使用 proxmox 还有其他优势,我可以启动服务器进行升级,然后只需切换等操作,而不会破坏任何东西。使用 debian 则直接意味着重新格式化服务器等。
当然,使用 Proxmox 会对性能造成轻微的影响,但我认为这可以忽略不计。
两种解决方案都有优点和缺点,我不太确定该朝哪个方向发展。
那么虚拟化还是裸机?
服务器是:
CPU: Xeon-E 2288G - 8c/16t
Memory: 32GB
Disks: 2× 960GB SSD NVMe - RAID 1
有什么想法吗?谢谢!
答案1
您在这里使用 Proxmox 的理由似乎是您可以使用 keepalived(尽管我不确定具体是为了什么)。这似乎有点大材小用。
正如您所暗示的,在这个背景下其他原因可能也是有意义的。
您还提到了 OVH 浮动 IP。
这就是 XY 问题。
您主要关心的似乎是确保(至少其中一项)服务可通过虚拟 IP 获得。
如果没有大量巧妙的路由配置,虚拟 IP 就无法跨数据中心工作。复杂性是坏事。
虚拟 IP 作为 HA 机制很糟糕。你依赖于你的系统做某物当它处于故障状态时。裂脑问题很复杂。很难测试/监控。服务总是会中断。
您不需要虚拟 IP - 如果 ProxySQL(或 haproxy 或类似产品)在每个需要连接到数据库的节点上可用/配置,并且知道所有数据库节点,则您的数据库服务具有 HA。对于 HTTP 服务,HA 的关键部分是跨多个主机的循环 DNS 地址。注意:互联网上仍然有很多关于 rrDNS 和 HTTP 的错误信息。它处理负载平衡器无法处理的情况,并处理负载平衡器处理的大多数用例。
在这样的环境中使用虚拟化的最大成本是 DBMS 磁盘 I/O。如果 mysql 性能对整体服务性能有重大影响,并且您的预算允许,那么您可以通过将专用磁盘控制器和存储传递到 DBMS VM 来消除此问题。