DUICUO

Ubuntu 16.04にCephストレージクラスターをインストールする方法

[[183920]]

Cephは、高性能、信頼性、拡張性に優れたオープンソースのストレージプラットフォームです。オブジェクトレベル、ブロックレベル、ファイルレベルのストレージインターフェースを提供し、単一障害点の影響を受けずに運用できる、無料の分散ストレージシステムです。

このチュートリアルでは、Ubuntu 16.04サーバーにCephクラスターをインストールして設定する方法を説明します。Cephクラスターには以下のコンポーネントが含まれます。

  • Ceph OSD (ceph-osd) - データの保存、レプリケーション、リカバリを制御します。Cephクラスターには少なくとも2台のCeph OSDサーバーが必要です。このインストールでは、3台のUbuntu 16.04サーバーを使用します。
  • Ceph モニター (ceph-mon) - クラスターの状態を監視し、OSD および CRUSH マッピングを実行します。ここでは単一のサーバーを使用します。
  • Ceph メタデータ サーバー (ceph-mds) - Ceph をファイル システムとして使用する場合はこれが必要になります。

前提条件

  • Ubuntu 16.04 を実行する 6 つのサーバー ノード
  • すべてのノードのルート権限

インストールには次のホスト名/IP を使用します。

  1. ホスト名 IPアドレス
  2. ceph-admin 10.0.15.10
  3. mon1 10.0.15.11
  4. osd1 10.0.15.21
  5. osd2 10.0.15.22
  6. osd3 10.0.15.23
  7. クライアント 10.0.15.15

ステップ1 - すべてのノードを構成する

このインストールでは、Cephクラスタソフトウェアのインストール準備として、6つのノードすべてを設定します。そのため、すべてのノードで以下のコマンドを実行する必要があります。その後、すべてのノードにssh-serverがインストールされていることを確認してください。

Cephユーザーを作成する

すべてのノードに cephuser という名前の新しいユーザーを作成します。

  1. useradd -m -s /bin/bash cephuser
  2. パスワード cephuser

新しいユーザーを作成したら、cephuser にパスワードなしの sudo 権限を設定する必要があります。これにより、cephuser は sudo 権限を取得し、パスワードを入力せずに実行できるようになります。

次のコマンドを実行して構成を完了します。

  1. echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo ティー /etc/sudoers.d/cephuser
  2. chmod 0440 /etc/sudoers.d/cephuser
  3. sed -i s '/Defaults requiretty/#Defaults requiretty' /g /etc/sudoers

NTPのインストールと設定

NTPをインストールして、すべてのノードの日付と時刻を同期します。まず、`ntpdate`コマンドを実行してNTP経由で日付を設定します。USプールのNTPサーバーを使用します。次に、NTPサービスを有効にして、起動時に起動します。

  1. sudo apt-get install -y ntp ntpdate ntp-doc
  2. ntpdate 0.us.pool.ntp.org
  3. hwclock --systohc  
  4. systemctl ntp を有効にする
  5. systemctl ntp を起動する

Open-vm-toolsをインストールする

すべてのノードを VMware で実行している場合は、この仮想化ツールをインストールする必要があります。

  1. sudo apt-get install -y open -vm-tools

Pythonとpartedをインストールする

このチュートリアルでは、Cephクラスターを構築するためにPythonパッケージが必要です。Pythonとpython-pipをインストールしてください。

  1. sudo apt-get install -y python python-pip parted

Hostsファイルの設定

vim エディタを使用して、すべてのノードのホスト ファイルを編集します。

  1. vim /etc/hosts

次の設定を貼り付けます。

  1. 10.0.15.10 ceph-admin
  2. 10.0.15.11 月1
  3. 10.0.15.21 ceph-osd1
  4. 10.0.15.22 ceph-osd2
  5. 10.0.15.23 ceph-osd3
  6. 10.0.15.15 ceph クライアント

ホストファイルを保存し、Vim エディターを終了します。

これで、2 つのサーバー間でホスト名を ping して、ネットワーク接続をテストすることができます。

  1. ping -c 5 mon1

Ubuntu 16.04へのCephクラスターのインストール

ステップ2 - SSHサーバーの設定

このステップでは、ceph-adminノードを設定します。管理ノードは、監視ノードとOSDノードの設定に使用されます。cephuserユーザーを使用してceph-adminノードにログインしてください。

  1. ssh root@ceph-admin
  2. su - cephuser

管理ノードはすべてのクラスタノードのインストールと設定に使用されるため、ceph-admin のユーザーにはパスワードなしの SSH ログイン権限が必要です。「ceph-admin」ノードの cephuser ユーザーにパスワードなしの SSH ログイン権限を設定する必要があります。

cephuser の SSH キーを生成します。

  1. ssh-keygen

パスワードは空白のままにしてください。

次に、SSH の設定ファイルを作成します。

  1. ~/.ssh/config を編集する

