Heketi-GlusterFSクラスタ管理ツール

7500 ワード

作者:石文时间:2009-01-13
Heketiは、glusterFSクラスタのボリューム作成、削除などの操作を管理できるGlusterfs管理ソフトウェアです.
HeketiがGlusterFSクラスタを管理するには、次の点に注意してください.
  • GlusterFSクラスタの各peerには、ファイルシステムがインストールされていないディスクデバイス(ディスクデバイスがフォーマットされていない)
  • が必要です.
  • GlusterFSクラスタの各peerのポート番号は少なくできません.そうしないと、peer上のbrickがポート番号を使い切った後、ボリューム
  • を作成できません.
  • GlusterFSの各peerはクラスタを構成することができず、Heketiはクラスタの組合せを自己作成することができる.

  • Heketiのインストール手順:
  • rpmパッケージを使用してインストール:
    rpm -ivh heketi-7.0.0-1.el7.x86_64.rpm
    
  • プロファイル:プロファイルの場所:/etc/heketi/heketi.jsonプロファイルの例:
  • {
    #    8080
      "port": "8088",
    #     
      "use_auth": false,
    #glusterfs      
      "glusterfs": {
        "executor": "ssh",
        "sshexec": {
          "keyfile": "/etc/heketi/heketi_key",
          "user": "root"
        },
        "db": "/heketidb/heketi.db",
        "loglevel" : "debug"
      }
    }
    
  • 正常に動作するかどうかを確認し、次のコマンドを実行します:
    curl http://localhost:8088/hello
    
    戻り値正常:
    Hello from Heketi
    
  • HeketiとGlusterFSの各ノードは信頼関係を構成する注意:Heketi非密登録GlusterFSクラスタの各ノードを構成することであり、Heketiプロファイルのキーがこのように書かれている場合、以下のように構成することができる.
    "glusterfs": {
        "executor": "ssh",
        "sshexec": {
          "keyfile": "/etc/heketi/heketi_key",
          "user": "root"
        },
        "db": "/heketidb/heketi.db",
        "loglevel" : "debug"
      }
    
  • ディレクトリ/etc/heketiを作成(作成しなくてもよいし、任意のディレクトリでもよい)
    mkdir /etc/heketi
    
  • heketi鍵ペア
  • を生成する
     ssh-keygen -f /etc/heketi/heketi_key -t rsa -N ''
    
  • 鍵を生成する公開鍵をGlsterFSクラスタの各peerのファイルに
  • にインポートする.
    heketi-clientによるGlusterFSクラスタ情報のHeketiへのインポート
    heketi-clientのインストール:
  • rpmで
     rpm -ivh /export/servers/heketi-client-7.0.0-1.el7.x86_64.rpm
    
  • を取り付ける.
  • プロファイル:/etc/heketi/topology.json(ファイルは事前に作成する必要があります)
  • {
      "clusters": [
        {
          "nodes": [
            {
              "node": {
                "hostnames": {
                  "manage": [
                    "1.1.1.6"
                  ],
                  "storage": [
                    "1.1.1.6"
                  ]
                },
                "zone": 1
              },
              "devices": [
                "/dev/sdb"
              ]
            },
            {
              "node": {
                "hostnames": {
                  "manage": [
                    "1.1.1.7"
                  ],
                  "storage": [
                    "1.1.1.7"
                  ]
                },
                "zone": 1
              },
              "devices": [
                "/dev/sdb"
              ]
            },
            {
              "node": {
                "hostnames": {
                  "manage": [
                    "1.1.1.8"
                  ],
                  "storage": [
                    "1.1.1.8"
                  ]
                },
                #      
                "zone": 1
              },
              "devices": [
                "/dev/sdb"
              ]
            }
          ]
        }
      ]
    }
    
  • は、GlusterFSクラスタ情報
    heketi-cli --server http://localhost:8088 topology load --json=/etc/heketi/topology.json
    
  • をheketiに送信する.
    クラスタの拡張方法
  • /etc/heketi/topology.jsonファイル情報を再構成し、heketiにインポートすれば拡張できます.
  • はaddコマンドによりクラスタ拡張
  • とすることもできる.
    Heketiを使用したGlusterFSクラスタの管理
  • 新しいheketidbstorageデータベース(heketi GLusterFSクラスタのディスク領域情報などのリソース使用状況を記録するためのデータベース)
  • heketi-cli --server http://localhost:8088 setup-openshift-heketi-storage
    
  • GlusterFSクラスタの情報を表示する
  • #    
    heketi-cli --server http://localhost:8088  cluster list
    #      
    heketi-cli --server http://localhost:8088  cluster info 
    #    
    heketi-cli --server http://localhost:8088  node info 
    #   
    heketi-cli --server http://localhost:8088 volume list
    
  • その他の共通コマンド
  • #heketi      
    heketi-cli --server http://localhost:8088 -h
      blockvolume                    Heketi Volume Management
      cluster                        Heketi cluster management
      db                             Heketi Database Management
      device                         Heketi device management
      help                           Help about any command
      loglevel                       Heketi Log Level
      node                           Heketi Node Management
      setup-openshift-heketi-storage Setup OpenShift/Kubernetes persistent storage for Heketi
      topology                       Heketi Topology Management
      volume                         Heketi Volume Management
    #      
    heketi-cli --server http://localhost:8088 cluster -h
      create      Create a cluster
      delete      Delete the cluster
      info        Retrieves information about cluster
      list        Lists the clusters managed by Heketi
      setflags    Set flags on a cluster
    #      
    heketi-cli --server http://localhost:8088 node -h
      add         Add new node to be managed by Heketi
      delete      Deletes a node from Heketi management
      disable     Disallow usage of a node by placing it offline
      enable      Allows node to go online
      info        Retrieves information about the node
      list        List all nodes in cluster
      remove      Removes a node and all its associated devices from Heketi
      rmtags      Removes tags from a node
      settags     Sets tags on a node
    #     
    heketi-cli --server http://localhost:8088 volume -h
      clone       Creates a clone
      create      Create a GlusterFS volume
      delete      Deletes the volume
      expand      Expand a volume
      info        Retrieves information about the volume
      list        Lists the volumes managed by Heketi
                     
    

    実際の導入で発生した問題
  • heketi-client GlusterFSクラスタ構成情報のインポート時に発生した問題が正常である場合の出力ログ:
  • #heketi-cli topology load --json=topology-sample.json
    Creating cluster ... ID: 5b930ef6081fd22e895c25a3dfb0c516
        Allowing file volumes on cluster.
        Allowing block volumes on cluster.
        Creating node 10.30.1.15 ... ID: b120572be40db6c1d979c3903876430b
            Adding device /dev/sdb ... OK
        Creating node 10.30.1.16 ... ID: 7ce13ffc5eabe64a3791e93233fd3c1a
            Adding device /dev/sdb ... OK
        Creating node 10.30.1.17 ... ID: f9abdc2e5d4cfa17c035a97f984a1a3b
            Adding device /dev/sdb ... OK
    

    ディスク・ファイル・システムが既に存在する場合のエラー・ログ
    [root@10-211-105-109 heketi]# heketi-cli --server http://localhost:8088 topology load --json=/etc/heketi/topology.json
    	Creating node 10.211.105.200 ... ID: 6c0476a0b495bc67c2e6b181ca2f0813
    		Adding device /dev/sda5 ... Unable to add device: Can't open /dev/sda5 exclusively.  Mounted filesystem?
    

    ノードがすでに他のクラスタに存在する場合のエラー
    [root@10-211-105-109 heketi]# heketi-cli --server http://localhost:8088 topology load --json=/etc/heketi/topology.json
    	Creating node 10.211.106.9 ... Unable to create node: peer probe: failed: 10.211.106.9 is either already part of another cluster or having volumes configured
    
  • heketiを使用してボリュームを作成すると、作成に失敗した後にどのようにheketiが記録するノード空間が減少し、解放できません.ボリューム情報も見えません.最終的な結果は,ノード空間表示が多く用いられたが,何の使用も見られなかった.これはバグではありませんか?

  • 参考資料:
    https://github.com/heketi/heketi/blob/master/docs/admin/topology.md