GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7でCeph分散ストレージクラスターを構築する方法

Cephは、広く使用されているオープンソースストレージプラットフォームです。高性能、信頼性、およびスケーラビリティを提供します。 Cephの無料分散ストレージシステムは、オブジェクト、ブロック、およびファイルレベルのストレージ用のインターフェイスを提供します。 Cephは、単一障害点のない分散ストレージシステムを提供するように構築されています。

このチュートリアルでは、CentOS 7にCephクラスターをインストールして構築する方法を説明します。Cephクラスターには、次のCephコンポーネントが必要です。

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

前提条件

  • 6つのサーバーノード、すべてCentOS7がインストールされています。
  • すべてのノードのルート権限。

このチュートリアルのサーバーは、次のホスト名とIPアドレスを使用します。

ホスト名 IPアドレス

ceph-admin 10.0.15.10
mon1 10.0.15.11
osd1 10.0.15.21
osd2 10. 0.15.21
osd2 10. br/>クライアント10.0.15.15

すべてのOSDノードには2つのパーティションが必要です。1つはルート(/)パーティションで、もう1つは後でCephデータストレージとして使用される空のパーティションです。

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

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

Cephユーザーを作成する

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

 useradd -d / home / cephuser -m cephuser 
passwd cephuser

新しいユーザーを作成したら、「cephuser」のsudoを構成する必要があります。彼はrootとしてコマンドを実行し、パスワードなしでroot権限を取得できる必要があります。

以下のコマンドを実行して、ユーザーのsudoersファイルを作成し、sedを使用して/ etc/sudoersファイルを編集します。

 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プロトコルを介して日付と時刻を設定します。uspoolNTPサーバーを使用します。次に、起動時にNTPサーバーを起動して実行できるようにします。

 yum install -y ntp ntpdate ntp-doc 
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd .service

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

VMware内ですべてのノードを実行している場合は、この仮想化ユーティリティをインストールする必要があります。それ以外の場合は、この手順をスキップしてください。

 yum install -y open-vm-tools 

SELinuxを無効にする

sedストリームエディターでSELinux構成ファイルを編集して、すべてのノードでSELinuxを無効にします。

 sed -i's / SELINUX =enforcing / SELINUX =disable / g'/ etc / selinux / config 

ホストファイルの構成

vimエディターですべてのノードの/etc/ hostsファイルを編集し、すべてのクラスターノードのIPアドレスとホスト名を含む行を追加します。

 vim / etc / hosts 

以下に設定を貼り付けます:

 10.0.15.10 ceph-admin 
10.0.15.11 mon1
10.0.15.21 osd1
10.0.15.22 osd2
10.0.15.23 5.1 <5 /> 10 os d / pre>

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

これで、サーバー間でホスト名を使用してpingを実行し、ネットワーク接続をテストできます。例:

 ping -c 5 mon1 

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

このステップでは、ceph-adminノードを構成します 。管理ノードは、モニターノードとosdノードを構成するために使用されます。 ceph-adminノードにログインし、「 cephuser」になります '。

ssh[メール保護]
su --cephuser

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

' cephuserのsshキーを生成します '。

 ssh-keygen 

パスフレーズを空白/空のままにします。

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

 vim〜/ .ssh / config 

以下に構成を貼り付けます:

ホストceph-admin
ホスト名ceph-admin
ユーザーcephuser

ホストmon1
ホスト名mon1
ユーザーcephuser

ホストosd1
ホスト名osd1
ユーザーcephuser

ホストosd2
ホスト名osd2
ユーザーcephuser

ホストosd3
>ホスト名osd3
ユーザーcephuser

ホストクライアント
ホスト名クライアント
ユーザーcephuser

ファイルを保存します。

構成ファイルの権限を変更します。

 chmod 644〜/ .ssh / config 

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

 ssh-keyscan osd1 osd2 osd3 mon1 client>>〜/ .ssh / known_hosts 
ssh-copy-id osd1
ssh-copy-id osd2
ssh-copy-id osd3
ssh-copy-id mon1
ssh-copy-idクライアント

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

終了したら、ceph-adminノードからosd1サーバーにアクセスしてみてください。

 ssh osd1 

ステップ3-Firewalldを設定する

システムを保護するためにFirewalldを使用します。このステップでは、すべてのノードでfirewaldを有効にしてから、ceph-admon、ceph-mon、およびceph-osdに必要なポートを開きます。

ceph-adminノードにログインし、firewalldを起動します。

ssh[メール保護]
systemctl start Firewalld
systemctl enable Firewalld

ポート80、2003、4505-4506を開き、ファイアウォールをリロードします。

 sudo Firewall-cmd --zone =public --add-port =80 / tcp --permanent 
