Cephは、近年登場した最もエキサイティングなオープンソースストレージテクノロジーの1つです。エクサバイトに拡張可能で、複数のデータセンターに拡張可能なCeph開発者は、システム管理者とインフラストラクチャアーキテクトがソフトウェアを簡単に展開できるようにしました。この記事では、基本的なCephstroageクラスターを作成する方法についてのステップバイステップガイドを提供します。これはUbuntu16.04でテストされています。特に明記されていない限り、すべてのコマンドはrootとして実行されることに注意してください。また、このドキュメントで「すべてのCephノード」について言及している場合、これには管理ノードも含まれることに注意してください。
一般設定
この例では、それぞれ2つのOSDを持つ基本的な3ノードのCephクラスターを作成します。ホスト名の規則「Storage-x」を使用します "、ここで" x "は1から3までの数字で、特定のノードを指すために使用されます。ceph管理ノードとして外部コンピューター(自分のコンピューターまたはラップトップの場合もあります)を使用します。
ネットワーク設定
各ノードは同じプライベートネットワーク上にあり、インターネットにアクセスできるゲートウェイがあります。
管理ノードも同じネットワーク上にある必要がありますが、ネットワークで常に使用可能である必要はありません。その結果、作業用コンピューターが管理ノードである可能性があり、VPNを使用してCephノードのネットワークに接続する可能性があります。
Cephは、Ceph MonitorノードにTCPポート6789を使用し、パブリックゾーンへのCephOSDにポート6800-7100を使用します。たとえば、iptablesの場合:
sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT
ノードの準備
各ストレージノードは同期する必要があるため、ntpをインストールし、ネットワーク経由でSSH経由でアクセスできることを確認します。
sudo apt install ntp ssh
各Cephノードのホスト名がすべてのCephノードから解決可能であることを確認してください。各Cephノードで、/ etc / hostsファイルを編集し、以下を追加します。
[Admin Node IP Address] admin-node
[Storage-1 IP Address] Storage-1
[Storage-2 IP Address] Storage-2
[Storage-3 IP Address] Storage-3
それに応じて、各ノードのIPアドレスを置き換えます。
解決が機能するかどうかをテストするには、次の手順を実行します。
ping admin-node
ping Storage-1
ping Storage-2
ping Storage-3
admin-nodeであることを確認してください ホスト名は、ループバックIPアドレス(127.0.0.1)ではなく、管理ノードの外部ネットワークIPアドレスに解決されます。
各Cephノード(管理ノードとすべてのストレージノードを意味します)で、Ceph Ubuntuパッケージリポジトリをaptに追加してから、新しいリポジトリのコンテンツでローカルキャッシュを更新します。
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list
apt-get update
cephadminを作成します すべてのCephノードのユーザー。このユーザーは、ノードのクラスター全体にCephをインストールして管理するために使用されるため、このユーザーの資格情報のセキュリティを最大化するようにしてください。
ssh-keygen -t rsa
useradd cephadmin
パスワードなしのSSHを設定する
管理ノードからのCephインストールスクリプトとツールは、クラスターのすべてのメンバーにパスワードなしでアクセスできる必要があります。
管理ノードで、 cephadminに切り替えます ユーザーとSSHキーを作成します:
生成したsshキーを3つのストレージノードにコピーします。
ssh-copy-id Storage-1
ssh-copy-id Storage-2
ssh-copy-id Storage-3
管理ノードのcephadminユーザーとして、ストレージノードへのパスワードなしのsshが正しく機能するかどうかをテストします。
ssh Storage-1
ssh Storage-2
ssh Storage-3
パスワードなしのSudoを設定する
SSHを介したパスワードなしのアクセスが設定されたので、すべてのCephノードでcephadminユーザーのパスワードなしのsudoを構成します。
visudo
次のように表示されます。
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
下部に次の行を追加します:
cephadmin ALL=(ALL) NOPASSWD: ALL
これで、 cephadminに対してパスワードなしのsudoが許可されるはずです。 すべてのCephノードのユーザー。
ceph-deployをインストールします
Ceph-deployは、ノードのデプロイに必要な個々のステップをスクリプト化することにより、Cephクラスターの迅速なデプロイを容易にするためにCeph開発者によって作成されたツールです。管理ノードにツールをインストールすることで、これを利用します。
apt install ceph-deploy
管理ノードで、 cephadminに切り替えます チュートリアルのパート1で作成したユーザーは、ホームディレクトリに切り替えて、Cephクラスターの展開と管理に必要なすべてのファイルを格納するために使用されるサブディレクトリを作成します。
su cephadmin
cd
mkdir my-first-ceph-cluster
cd my-first-ceph-cluster
この時点で、実行されるすべてのデプロイメントコマンドは、 / home / cephadmin / my-first-ceph-cluster内からのみ実行されます。 。管理コマンドは、同じディレクトリ内からも実行する必要があります。
Ceph構成
すべてのストレージノードをモニターノードとして割り当てます:
ceph-deploy new Storage-1 Storage-2 Storage-3
作業ディレクトリ内で、キーリングファイルやCeph構成ファイルなどのファイルがceph-deployによって生成されていることがわかります。
次の行をceph.confに追加します ファイル:
osd pool default size = 2
クラスタ内のストレージノードごとに2つのOSDしかないため、これにより、Cephは、格納するすべてのデータのコピーを1つだけ追加することに満足できます。
次の行をceph.confに追加します 同様に:
public network = {ip-address}/{netmask}
ネットワーク部分を実際の値に置き換える場所。たとえば、ストレージノードが192.168.1.0/24ネットワーク上にある場合、それが値になります。 「パブリックネットワーク」について言及している場合は、混乱しないでください。 Cephクラスターの外部のネットワークのみを指します。内部レプリケーションネットワークは、このチュートリアルではカバーされていません。
Cephをデプロイする
これで、ソフトウェアと構成ファイルがインストールされ、Cephノードにコピーされます。
ceph-deploy install admin-node Storage-1 Storage-2 Storage-3
これにより、すべての基本Cephパッケージがノードにインストールされます。
Ceph Monitorソフトウェアをストレージノードにインストールして構成します:
ceph-deploy mon create-initial
Ceph OSD
ディレクトリをOSDとして使用することは可能ですが、実稼働環境ではお勧めしません。各ストレージノードで使用されるCephOSDが/dev / sdaであると想定します。 および/dev / sdb 、Cephに使用するディスクを準備してもらいます。
警告: 次のコマンドは、指定されたOSD上の既存のデータを破棄するため、コマンドの実行に間違いがないように注意する必要があります。
ceph-deploy osd prepare Storage-1:/dev/sda
ceph-deploy osd prepare Storage-1:/dev/sdb
ceph-deploy osd prepare Storage-2:/dev/sda
ceph-deploy osd prepare Storage-2:/dev/sdb
ceph-deploy osd prepare Storage-3:/dev/sda
ceph-deploy osd prepare Storage-3:/dev/sdb
上記のコマンドがエラーなしで実行された場合、OSDの準備ができており、クラスター内の実行中のリソースとしてそれらをアクティブ化できます。
ceph-deploy osd activate Storage-1:/dev/sda
ceph-deploy osd activate Storage-1:/dev/sdb
ceph-deploy osd activate Storage-2:/dev/sda
ceph-deploy osd activate Storage-2:/dev/sdb
ceph-deploy osd activate Storage-3:/dev/sda
ceph-deploy osd activate Storage-3:/dev/sdb
ファイナライズ
管理キーリングを各Cephノードにコピーして、各ノードでのCeph管理が可能になるようにします。
ceph-deploy admin admin-node Storage-1 Storage-2 Storage-3
すべてのストレージノードのすべてのOSDのステータスを確認します:
ceph osd tree
Cephクラスターの全体的なステータスを確認します:
ceph health
を取得した場合
HEALTH_OK
これは、クラスターが正しく機能していることを意味します。
より多くのクラスター統計を表示したい場合は、次のコマンドを実行する必要があります。
ceph status
結論
これで、3ノードのCephクラスターが稼働しています。この設定では、クラスターは1つのノードを失い、データの損失は発生せず、要求を処理し続ける可能性があります。高可用性モニターサービスは、各ストレージノードでも利用できます。これは非常に基本的な本番レベルのセットアップです。詳細については、Cephの公式ドキュメントを参照してください。