##はじめに
この記事では、タイトルのとおり現時点(2021.01)で最新である__ceph(octopus)__の構築を目的としています。
また、自分で構築した手順の備忘録を兼ねているので、細かいところで間違いなどあるかもしれません。
基本的には公式のDOCUMENTATIONが必要なことを全て網羅しているので一読しておくことをお勧めします。
Linuxの知識もある程度必要になるので他サイトや書籍などで事前に基本は押さえておくとよいでしょう。
##関連記事
Ceph(Octopus)の構築(準備編 ハードウェア)
Ceph(Octopus)の構築(準備編 ソフトウェア)
Ceph(Octopus)の構築(設定編 共通) この記事
Ceph(Octopus)の構築(設定編 ブートストラップ)
Ceph(Octopus)の構築(設定編 mon/mgr/osd)
Ceph(Octopus)の構築(設定編 cephFS/mds)
Ceph(Octopus)の構築(設定編 Crush Map)
##クラスタ構成
15台のノードを3グループに分け構成します。各グループ毎にL2SWを用意し、L3SWで集約しました。詳細は以下のとおりです。
以降、この構成を前提に話を進めていきます。
グループ | ホスト名 | 役割 |
---|---|---|
0 | ceph-mon01 | mon/mgr/osd |
0 | ceph-mds01 | mds/osd |
0 | ceph-osd01 | mds(※)/osd |
0 | ceph-osd02 | osd |
0 | ceph-osd03 | osd |
1 | ceph-mon11 | mon/mgr/osd |
1 | ceph-mds11 | mds/osd |
1 | ceph-osd11 | mds(※)/osd |
1 | ceph-osd12 | osd |
1 | ceph-osd13 | osd |
2 | ceph-mon21 | mon/mgr/osd |
2 | ceph-mds21 | mds/osd |
2 | ceph-osd21 | mds(※)/osd |
2 | ceph-osd22 | osd |
2 | ceph-osd23 | osd |
※ mdsはceph-mdsXXをactiveとし、ceph-osdXXをstandbyとします。
##OS準備
OSのインストールについては私が説明するよりも他サイトを参考にされた方がよいと思うのでここでは省略します。今回は__CentOS7__を利用しました。
cephを動かすためにデスクトップ環境は不要なのでMinimalを使いました。
公式のDownloadから適当なミラーを選んでダウンロードしましょう。
CentOS Project
##OS標準機能の設定
#####時刻同期
chronyを使って時刻同期設定を行います。参照可能なサーバを指定します。
今回は各グループのceph-monXXが既設NTPサーバと同期し、それ以外のノードは各グループのmonノードと同期するようにしました。
vi /etc/chrony.conf
monノードの場合、以下を追加
server [NTPサーバのIP] iburst
allow [他ノードのネットワークセグメント]
monノード以外の場合、以下を追加
server [monノードのIP] iburst
#####SSH
DNSを使う設定(デフォルト)の場合、名前で接続すると遅いことがあるので無効にします。
vi /etc/ssh/sshd_config
UseDNS no
#####FW
万が一うまく動かなかったときの原因切り分けがめんどくさいのでFWは止めておきます。
systemctl stop firewalld
systemctl disable firewalld
#####SELinux
FWと同様の理由で無効化しておきます。
vi /etc/selinux/config
SELINUX=disabled
#####hostsの編集
ノードとなるホスト名をhostsへ追記します。
vi /etc/hosts
192.168.1.101 ceph-mon01
192.168.1.102 ceph-mds01
192.168.1.103 ceph-osd01
・・・
192.168.1.111 ceph-mon11
・・・
192.168.1.121 ceph-mon21
・・・
192.168.1.125 ceph-osd23
#####パッケージ更新
とりあえず最新版にアップデートしておきます。
yum -y update
##追加機能の設定
#####dockerの追加
octopusではコンテナソフトが必須なのでdockerをインストールしました。イメージのpullはブートストラップを実行したときとクラスタにノードを追加したときに自動的に実行されます。そのため、ここではパッケージのみ入れておけば大丈夫です。
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
#####python3の追加
cephadmに必要だったような気がします。入れておかないと何か大事なコマンドが使えなかったはずです。(ごめんなさい忘れてしまいました。)
yum -y install python36
##おわりに
共通して全てのノードに必要な作業は以上です。
OSだけ先にインストールして、TeraTerm等で作業をすると効率的にできます。
hostsについては全ノードに同一のもの(15台記載)を設定する必要があるかどうかは不明です。
もしかしたら必要ないかもしれません。(monノードには恐らく必要だと思います。)
cephの個別設定については次の記事に投稿しようと思います。