sudo Firewall-cmd --zone =public --add-port =2003 / tcp --permanent
sudo Firewall-cmd --zone =public --add-port =4505-4506 / tcp --permanent
sudo Firewall-cmd --reload

ceph-adminノードから、モニターノード「mon1」にログインしてfirewalldを起動します。

 ssh mon1 
sudo systemctl start Firewalld
sudo systemctl enable Firewalld

Cephモニターノードで新しいポートを開き、ファイアウォールをリロードします。

 sudo Firewall-cmd --zone =public --add-port =6789 / tcp --permanent 
sudo Firewall-cmd --reload

最後に、osdノード(osd1、osd2、os3)のそれぞれでポート6800-7300を開きます。

ceph-adminノードから各osdノードにログインします。

 ssh osd1 
sudo systemctl start Firewalld
sudo systemctl enable Firewalld

ポートを開き、ファイアウォールをリロードします。

 sudo Firewall-cmd --zone =public --add-port =6800-7300 / tcp --permanent 
sudo Firewall-cmd --reload

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

ステップ4-CephOSDノードを構成します

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

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

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

 ssh osd1 
ssh osd2
ssh osd3

fdiskコマンドでパーティションを確認します。

 sudo fdisk -l / dev / sdb 

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

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

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

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

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

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

ceph-adminノードにログインします。

ssh[メール保護]
su --cephuser

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

Cephリポジトリを追加し、Cephデプロイメントツール' ceph-deployをインストールします 'yumコマンドを使用します。

 sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm 
sudo yum update -y &&sudo yum ceph-deploy-yをインストールします

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

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

新しいクラスター構成の作成

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

 mkdir cluster 
cd cluster /

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

 ceph-deploy new mon1 

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

ceph.confファイルをvimで編集します。

 vim ceph.conf 

[グローバル]ブロックの下に、以下の構成を貼り付けます。

#ネットワークアドレス
public network =10.0.15.0/24
osd pool default size =2

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

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

次に、ceph-adminノードから他のすべてのノードにCephをインストールします。これは、1つのコマンドで実行できます。

 ceph-deploy install ceph-admin mon1 osd1 osd2 osd3 

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

次に、mon1ノードにceph-monをデプロイします。

 ceph-deploy mon create-initial 

このコマンドは、モニターキーを作成し、「ceph」コマンドを使用してキーを確認および取得します。

 ceph-deploy keepkeys mon1 

クラスターへのOSDSの追加

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

/ dev/sdbパーティションがすべてのOSDノードで使用可能であることを確認します。

 ceph-deploy disk list osd1 osd2 osd3 

XFS形式の/dev/sdbディスクが表示されます。

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

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

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

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

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

osd1-3がOSDの使用結果の準備ができていることがわかる場合は、展開は成功しています。

以下のコマンドでOSDをアクティブにします:

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

続行する前に、出力にエラーがないか確認してください。これで、listコマンドを使用してOSDノードのsdbディスクを確認できます。

 ceph-deploy disk list osd1 osd2 osd3 

その結果、/ dev/sdbに2つのパーティションが作成されました。

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

または、fdiskを使用してOSDノードで直接確認できます。

 ssh osd1 
sudo fdisk -l / dev / sdb

次に、関連するすべてのノードに管理キーをデプロイします。

 ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3 

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

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

CentOS7上のCephクラスターが作成されました。

ステップ6-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 が必要です サーバーとすべてが稼働中である必要があります 実行中です。約75GBの利用可能なディスクがあるはずです。 -3x25GBCephデータパーティション。

おめでとうございます。新しいCephクラスターが正常に構築されました。

Cephチュートリアルの次のパートでは、Cephをブロックデバイスとして使用する方法、またはCephをファイルシステムとしてマウントする方法を紹介します。


Cent OS
  1. CentOS5.4上のGlusterFSを使用した4つのストレージノードに分散されたレプリケートされたストレージ

  2. CentOS5.4上のGlusterFSを使用した4つのストレージノードにまたがる分散ストレージ

  3. CentOS6.3上のGlusterFS3.2.xを使用した4つのストレージノードにまたがる分散ストレージ

  1. CentOS7にKubernetesクラスターをインストールする方法

  2. CentOS6.3上のGlusterFS3.2.xを使用した4つのストレージノードに分散されたレプリケートされたストレージ

  3. Ubuntu16.04でCephストレージクラスターを作成する方法

  1. CentOS8にGoをインストールする方法

  2. CentOS 7 /RHEL7でGlusterFSストレージをセットアップする方法

  3. CentOS7にCephクラスターをインストールおよび構成するためのクイックガイド