Cephはオープンソースのストレージプラットフォームであり、高性能、信頼性、スケーラビリティを提供します。これは、オブジェクト、ブロック、およびファイルレベルのストレージのインターフェイスを提供し、単一障害点なしで動作できる無料の分散ストレージシステムです。
このチュートリアルでは、Ubuntu16.04サーバーにCephクラスターをインストールして構築する方法を説明します。 Cephクラスターは次のコンポーネントで構成されています:
- Ceph OSD(ceph-osd) -データストレージ、データレプリケーション、およびリカバリを処理します。 Cephクラスターには、少なくとも2つのCephOSDサーバーが必要です。このセットアップでは、3台のUbuntu16.04サーバーを使用します。
- Ceph Monitor(ceph-mon) -クラスターの状態を監視し、OSDマップとCRUSHマップを実行します。ここでは1台のサーバーを使用します。
- Cephメタデータサーバー(ceph-mds) -これは、Cephをファイルシステムとして使用する場合に必要です。
前提条件
- Ubuntu16.04サーバーがインストールされた6つのサーバーノード
- すべてのノードのルート権限
次のホスト名/IP設定を使用します:
ホスト名 IPアドレス
ceph-admin 10.0.15.10
mon1 10.0.15.11
osd1 10. 0.15.21
osd2 br/>クライアント10.0.15.15
このステップでは、CephClusterソフトウェアのインストールに備えて6つのノードすべてを構成します。したがって、すべてのノードで以下のコマンドに従って実行する必要があります。また、ssh-serverがすべてのノードにインストールされていることを確認してください。
Cephユーザーを作成する
' cephuserという名前の新しいユーザーを作成します 'すべてのノードで。
useradd -m -s /bin/bash cephuser
passwd cephuser
新しいユーザーを作成したら、 cephuserを構成する必要があります パスワードなしのsudo特権の場合。これは、「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を介して日付と時刻を設定します。 USプール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
Hostsファイルを構成する
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
ホストファイルを保存し、vimエディターを終了します。
これで、サーバーのホスト名間でpingを実行して、ネットワーク接続をテストできます。
ping -c 5 mon1
このステップでは、ceph-adminノードを構成します 。管理ノードは、モニターノードとosdノードを構成するために使用されます。 ceph-adminノードにログインし、「 cephuser」にアクセスします '。
ssh [email protected]
su - cephuser
adminノードは、すべてのクラスターノードのインストールと構成に使用されるため、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
セキュリティ上の理由から、サーバーのファイアウォールをオンにする必要があります。システムを保護するために、デフォルトのUbuntuファイアウォールであるUfw(Uncomplicated Firewall)を使用することをお勧めします。このステップでは、すべてのノードでufwを有効にしてから、ceph-admin、ceph-mon、およびceph-osdに必要なポートを開きます。
ceph-adminノードにログインし、ufwパッケージをインストールします。
ssh [email protected]
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ファイアウォールの構成が完了しました。
このチュートリアルでは、3つのOSDノードがあり、これらの各ノードには2つのハードディスクパーティションがあります。
- / dev / sda ルートパーティションの場合
- / dev / sdb 空のパーティションです-20GB
/ dev / sdbを使用します cephディスク用。 ceph-adminノードから、すべてのOSDノードにログインし、/ dev/sdbパーティションをXFSでフォーマットします。 ファイルシステム。
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
このステップでは、ceph-adminからすべてのノードにCephをインストールします。開始するには、ceph-adminノードにログインします。
ssh [email protected]
su - cephuser
ceph-adminノードにceph-deployをインストールします
最初のステップでは、すでにpythonとpython-pipをシステムにインストールしています。次に、Cephデプロイメントツール' ceph-deployをインストールする必要があります 'pypipythonリポジトリから。
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」を生成します。
ceph.confファイルをvimで編集します。
vim ceph.conf
[グローバル]ブロックの下に、以下の構成を貼り付けます。
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2
ファイルを保存してエディタを終了します。
すべてのノードにCephをインストールする
次に、1つのコマンドで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
このコマンドは、CephOSDノードの/dev/sdb上のすべてのデータを削除します。
次に、すべてのOSDノードを準備し、結果にエラーがないことを確認します。
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
結果でceph-osd1-3がOSDで使用できるようになったことを確認すると、コマンドは成功しました。
以下のコマンドでOSDをアクティブにします:
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
Ubuntu16.04上のCephクラスターが作成されました。
手順4では、新しいCephクラスターをインストールして作成し、クラスターにOSDSノードを追加しました。次に、クラスタをテストして、意図したとおりに機能することを確認する必要があります。
ceph-adminノードから、Cephモニターサーバー' mon1にログインします。 '。
ssh mon1
以下のコマンドを実行して、クラスタの状態を確認します。
sudo ceph health
次に、クラスターのステータスを確認します。
sudo ceph -s
以下の結果を見ることができます:
CephのヘルスがOKであることを確認してください モニターノード'mon1 'IPアドレス付き'10.0.15.11 '。 3つのOSDがあります サーバーとすべてが稼働中 実行中です。45GBの利用可能なディスク容量があるはずです。 -3x15GB CephDataOSDパーティション。
Ubuntu16.04で新しいCephクラスターを正常に構築しました。