AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 407812
Accepted
jinanwow
jinanwow
Asked: 2012-07-15 14:50:23 +0800 CST2012-07-15 14:50:23 +0800 CST 2012-07-15 14:50:23 +0800 CST

独立数据中心的冗余 Linux 服务器

  • 772

我有 2 个 CentOS linux 服务器,分别位于该国家/地区每个站点的不同数据中心。这些 linux 机器在带有 MySQL 后端的 Apache 上运行一个小型网站。目前他们之间没有 VPN 连接,他们唯一可以通信的方式是通过公共 IP 空间。

我的问题是,如果其中一个失败,另一个将接管(主/从关系),那么最好的方法是什么?我希望能够在不添加第三台的情况下使用我目前拥有的两台服务器来执行此操作。我猜我需要在两者之间创建一个 VPN,然后使用 DRDB for MySQL 之类的东西。

你会推荐什么?

vpn centos redhat apache-2.2 redundancy
  • 3 3 个回答
  • 969 Views

3 个回答

  • Voted
  1. Best Answer
    Shane Madden
    2012-07-15T15:12:02+08:002012-07-15T15:12:02+08:00

    MySQL 具有内置的复制功能——不需要 DRBD。看这里。

    此复制通过正常的 MySQL 协议在 TCP 端口 3306 上进行。本机协议支持 TLS 加密,但鉴于最近的漏洞,VPN 也可能不是一个坏主意。由你决定!

    从那里开始,您只需要使用 MySQL 的应用程序以某种方式了解这两个服务器,或者根据您的应用程序制定其他类型的故障转移机制 - 听起来您的 Web 应用程序的本地实例在每个位置,因此只需将每个位置指向其本地 MySQL 实例即可。

    但是要小心——如果你在两个方向上进行复制,你可能不希望同时写入两个 MySQL 服务器;可以对不同的服务器进行相互冲突的更改。

    • 5
  2. symcbean
    2012-07-15T15:47:58+08:002012-07-15T15:47:58+08:00

    DRDB 只真正用作故障转移解决方案。正如 Shane 所说,MySQL 复制是更明智的方法。虽然您可以将其作为主/从实现,但当您检测到中断时,您会遇到升级从属的复杂情况。更好的解决方案是使用主-主复制。

    但是这样做的有效性是有限的——复制写入是由单个线程实现的——所以“从”必须比主更努力地工作才能应用它们。不可避免地会有延迟——尽管通常延迟很小,不会成为问题。

    尽管 mysql 支持 SSL 加密,但它并没有提供大量用于调整访问控制的功能。设置 stud 或 stunnel 以在 SSL 中包装特定端口是微不足道的。并且复制连接保持打开状态,因此带宽开销非常低。或者甚至只是使用 iptables 将对 MySQL 端口的访问限制为远程 IP 地址。

    但是您仍然必须解决检测故障和隔离故障节点的问题。大概您正在跨 HTTP 服务器进行循环平衡 - 在这种情况下,客户端将倾向于在会话期间停留在同一台服务器上。Web 服务器将从本地 DBMS 实例获得最佳性能 - 因此应该只在检测到本地系统中断时尝试访问远程系统。不要担心尝试自动恢复 - 只要您可以编写脚本即可。

    请仔细阅读 MySQL 复制 - 如果您做了基础工作,那么写入冲突应该非常非常少见。

    • 2
  3. Nils
    2012-07-16T13:03:01+08:002012-07-16T13:03:01+08:00

    DRBD 的主要缺点是通信不会被加密。所以去 mySQL 复制。

    在您的设置中,我不会使用任何自动集群,因为我看不到避免裂脑情况的安全方法。

    但是您可以手动触发一个脚本

    • 将备用MySQL提升为Master
    • 放置用于联系您的服务的逻辑 IP
    • 在该 IP 上启动您的网络服务器

    另一方面,如果启动重新上线,您必须阻止启动 - 并且您需要一个回退策略。

    • 0

相关问题

  • 从多个位置保护远程服务器/工具访问的最佳方法是什么?

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 如何在 Windows Server PPTP VPN 中自动为客户端分配路由?

  • 为什么我的电脑休眠时 VPN 连接会中断?[关闭]

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve