首先,我要说的是,我不是服务器方面的专家。我一直在自学,而且我只知道服务器管理的入门级基础知识。
我正在尝试整合我的所有单实例 VPS,并将它们放入一个带有托管容器的 VPS 中,这些容器拥有自己的特权根访问权限(在容器中)。
我目前拥有的每个 VPS 都运行一个简单的堆栈来为 WordPress 提供服务。
- Ubuntu 18.04 LTS
- PHP/7.2
- MySQL
- Caddy HTTPS/2 服务器引擎
我目前的 VPS 价格为每月 5 美元,附带:
- 01GB 内存
- 25GB SSD(我只需要 10GB 以下)
- 01v核心
- 01TB 带宽(我不会动这个,我的网站页面很小,页面密集且流量低,大小不到 0.8 mb)
对我来说,这些资源很棒。但运行近 10 个网站每月的费用约为 55 美元(Vultr)。相反,我想尝试提供以下规格/价格的服务(SSD 节点):
- 16GB 内存
- 80GB 固态硬盘
- 04 vCore
- 8.0TB 带宽
- 40GB 输入/输出
这项服务的价格不尽相同,但如果您预付费的话,通常每月不到 15 美元,我不介意这样做。
我将使用这个单个 VPS 运行 Ubuntu 18.04,然后使用 LXD/LXC 来配置可单独容纳每个网站的容器。
然后,每个容器就可以限制为我想要的任何资源(在单个 VPS 限制内)。这将节省我的钱,让我有空间在未来创建更多的网站/项目,并创建一个更易于管理的维护界面。
这是我想要完成的任务的示例概述。
主机 ----> Ubuntu 18.04
[container01] ----> WordPress 站点 A
- [container02] ----> WordPress 站点 B
- [container03] ----> WordPress 站点 C
- [container04] ----> WordPress 站点 D
- 以及
- [干净堆栈安装的快照,可轻松重置/重新部署]
我已经在本地测试环境以及测试实时环境(在 Vultr 上)尝试了此设置,但似乎无法找到解决我的问题的方法。
尝试此设置时我遇到的唯一问题是,我无法让新创建的容器通过主 IP 地址,以便能够公开访问每个容器。我创建了每个容器,并更改了默认网桥以使用“macvlan”,这实际上为它们分配了“物理”地址。但是,这些“物理”地址仅供内部使用,因为它们是基于“10”的 IP 地址,无法公开访问。
这是我迷失的地方,并且我无法在网上找到解决方案。
有人能针对这种特殊情况给我一些建议吗?还是说我必须放弃这个想法,因为它根本行不通?
另外,附注:我不想使用 Docker、Kuburnetes 或 Nginx 多网站管理器来运行服务器。我更喜欢容器化,这样我就可以随着学习的深入单独测试新项目或网站。
谢谢你,
答案1
您需要专用一个 LXD 容器来将这些 HTTP(甚至 HTTPS)请求代理到具有 WordPress 安装的相应容器。
首先,创建一个代理人容器并让您的主机将到端口 80(web)的连接转发到该端口 80代理人容器。您可以使用以下方式进行转发iptables或者,如果你使用 LXD 3.0,则使用 LXD代理人设备。
第二,在这个代理人容器安装合适的http代理。例如HAProxy(看https://www.digitalocean.com/community/tutorials/how-to-host-multiple-web-sites-with-nginx-and-haproxy-using-lxd-on-ubuntu-16-04),nginx 作为反向代理, 甚至球童(看https://gist.github.com/turtlemonvh/1e6dc4621202b2c1a8c4)。
第三,每个 WordPress 网站都需要一个数据库。在每个 WordPress 容器中安装 MySQL/Mariadb 就有点大材小用了。您可以考虑创建一个D b容器与数据库,然后在数据库中为每个网站创建不同的账户。