次の設定を貼り付けます。

  1. ホスト ceph-admin
  2. ホスト名 ceph-admin
  3. ユーザーcephuser
  4. ホスト mon1
  5. ホスト名 mon1
  6. ユーザーcephuser
  7. ホスト ceph-osd1
  8. ホスト名 ceph-osd1
  9. ユーザーcephuser
  10. ホスト ceph-osd2
  11. ホスト名 ceph-osd2
  12. ユーザーcephuser
  13. ホスト ceph-osd3
  14. ホスト名 ceph-osd3
  15. ユーザーcephuser
  16. ホスト ceph-client
  17. ホスト名 ceph-client
  18. ユーザーcephuser

ファイルを保存して vim を終了します。

Ceph-admin の設定

設定ファイルの権限を 644 に変更します。

  1. chmod 644 ~/.ssh/config

次に、ssh-copy-id コマンドを使用して、すべてのノードにキーを追加します。

  1. ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
  2. sshコピーID ceph-osd1
  3. sshコピーID ceph-osd2
  4. sshコピーID ceph-osd3
  5. sshコピーID mon1

プロンプトが表示されたら、cephuser パスワードを入力します。

Ceph-adminはすべてのクラスタノードにSSHキーを展開します。

次に、ceph-admin ノードから OSD1 サーバーにログインして、パスワードなしのログインが機能するかどうかをテストします。

  1. ssh ceph-osd1

ceph-admin からすべてのノード クラスタへの SSH パスワード削減

ステップ3 - Ubuntuファイアウォールを設定する

セキュリティ上の理由から、サーバーのファイアウォールを有効にする必要があります。システムを保護するために、UbuntuのデフォルトのファイアウォールであるUfw(Uncomplicated Firewall)を使用することをお勧めします。このステップでは、すべてのノードでufwを有効にし、ceph-admin、ceph-mon、ceph-osdに必要なポートを開きます。

ceph-admin ノードにログインし、ufw パッケージをインストールします。

  1. ssh root@ceph-admin
  2. sudo apt-get install -y ufw

ポート 80、2003、4505-4506 を開き、ファイアウォールを再起動します。

  1. sudo ufw 22/tcp を許可する
  2. sudo ufw で 80/tcp を許可する
  3. sudo ufw 2003/tcp を許可する
  4. sudo ufw 許可 4505:4506/tcp

ufw を有効にし、起動時に自動的に起動するように設定します。

  1. sudo ufw を有効にする

Ceph サービスを備えた UFW ファイアウォール

ceph-admin ノードから監視ノード mon1 にログインし、ufw をインストールします。

  1. SSH mon1
  2. sudo apt-get install -y ufw

Ceph 監視ノードのポートを開き、ufw を有効にします。

  1. sudo ufw 22/tcp を許可する
  2. sudo ufw 6789/tcp を許可する
  3. sudo ufw を有効にする

***、各 OSD ノード (ceph-osd1、ceph-osd2、ceph-osd3) でポート 6800 ~ 7300 を開きます。

ceph-admin にログインし、各 ceph-osd ノードに ufw をインストールします。

  1. ssh ceph-osd1
  2. sudo apt-get install -y ufw

OSD ノードのポートを開き、ファイアウォールを再起動します。

  1. sudo ufw 22/tcp を許可する
  2. sudo ufw 6800:7300/tcp を許可
  3. sudo ufw を有効にする

ufw ファイアウォールの設定が完了しました。

ステップ4 - Ceph OSDノードを構成する

このチュートリアルでは、3 つの OSD ノードがあり、それぞれに 2 つのハード ドライブ パーティションがあります。

  1. /dev/sda はルート パーティションに使用されます。
  2. /dev/sdb 空きパーティション - 20GB

Cephディスクとして/dev/sdbを使用します。ceph-adminノードからすべてのOSDノードにログインし、/dev/sdbパーティションをXFSファイルシステムとしてフォーマットします。

  1. ssh ceph-osd1
  2. ssh ceph-osd2
  3. ssh ceph-osd3

fdisk コマンドを使用してパーティション テーブルを確認します。

  1. sudo fdisk -l /dev/sdb

/dev/sdb パーティションを XFS ファイル システムとしてフォーマットし、parted コマンドを使用して GPT パーティション テーブルを作成します。

  1. sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%

次に、mkfs コマンドを使用してパーティションを XFS としてフォーマットします。

  1. sudo mkfs.xfs -f /dev/sdb

ここでパーティションを確認すると、XFS ファイルシステムの /dev/sdb パーティションが表示されます。

  1. sudo fdisk -s /dev/sdb
  2. sudo blkid -o 値 -s TYPE /dev/sdb

Ceph OSDノードのパーティションをフォーマットする

ステップ5 - Cephクラスターを作成する

このステップでは、ceph-admin からすべてのノードに Ceph をインストールします。まずは ceph-admin ノードにログインしましょう。

  1. ssh root@ceph-admin
  2. su - cephuser

ceph-adminノードにceph-deployをインストールする

まず、Pythonとpython-pipはすでにシステムにインストールされています。次に、PyPI PythonリポジトリからCephデプロイメントツール「ceph-deploy」をインストールする必要があります。

