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 つのハードディスク パーティションがあります。
- /dev/sda ルート パーティション用
- /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 つのパーティションが存在します。
- /dev/sdb1 - Ceph データ
- /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/