8.2.2. 在 RHGS 节点升级/迁移 Heketi


注意

如果 Heketi 位于 Openshift 节点,则跳过这个部分并查看 第 8.2.4.1 节 “在 Openshift 节点升级 Heketi”

重要
  • 在 OCS 3.11 中,不支持在 RHGS 节点升级 Heketi。因此,您需要将 heketi 迁移到一个新的 heketi pod。
  • 确保现在迁移到受支持的 heketi 部署,因为未来版本可能没有迁移路径。
  • 确保 master 节点中安装 cns-deploy rpm。这提供了设置 heketi pod 所需的模板文件。

    # subscription-manager repos --enable=rh-gluster-3-for-rhel-7-server-rpms
# yum install cns-deploy
  1. 在 master 节点上使用新创建的容器化 Red Hat Gluster Storage 项目:

    # oc project <project-name>

    例如:

    # oc project gluster
  2. 在 master 节点上执行以下命令来创建服务帐户:

    # oc create -f /usr/share/heketi/templates/heketi-service-account.yaml
    serviceaccount/heketi-service-account created
  3. 在 master 节点上执行以下命令来安装 heketi 模板:

    # oc create -f /usr/share/heketi/templates/heketi-template.yaml
    template.template.openshift.io/heketi created
  4. 验证模板是否创建

    # oc get templates
    
    NAME            DESCRIPTION                          PARAMETERS    OBJECTS
    heketi          Heketi service deployment template   5 (3 blank)   3
  5. 在 master 节点上执行以下命令,为 heketi 服务帐户授予必要的权限:

    # oc policy add-role-to-user edit system:serviceaccount:gluster:heketi-service-account
    role "edit" added: "system:serviceaccount:gluster:heketi-service-account"
    # oc adm policy add-scc-to-user privileged -z heketi-service-account
    scc "privileged" added to: ["system:serviceaccount:gluster:heketi-service-account"]
  6. 在运行 heketi 的 RHGS 节点上,执行以下命令:

    1. 创建 heketidbstorage 卷:

      # heketi-cli volume create --size=2 --name=heketidbstorage
    2. 挂载卷:

      # mount  -t glusterfs 192.168.11.192:heketidbstorage /mnt/

      其中 192.168.11.192 是 RHGS 节点之一。

    3. 停止 heketi 服务:

      # systemctl stop heketi
    4. 禁用 heketi 服务:

      # systemctl disable heketi
    5. 将 heketi db 复制到 heketidbstorage 卷:

      # cp /var/lib/heketi/heketi.db /mnt/
    6. 卸载卷:

      # umount /mnt
    7. 将 heketi 节点的以下文件复制到 master 节点:

      # scp   /etc/heketi/heketi.json  topology.json   /etc/heketi/heketi_key  OCP_master_node:/root/

      其中 OCP_master_node 是 master 节点的主机名。

  7. 在 master 节点上,设置从 heketi 节点复制的以下三个文件的环境变量。将下面几行添加到 ~/.bashrc 文件中,并运行 bash 命令来应用并保存更改:

    export SSH_KEYFILE=heketi_key
    export TOPOLOGY=topology.json
    export HEKETI_CONFIG=heketi.json
    注意

    如果您已将 /etc/heketi/heketi.json 中的 "keyfile" 的值改为不同的值,请相应地更改。

  8. 执行以下命令来创建一个 secret 来保存配置文件:

    # oc create secret generic heketi-config-secret --from-file=${SSH_KEYFILE} --from-file=${HEKETI_CONFIG} --from-file=${TOPOLOGY}
    
    secret/heketi-config-secret created
  9. 执行以下命令来标记 secret:

    # oc label --overwrite secret heketi-config-secret glusterfs=heketi-config-secret heketi=config-secret
    
    secret/heketi-config-secret labeled
  10. 创建 heketi-gluster-endpoints.yaml 文件,并获取所有 glusterfs 节点的 IP 地址。

    1. 创建 heketi-gluster-endpoints.yaml 文件。

      # oc create -f ./heketi-gluster-endpoints.yaml
    2. 获取所有 glusterfs 节点的 IP 地址。

      # cat heketi-gluster-endpoints.yaml
      apiVersion: v1
      kind: Endpoints
      metadata:
        name: heketi-storage-endpoints
      subsets:
      - addresses:
        - ip: 192.168.11.208
        ports:
        - port: 1
      - addresses:
        - ip: 192.168.11.176
        ports:
        - port: 1
      - addresses:
        - ip: 192.168.11.192
        ports:
        - port: 1

      在上例中,192.168.11.208, 192.168.11.176, 192.168.11.192 是 glusterfs 节点。

  11. 执行以下命令来创建服务:

    # oc create -f ./heketi-gluster-service.yaml

    例如:

    # cat heketi-gluster-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: heketi-storage-endpoints
    spec:
      ports:
      - port: 1
  12. 执行以下命令来部署用于为 OpenShift 创建持久性卷的 Heketi 服务、路由和部署配置:

    # oc process heketi | oc create -f -
    service/heketi created
    route.route.openshift.io/heketi created
    deploymentconfig.apps.openshift.io/heketi created
    注意

    建议为数据库工作负载调整 heketidbstorage 卷。新安装的 Openshift Container Storage 部署会自动调整 heketidbstorage 卷。对于旧的部署,请按照 KCS 文章 规划在 Openshift Container Storage 上运行容器化 DB 或 nosql 工作负载? 并为卷 heketidbstorage 执行卷设置操作。

  13. 验证 Heketi 是否已迁移在 master 节点上执行以下命令:

    # oc rsh po/<heketi-pod-name>

    例如:

    # oc rsh po/heketi-1-p65c6
  14. 执行以下命令检查集群 ID

    # heketi-cli cluster list

    输出中验证集群 ID 与旧集群匹配。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部