复制 Linux Web 服务器

gij*_*007 5 mysql ubuntu mysql-replication replication high-availability

我正计划复制 Web 服务器以实现高可用性目的。该服务器在 Hyper-V 中作为 Ubuntu 15.04 虚拟机运行,并安装了 MariaDB 10.0、Apache 2.4 和 PHP-FPM 5.6。

第二个虚拟机将作为该虚拟机的直接副本启动,但位于美国。第一个虚拟机位于欧洲。(延迟约为 80-120 毫秒)

我想让服务器保持同步,以便它们都可以向我的客户端提供相同的内容,并且客户端将使用最近的服务器(为此我将使用 Route 53)

服务器之间的数据交换是安全的,这很重要,以保护数据库中的联系方式和其他信息,并防止更改 /var/www 目录中的文件。

我已经考虑为此使用以下选项:

  • 开放VPN
  • SSH隧道
  • SSL(TLS)

    1. 我的问题是哪种方法最可靠、最快(延迟、吞吐量)和最安全?易于维护也很好;)

我已经考虑使用 SSH 进行数据库和文件复制。但是我不确定文件复制部分使用哪个应用程序。

  1. 我应该如何设置文件的复制以及我应该使用哪个应用程序?

SSL 可用于数据库复制,但它需要生成需要时不时更换的证书,这可能会花钱。

我的最后一个选择是使用 openvpn,但我不确定是否可以将其设置为附加网络,而不是通过它路由我的所有流量。这个方法好像也需要生成证书文件。。

  1. 我希望能够在稍后向复制过程添加额外的服务器,可能是 Windows 服务器。

小智 5

您不需要为自己的私人通信付费的 TLS 证书。您可以设置自己的 CA(具有非常持久的证书,万一受到威胁,您只需扔掉整个 CA)并使您的服务器信任它,然后您就可以为不同的服务颁发任意数量的证书。仅当您无法可靠地使远程主机信任您的 CA 时才需要付费证书,例如您网站的访问者。

如果您只需要使用单个服务并且它支持 TLS(就像 MySQL 一样),那么请使用它并通过在防火墙级别仅允许来自服务器 IP 的连接来添加额外的安全层。

如果您需要多项服务,最好使用 VPN 解决方案。不要在 OpenVPN 上浪费时间,您的内核具有内置的 IPSec 支持,您可以使用它。此外,它在 Windows 上开箱即用,因此如果您曾经部署过此类服务器,则设置起来会很容易。

那是容易的部分。真正困难的部分是保持您的应用程序文件同步,如果您的应用程序只使用数据库,这很容易,但如果它是一个通用的 CMS,它很可能也会出于任何原因修改自己的文件(插件更新例如)或创建新的(用户上传的内容等),我不知道有什么可靠的方法可以让它们保持同步。想到的唯一解决方案是 NFS(并且只有一个服务器来托管文件,但这违反了您的 HA 要求)或 GlusterFS,这两种解决方案在这种延迟的情况下都会表现得很差。


小智 3

rsync是保持文件同步的好工具。我会将它与 SSH(和公钥)结合使用,如下所示:

rsync -az -e ssh --delete /var/www otherserver:/var/www
Run Code Online (Sandbox Code Playgroud)

对于多个服务器来说,多次使用rsync可能是最好的选择。另一种选择是pdcp -r,但这需要每次复制所有文件而不是进行增量传输。换句话说,它更适合少量数据和许多服务器。

如何最好地进行数据库复制很大程度上取决于您的应用程序的用途。MariaDB 文档和其他问题中有很多好的建议。