暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Orchestrator:04 高可用方式部署

万能修实验室 2021-07-14
3333


教师节刚过,各种段子层出不穷。比如这个每年必发的梗:





然而就在刚刚,优秀学员张大妈家疑似发生了类似事件(难道是因为中秋发了个mao导致?)


俗话说HA做的好,老公回家早。今天主要就研究下Orchestrator的几种高可用方式。




Orchestrator支持以下几种方式部署:


1 无高可用:

最简单的方式,适合测试、开发环境。后端数据库可用MySQL或者sqlite


2 半高可用:

后端基于mysql主从复制的master或负载均衡,自身数据库不具备高可用。


3 高可用方式:

这里又分为两种架构:

  • 后端共享数据库方式(Shared backend):多Orch节点使用同一后端数据库,如Galera/XtraDB Cluster/InnoDB Cluster/NDB Cluster。在数据库层面通过分布式架构共享数据。

  • 基于raft协议方式(orchestrator/raft):多orch节点都有各自的后端数据库,节点间通过raft算法来进行投票和同步。


下面就这几种方式展开话题



半半子小姐姐镇个楼




1 无高可用


  • 单节点,单后端DB。

  • 后端DB可部署在本机或者其他机器。

  • 这样做成本很低,最少用1台服务器就可以部署。


  • 比较适合测试环境



2 半高可用


  • 多个Orch节点使用一套后台数据库。

  • 后台数据库可以是主从复制,也可以是前面有负载均衡的复制。

  • 由于只依赖mysql原生的复制,搭建简单又具备一定的高可用(orch多节点),但是Orch自身的后端数据库不具备高可用能力,即使前面加上HAProxy之类做负载均衡仍有脑裂的风险,因此不建议生产使用



3 共享后端数据库的高可用


  • 在架构2的基础上,改用共享的后端数据库,如Galera/PXC/InnoDB Cluster/NDB Cluster。

  • 由于数据库集群本身实现了高可用,可避免脑裂。但数据库集群的维护有一定的技术门槛

  • Orch节点访问数据库可以只单点写入,也可以多点写入。

  • Orch应用之间无通信。

  • 底层数据库集群有大量数据交互,对网络要求较高。尤其跨机房、跨地区场景。



4 基于raft协议方式


  • Orch节点之间通过raft协议相互通信来实现高可用。

  • 每个Orch节点都有各自独立的后端数据库。

  • Orch程序和后端数据库可以部署在一起,也可以分开。

  • 数据库节点之间无通信。

  • 只有一个leader节点来探测拓扑和发现实例,其他节点只监控和投票。

  • 节点数量要奇数,建议使用3或者5节点。

  • 由于Orch节点之间数据交互较少,适合跨机房、地区的大规模部署。



配置Raft高可用相关参数:

https://github.com/github/orchestrator/blob/master/docs/configuration-raft.md

配置方法:

    "RaftEnabled": true,
    "BackendDB": "mysql",
    "RaftBind": "10.7.91.63",
    "RaftDataDir": "/usr/local/orchestrator",
    "DefaultRaftPort": 10008,
    "RaftNodes": [
    "10.7.91.63",
    "10.7.91.168",
    "10.7.91.169"
    ],
    • RaftBind是本节点Orch IP

    • RaftNodes是所有Orch节点IP列表

    • 默认端口10008,所有的节点要使用相同端口


    Home -> Status 中可以看到当前的节点角色,只有1个leader


    脑力风暴:共享后端数据库的HA

    参考某国外的大神的架构,前面用ProxySQL做读写分离,再花点小钱使用RDS厂商的黑盒技术来保障后端数据库高可用。




    文章转载自万能修实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论