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 / 问题 / 997728
Accepted
laimison
laimison
Asked: 2020-01-06 16:02:17 +0800 CST2020-01-06 16:02:17 +0800 CST 2020-01-06 16:02:17 +0800 CST

私有云中的 Kubernetes MySQL 集群

  • 772

我对由 1 个主节点和 2 个辅助节点组成的 MySQL 集群感兴趣。

通常在公共云中,我们

  • 使用外部存储

  • 使用 RDS 等服务,以便在该服务之后处理复制和故障转移

  • 您可以在不同的节点上重新创建失败的 pod,因为存储和数据库未在您的任何 k8s 节点上运行

适用于私有云但不适用于 Kubernetes 的解决方案:

  • 通过使用本地存储

  • 通过使用 mysqlfailover 实用程序,它可以指定一个新的主节点

  • 通过更改“mysql-0”(主)的 DNS 记录并指示应用程序刷新 DNS,以便它可以在故障转移事件中看到新的主

探索 Kubernetes 解决方案:

  • 哪一个使用本地存储或 NFS?(如果是 NFS,你将如何在不同服务器之间建立集群?)

  • 通过使用https://github.com/oracle/mysql-operator、Percona、类似的解决方案甚至是相同的 mysqlfailover - 您更喜欢哪一个以及它如何处理故障转移情况?最好是开源选项。

如果我尝试合并当前工作的 mysqlfailover 解决方案并迁移到 Kubernetes,我可能需要设置 Node Affinity,以便 pod 正确连接其本地存储。

这个mysqlfailover机制也应该改进(起点在这里https://medium.com/@zzdjk6/step-by-step-setup-gtid-based-mysql-replica-and-automatic-failover-with-mysqlfailover-using -docker-489489d2922)因为它可以例如指定一个新的主mysql-1,而原来的(mysql-0)已关闭。根据我的理解,这可能不是最佳选择,因为在通常的架构中,我们总是希望 mysql-0 作为 StatefulSet 中的主节点,而 mysqlfailover 则完全相反。

那么,如果不解决现有问题,您会选择哪个选项?你会采取哪些步骤?你会使用哪些 MySQL 和 Kubernetes 组件?

非常感谢

mysql
  • 1 1 个回答
  • 783 Views

1 个回答

  • Voted
  1. Best Answer
    laimison
    2020-08-29T06:11:49+08:002020-08-29T06:11:49+08:00

    我最终得到的解决方案是 Kubernetes 上的 Percona XtraDB Cluster。它有一个 Kubernetes 操作员来自动管理故障转移场景。

    你的应用程序不应该知道任何关于集群的事情,因为它在kubernetes-service-hostname:3306. 所以应用程序调用这个地址,在它后面有 3 个 SQLProxy/HAProxy 容器(每个服务器)。然后查询被路由到三个 MySQL 容器之一。

    当服务器关闭时,失败的 SQLProxy/HAProxy 和 MySQL 容器将从 Kubernetes 中删除,因此kubernetes-service-hostname包含两个而不是三个成员。

    当服务器重新上线时,将创建容器以再次拥有完整的集群。

    还有 Percona 操作员容器,它可以自动帮助管理 pod 并执行其他操作,以便集群完全运行。

    在存储方面,它可以只是hostPath本地目录,从存储角度来看,它显示出简单的迹象。您还可以使用PersistentVolumeClaim它背后的任何类型的存储类或外部存储,例如 NFS。

    它实际上是多主机设置。

    更多细节:

    https://www.percona.com/doc/kubernetes-operator-for-pxc/kubernetes.html

    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

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