![无需端口转发,即可通过 WAN 同步 Web 服务器](https://linux22.com/image/752101/%E6%97%A0%E9%9C%80%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%EF%BC%8C%E5%8D%B3%E5%8F%AF%E9%80%9A%E8%BF%87%20WAN%20%E5%90%8C%E6%AD%A5%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我们在多个位置(现在有 2 个,很快将增加到 3 个)安装了 ProxMox 服务器,这些服务器上的容器(ubuntu 服务器)设置如下(但将有更多的 Web 服务器):
地点 1:
- GitLab 服务器
- 数据库服务器
- 代理服务器
- web-服务器-1
- web-服务器-2
地点 2:
- 数据库服务器
- 代理服务器
- web-服务器-1
- web-服务器-2
我们使用 MariaDB 上的 galera 将数据库服务器设置为多主服务器,因此它们不是问题。部署时,我们希望部署到位置 1(GitLab 服务器所在的位置),并将其同步到同一 Web 服务器上的位置 2(以及将来的任何其他位置)。我们将使用 Symfony 进行内部解决方案开发,并可能使用其他服务(如用于论坛的 flarum)。
有一个反向代理服务器,它将正确的 subdomain.domain 发送到正确的 LAN IP,并将所有流量从 http 定向到 https,以及处理 letsencrypt 证书。我还创建了一个 ddns 解决方案,它连接到在线 cpanel 服务器,以更新动态 dns 位置的 dns,并在发生故障转移时使用(只有在站点 1 发生中断的情况下才会使用站点 1 之后的任何内容)
最初我们考虑使用 Resilio Sync 在它们之间同步项目(/var/www/html/)目录,但这样会失去权限,而且我们需要确保没有不断更改的文件导致同步(使用 symfony 我们可以将它们移出同步文件夹,因为它们通常不需要在更新中同步)。
如果只有一台服务器,我们会考虑使用 rsync 而不是 ssh(如果该端口未在其他地方使用),但我们不想每次添加新的 Web 服务器时都必须设置复杂的端口转发。Resilio 不需要端口转发,因此除了权限问题外,它都很棒。我猜我们无法通过 https 做到这一点(因为网站正在该端口上运行)。
有什么建议么?