ウェブサイト検索

Ceph Storage Cluster を Ubuntu 16.04 にインストールする方法


Ceph はオープンソースのストレージ プラットフォームであり、高いパフォーマンス、信頼性、拡張性を提供します。これは、オブジェクト、ブロック、およびファイルレベルのストレージのインターフェイスを提供し、単一障害点なしで動作できる無料の分散ストレージ システムです。

このチュートリアルでは、Ubuntu 16.04 サーバーに Ceph クラスターをインストールして構築する方法を説明します。 Ceph クラスターは次のコンポーネントで構成されます:

  • Ceph OSD (ceph-osd) - データ ストレージ、データ レプリケーション、およびリカバリを処理します。 Ceph クラスターには少なくとも 2 つの Ceph OSD サーバーが必要です。このセットアップでは 3 台の Ubuntu 16.04 サーバーを使用します。
  • Ceph Monitor (ceph-mon) - クラスターの状態を監視し、OSD マップと CRUSH マップを実行します。ここでは 1 つのサーバーを使用します。
  • Ceph Meta Data Server (ceph-mds) - Ceph をファイル システムとして使用する場合に必要です。

前提条件

  • Ubuntu 16.04 サーバーがインストールされた 6 つのサーバー ノード
  • すべてのノードに対する root 権限

次のホスト名/IP 設定を使用します。

ホスト名 IP アドレス

ceph-admin 10.0.15.10
mon1 10.0.15.11
osd1 10.0.15.21< br>osd2 10.0.15.22
osd3 10.0.15.23
クライアント 10.0.15.15

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

このステップでは、6 つのノードすべてを構成して、Ceph Cluster ソフトウェアのインストールを準備します。したがって、すべてのノードで以下のコマンドに従って実行する必要があります。そして、ssh-server がすべてのノードにインストールされていることを確認してください。

Ceph ユーザーを作成する

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

useradd -m -s /bin/bash cephuser
passwd cephuser

新しいユーザーを作成した後、パスワードなしの sudo 権限を得るために cephuser を設定する必要があります。これは、最初にパスワードを入力しなくても、cephuser を実行して sudo 権限を取得できることを意味します。

これを実現するには、以下のコマンドを実行します。

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

NTP のインストールと構成

NTP をインストールして、すべてのノードの日付と時刻を同期します。 ntpdate コマンドを実行して、NTP 経由で日付と時刻を設定します。米国のプール NTP サーバーを使用します。次に、NTP サーバーを起動し、ブート時に実行できるようにします。

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp

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

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

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

Python をインストールして終了

このチュートリアルでは、ceph-cluster を構築するための Python パッケージが必要です。 Python と Python-pip をインストールします。

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

ホスト ファイルを構成する

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

vim /etc/hosts

以下の構成を貼り付けます。

10.0.15.10        ceph-admin
10.0.15.11        mon1
10.0.15.21        ceph-osd1
10.0.15.22        ceph-osd2
10.0.15.23        ceph-osd3
10.0.15.15        ceph-client

hosts ファイルを保存し、vim エディタを終了します。

これで、サーバーのホスト名間で ping を実行して、ネットワーク接続をテストできるようになります。

ping -c 5 mon1

ステップ 2 - SSH サーバーを構成する

このステップではceph-admin ノードを設定します。管理ノードは、モニター ノードと osd ノードの構成に使用されます。 ceph-admin ノードにログインし、cephuser にアクセスします。

ssh 
su - cephuser

管理ノードはすべてのクラスターノードのインストールと構成に使用されるため、ceph-admin ノード上のユーザーはパスワードなしですべてのノードに接続する権限を持っている必要があります。 ceph-admin ノード上で cephuser に対してパスワードなしの SSH アクセスを構成する必要があります。

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

ssh-keygen

パスフレーズは空白/空のままにしておきます。

次に、ssh 構成の構成ファイルを作成します。

vim ~/.ssh/config

以下の構成を貼り付けます。

Host ceph-admin
        Hostname ceph-admin
        User cephuser

Host mon1
        Hostname mon1
        User cephuser

Host ceph-osd1
        Hostname ceph-osd1
        User cephuser

Host ceph-osd2
        Hostname ceph-osd2
        User cephuser

