tencent cloud

文档反馈

Master 节点高可用部署模式

最后更新时间:2022-05-26 15:46:29

    概述

    单个 master 的稳定性可能较低,在一些线上提供服务的场景,需要使用多 master 来保证容错率。GooseFSRuntime 提供以 3 master 的形式来提供容错,通过 Raft 协议来进行选举,raft 是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。

    下面将为您简单地介绍上述特性。

    前提条件

    在运行该示例之前,请参考 安装 文档完成安装,并检查 Fluid 各组件正常运行:

    $ kubectl get pod -n fluid-system
    goosefsruntime-controller-5b64fdbbb-84pc6   1/1     Running   0          8h
    csi-nodeplugin-fluid-fwgjh                  2/2     Running   0          8h
    csi-nodeplugin-fluid-ll8bq                  2/2     Running   0          8h
    csi-nodeplugin-fluid-dhz7d                  2/2     Running   0          8h
    dataset-controller-5b7848dbbb-n44dj         1/1     Running   0          8h
    

    通常来说,您会看到一个名为 dataset-controller 的 Pod、一个名为 goosefsruntime-controller 的 Pod 和多个名为 csi-nodeplugin 的 Pod 正在运行。其中,csi-nodeplugin 这些 Pod 的数量取决于您的 Kubernetes 集群中结点的数量。

    新建工作环境

    $ mkdir <any-path>/co-locality
    $ cd <any-path>/co-locality
    

    示例

    查看全部结点

    $ kubectl get nodes
    NAME                       STATUS   ROLES    AGE     VERSION
    192.168.1.145   Ready    <none>   7d14h   v1.18.4-tke.13
    192.168.1.146   Ready    <none>   7d14h   v1.18.4-tke.13
    192.168.1.147   Ready    <none>   7d14h   v1.18.4-tke.13
    

    检查待创建的 Dataset 资源对象

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
     name: hbase
    spec:
     mounts:
       - mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/
         name: hbase
    
    说明:

    为了方便用户进行测试,mountPoint 这里使用的是 Web UFS,使用 COS 作为 UFS 可参见 使用 GooseFS 挂载 COS(COSN)

    创建 Dataset 资源对象

    $ kubectl create -f dataset.yaml
    dataset.data.fluid.io/hbase created
    

    检查待创建的 GooseFSRuntime 资源对象

    apiVersion: data.fluid.io/v1alpha1
    kind: GooseFSRuntime
    metadata:
     name: hbase
    spec:
     replicas: 3
     tieredstore:
       levels:
         - mediumtype: HDD
           path: /mnt/disk1
           quota: 2G
           high: "0.8"
           low: "0.7"
     master:
       replicas: 3
    

    我们通过指定 spec.master.replicas=3 来开启 Raft 3 master 模式,该参数必须为正奇数。

    创建GooseFSRuntime资源并查看状态

    $ kubectl create -f runtime.yaml
    goosefsruntime.data.fluid.io/hbase created
    
    $ kubectl get pod
    NAME                          READY   STATUS    RESTARTS   AGE
    hbase-fuse-4v9mq     1/1     Running   0          84s
    hbase-fuse-5kjbj     1/1     Running   0          84s
    hbase-fuse-tp2q2     1/1     Running   0          84s
    hbase-master-0       1/1     Running   0          104s
    hbase-master-1       1/1     Running   0          102s
    hbase-master-2       1/1     Running   0          100s
    hbase-worker-cx8x7   1/1     Running   0          84s
    hbase-worker-fjsr6   1/1     Running   0          84s
    hbase-worker-fvpgc   1/1     Running   0          84s
    

    查看 GooseFSRuntime 状态

    NAME     MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
    hbase   Ready           Ready            Ready     15m
    

    确认 PHASE 全部为 Ready。

    查看 Raft 状态 leader/follower

    登录其中一个 master 的 pod:

    $ kubectl exec -ti hbase-master-0 bash
    $ goosefs fs masterInfo
    

    可以看到其中一个节点是 LEADER,其余两个是 FOLLOWER

    current leader master: hbase-master-0:26000
    All masters: [hbase-master-0:26000, hbase-master-1:26000, hbase-master-2:26000]
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持