pip コマンドを使用して、ceph-admin ノードに ceph-deploy をインストールします。

  1. sudo pip ceph-deploy をインストールします

注: すべてのノードが更新されていることを確認してください。

ceph-deploy ツールをインストールしたら、Ceph クラスターを構成するための新しいディレクトリを作成します。

新しいクラスターを作成する

新しいクラスター ディレクトリを作成します。

  1. mkdir クラスター
  2. CDクラスター/

次に、ceph-deploy コマンドを使用して、監視ノード mon1 を定義して新しいクラスターを作成します。

  1. ceph-deploy 新しい mon1

このコマンドは、クラスター ディレクトリに Ceph クラスター構成ファイル ceph.conf を生成します。


新しい Ceph クラスタ構成を生成する

vim を使用して ceph.conf を編集します。

  1. vim ceph.conf

[global] ブロックの下に、次の構成を貼り付けます。

  1. # ネットワークアドレス
  2. パブリックネットワーク = 10.0.15.0/24
  3. osd プールのデフォルト サイズ= 2

ファイルを保存してエディターを終了します。

すべてのノードにCephをインストールする

ここで、1 つのコマンドを使用して、ceph-admin ノードからすべてのノードに Ceph をインストールします。

  1. ceph-deploy で ceph-admin をインストールし、ceph-osd1、ceph-osd2、ceph-osd3、mon1 をインストールします。

このコマンドは、すべてのノード (mon1、osd1-3、ceph-admin) に Ceph を自動的にインストールします。インストールにはしばらく時間がかかります。

次に、mon1 ノードに監視ノードをデプロイします。

  1. ceph-deploymoncreate -初期

このコマンドは監視キーを作成します。ceph コマンドを使用してキーを確認します。

  1. ceph-deploy の collectkeys mon1  

キーcephをデプロイする

クラスターにOSDを追加する

すべてのノードにCephをインストールしたら、OSDデーモンをクラスターに追加できます。OSDデーモンは、/dev/sdbディスクパーティションにデータとログを作成します。

すべての OSD ノード上の /dev/sdb ディスクの可用性を確認します。

  1. ceph-deploy ディスクリスト ceph-osd1 ceph-osd2 ceph-osd3

OSDノードのディスクリスト

先ほど作成した /dev/sdb が XFS 形式で表示されます。

次に、zap オプションを使用して、すべての OSD ノード上のパーティション テーブルを削除します。

  1. ceph-deploy ディスクを ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb にマウントします。

このコマンドは、すべての Ceph OSD ノード上の /dev/sdb 上のデータを削除します。

次に、すべての OSD ノードを準備し、結果にエラーがないことを確認します。

  1. ceph-deploy osd は、 ceph-osd1:/dev/sdb、ceph-osd2:/dev/sdb、ceph-osd3:/dev/sdbを準備します

ceph-osd1-3 の結果が OSD で使用できる状態であることが確認された場合、コマンドが成功したことを意味します。

ceph-osdノードを準備する

次のコマンドを使用して OSD をアクティブ化します。

  1. ceph-deploy osd は、ceph-osd1:/dev/sdb、ceph-osd2:/dev/sdb、ceph-osd3:/dev/sdb をアクティブ化します。

これで、OSDS ノードの sdb ディスクを再度確認できます。

  1. ceph-deploy ディスクリスト ceph-osd1 ceph-osd2 ceph-osd3  

Ceph OSDS が有効化されました

その結果、/dev/sdb は 2 つのパーティションに分割されます。

  1. /dev/sdb1 - Ceph データ
  2. /dev/sdb2 - Ceph ジャーナル

あるいは、OSD ノードで直接確認することもできます。

  1. ssh ceph-osd1
  2. sudo fdisk -l /dev/sdb  

Ceph OSDノードが作成された

次に、管理キーを関連するすべてのノードに展開します。

  1. ceph-deploy 管理者 ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3

キー ファイルの権限を変更するには、すべてのノードで次のコマンドを実行します。

  1. sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

Ceph クラスターが Ubuntu 16.04 上に作成されました。

ステップ6 - Cephのテスト

ステップ4では、新しいCephクラスターをインストールして作成し、OSDノードをクラスターに追加しました。次に、クラスターが期待どおりに動作することを確認するためにテストを行います。

ceph-admin ノードから Ceph 監視サーバー mon1 にログインします。

  1. SSH mon1

クラスターが正常かどうかを確認するには、次のコマンドを実行します。

  1. sudo ceph ヘルス

次に、クラスターのステータスを確認します。

  1. sudo ceph -s

次の結果が表示されます。

Ceph クラスターのステータス

Ceph が正常であることを確認してください。IP アドレスが「10.0.15.11」の監視ノード (mon1) が 1 つあります。OSD サーバーが 3 台稼働しており、使用可能なディスク容量は 45GB です。これは、15GB の Ceph データ OSD パーティションが 3 つあることを意味します。

Ubuntu 16.04 上に新しい Ceph クラスターを正常に作成しました。