Host ceph-osd3
        Hostname ceph-osd3
        User cephuser

Host ceph-client
        Hostname ceph-client
        User cephuser

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

設定ファイルのパーミッションを644に変更します。

chmod 644 ~/.ssh/config

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

ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1

要求されたら、cephuser パスワードを入力します。

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

ssh ceph-osd1

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

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

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

ssh 
sudo apt-get install -y ufw

ポート 80、2003、および 4505 ~ 4506 を開き、firewalld をリロードします。

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp

ufw を起動し、起動時に起動できるようにします。

sudo ufw enable

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

ssh mon1
sudo apt-get install -y ufw

ceph モニター ノードのポートを開き、ufw を起動します。

sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable

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

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

ssh ceph-osd1
sudo apt-get install -y ufw

OSD ノードのポートを開き、firewalld を再読み込みします。

sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable

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

ステップ 4 - Ceph OSD ノードの構成

このチュートリアルでは、3 つの OSD ノードがあり、これらの各ノードには 2 つのハードディスク パーティションがあります。

  1. /dev/sda ルート パーティション用
  2. /dev/sdb は空のパーティションです - 20GB

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

ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3

fdiskコマンドでパーティション構成を確認してください。

sudo fdisk -l /dev/sdb

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

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

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

sudo mkfs.xfs -f /dev/sdb

ここでパーティションを確認すると、XFS /dev/sdb パーティションが表示されます。

sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb

ステップ 5 - Ceph クラスターを構築する

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

ssh 
su - cephuser

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

最初のステップで、python と python-pip がシステムにすでにインストールされています。ここで、pypi python リポジトリから Ceph デプロイメント ツールceph-deploy をインストールする必要があります。

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

sudo pip install ceph-deploy

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

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

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

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

mkdir cluster
cd cluster/

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

ceph-deploy new mon1

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

vim を使用して ceph.conf ファイルを編集します。

vim ceph.conf

[global] ブロックの下に、以下の設定を貼り付けます。

# Your network address
public network = 10.0.15.0/24
osd pool default size = 2

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

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

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

ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1

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

次に、mon1 ノードにモニター ノードをデプロイします。

ceph-deploy mon create-initial

このコマンドはモニターキーを作成し、この ceph コマンドでキーを確認します。

ceph-deploy gatherkeys mon1

クラスタへの OSDS の追加

Ceph がすべてのノードにインストールされたら、OSD デーモンをクラスターに追加できます。 OSD デーモンは、ディスク /dev/sdb 上にデータおよびジャーナル パーティションを作成します。

すべての OSD ノードで使用可能なディスク /dev/sdb を確認します。

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

前に作成した XFS 形式の /dev/sdb が表示されます。

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

ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

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

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

ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

結果に ceph-osd1-3 が OSD を使用できる状態になっていることが表示されたら、コマンドは成功しています。

以下のコマンドを使用して OSDS をアクティブ化します。

ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

これで、OSDS ノード上の sdb ディスクを再度確認できるようになりました。

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

その結果、/dev/sdb には 2 つのパーティションが存在します。

  1. /dev/sdb1 - Ceph データ
  2. /dev/sdb2 - Ceph Journal

または、OSD ノードで直接確認します。

ssh ceph-osd1
sudo fdisk -l /dev/sdb

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

ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3

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

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

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

ステップ 6 - Ceph のテスト

ステップ 4 では、新しい Ceph クラスターをインストールして作成し、OSDS ノードをクラスターに追加しました。次に、クラスタをテストして、意図したとおりに動作することを確認する必要があります。

ceph-admin ノードから、Ceph モニター・サーバー mon1 にログインします。

ssh mon1

以下のコマンドを実行してクラスタの状態を確認します。

sudo ceph health

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

sudo ceph -s

結果は以下で確認できます。

Ceph の健全性がOKであり、IP アドレス 10.0.15.11 のモニター ノード mon1 があることを確認してください。 3 つの OSD サーバーがあり、 すべて稼働しており、45GB - 3x15GB Ceph Data OSD パーティションの利用可能なディスク容量があるはずです。

Ubuntu 16.04 上に新しい Ceph クラスターが正常に構築されました。

参照

  • http://docs.ceph.com/docs/jewel/

関連記事: