Ceph 18 (Reef) Storage Cluster を Ubuntu 22.04|20.04 にインストールする |
Ubuntu 22.04|20.04 Linux サーバーへの Ceph 18 (Reef) Storage Cluster のインストールをカバーする記事をまとめる予定でしたが、今日がその納品日です。 Ceph は、汎用ハードウェア上に分散ストレージ クラスターを構築するために設計されたソフトウェア Software-Defined Storage ソリューションです。 Ubuntu 22.04|20.04 上で Ceph 18 (Reef) ストレージ クラスターを構築するための要件は、目的のユースケースによって大きく異なります。
この設定は、ミッションクリティカルな大量の書き込みアプリケーションを実行するためのものではありません。このような要件 (特にネットワークとストレージ ハードウェア) については、プロジェクトの公式ドキュメントを参照する必要がある場合があります。以下は、このインストール ガイドで設定される標準 Ceph コンポーネントです。
- Ceph MON – 監視サーバー
- Ceph MDS – メタデータサーバー
- Ceph MGR – Ceph Manager デーモン
- Ceph OSD – オブジェクトストレージデーモン
Ceph 18 (Reef) Storage Cluster をセットアップするときに必要なパッケージがあります。これらは:
- パイソン3
- システムド
- コンテナを実行するための Podman または Docker
- 時刻同期(chronyやNTPなど)
- ストレージデバイスをプロビジョニングするためのLVM2
Ceph 18 (Reef) Storage Cluster を Ubuntu 22.04|20.04 にインストールする
Ubuntu 22.04|20.04 Linux サーバー上で Ceph 18 (Reef) Storage Cluster の展開を開始する前に、必要なサーバーを準備する必要があります。以下は、セットアップの準備ができているサーバーの写真です。
写真にあるように、私の研究室には次のサーバー名と IP アドレスがあります。
Server Hostname | Server IP Address | Ceph components | Server Specs |
ceph-mon-01 | 172.16.20.10 | Ceph MON, MGR,MDS | 8gb ram, 4vpcus |
ceph-mon-02 | 172.16.20.11 | Ceph MON, MGR,MDS | 8gb ram, 4vpcus |
ceph-mon-03 | 172.16.20.12 | Ceph MON, MGR,MDS | 8gb ram, 4vpcus |
ceph-osd-01 | 172.16.20.13 | Ceph OSD | 16gb ram, 8vpcus |
ceph-osd-02 | 172.16.20.14 | Ceph OSD | 16gb ram, 8vpcus |
ceph-osd-03 | 172.16.20.15 | Ceph OSD | 16gb ram, 8vpcus |
ステップ 1: 最初の監視ノードを準備する
デプロイメントに使用される Ceph コンポーネントは Cephadm です。 Cephadm は、マネージャー デーモンから SSH 経由でホストに接続し、Ceph デーモン コンテナーを追加、削除、または更新することによって Ceph クラスターをデプロイおよび管理します。
最初の監視ノードにログインします。
$ ssh root@ceph-mon-01
Warning: Permanently added 'ceph-mon-01,172.16.20.10' (ECDSA) to the list of known hosts.
Enter passphrase for key '/var/home/jkmutai/.ssh/id_rsa':
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-33-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Last login: Tue Jun 2 20:36:36 2020 from 172.16.20.10
root@ceph-mon-01:~#
すべての IP アドレスとホスト名のエントリを使用して /etc/hosts ファイルを更新します。
# vim /etc/hosts
127.0.0.1 localhost
# Ceph nodes
172.16.20.10 ceph-mon-01
172.16.20.11 ceph-mon-02
172.16.20.12 ceph-mon-03
172.16.20.13 ceph-osd-01
172.16.20.14 ceph-osd-02
172.16.20.15 ceph-osd-03
OS のアップデートとアップグレード:
sudo apt update && sudo apt -y upgrade
sudo systemctl reboot
Ansible およびその他の基本ユーティリティをインストールします。
sudo apt update
sudo apt -y install software-properties-common git curl vim bash-completion ansible
Ansible がインストールされていることを確認します。
$ ansible --version
ansible 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.8.2 (default, Apr 27 2020, 15:53:34) [GCC 9.3.0]
/usr/local/bin パスが PATH に追加されていることを確認します。
echo "PATH=\$PATH:/usr/local/bin" >>~/.bashrc
source ~/.bashrc
現在の PATH を確認します。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/bin
SSH キーを生成します。
$ ssh-keygen -t rsa -b 4096 -N '' -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:3gGoZCVsA6jbnBuMIpnJilCiblaM9qc5Xk38V7lfJ6U root@ceph-admin
The key's randomart image is:
+---[RSA 4096]----+
| ..o. . |
|. +o . |
|. .o.. . |
|o .o .. . . |
|o%o.. oS . o .|
|@+*o o… .. .o |
|O oo . ….. .E o|
|o+.oo. . ..o|
|o .++ . |
+----[SHA256]-----+
Cephadm をインストールするには 2 つの方法があります。このガイドでは、curl ベースのインストールを使用します。まず、リリース ページから最新のリリース バージョンを入手します。
取得したバージョンをエクスポートします。
CEPH_RELEASE=18.2.0
次に、次のコマンドを使用してバイナリをプルします。
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
chmod +x cephadm
sudo mv cephadm /usr/local/bin/
cephadm がローカルで使用できることを確認します。
cephadm --help
ステップ 2: Ansible を使用して他のノードを準備する
最初の Mon ノードを構成したら、Ansible プレイブックを作成してすべてのノードを更新し、ssh 公開キーをプッシュしてすべてのノードの /etc/hosts ファイルを更新します。
cd ~/
vim prepare-ceph-nodes.yml
以下の内容を変更して正しいタイムゾーンを設定し、ファイルに追加します。
---
- name: Prepare ceph nodes
hosts: ceph_nodes
become: yes
become_method: sudo
vars:
ceph_admin_user: cephadmin
tasks:
- name: Set timezone
timezone:
name: Africa/Nairobi
- name: Update system
apt:
name: "*"
state: latest
update_cache: yes
- name: Install common packages
apt:
name: [vim,git,bash-completion,lsb-release,wget,curl,chrony,lvm2]
state: present
update_cache: yes
- name: Create user if absent
user:
name: "{{ ceph_admin_user }}"
state: present
shell: /bin/bash
home: /home/{{ ceph_admin_user }}
- name: Add sudo access for the user
lineinfile:
path: /etc/sudoers
line: "{{ ceph_admin_user }} ALL=(ALL:ALL) NOPASSWD:ALL"
state: present
validate: visudo -cf %s
- name: Set authorized key taken from file to Cephadmin user
authorized_key:
user: "{{ ceph_admin_user }}"
state: present
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
- name: Install Docker
shell: |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker-ce.list
apt update
apt install -qq -y docker-ce docker-ce-cli containerd.io
- name: Reboot server after update and configs
reboot:
インベントリファイルを作成します。
$ vim hosts
[ceph_nodes]
ceph-mon-01
ceph-mon-02
ceph-mon-03
ceph-osd-01
ceph-osd-02
ceph-osd-03
キーのパスフレーズを使用する場合は、それを保存します。
$ eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa_jmutai
Agent pid 3275
Enter passphrase for /root/.ssh/id_rsa_jmutai:
Identity added: /root/.ssh/id_rsa_jkmutai (/root/.ssh/id_rsa_jmutai)
あるいは、すべてのホストで SSH キーをコピーすることもできますが、その前に、すべてのホストで root ログインが有効になっていることを確認してください。
$ sudo vim /etc/ssh/sshd_config
...
PermitRootLogin yes
....
ファイルを保存し、SSH を再起動します。
sudo systemctl restart sshd
次に、次のコマンドを使用して、生成されたノード上の SSH キーを他のすべてのホストにコピーします。
for host in ceph-mon-01 ceph-mon-02 ceph-mon-03 ceph-osd-01 ceph-osd-02 ceph-osd-03; do
ssh-copy-id root@$host
done
SSH を設定します。
tee -a ~/.ssh/config<<EOF
Host *
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
IdentitiesOnly yes
ConnectTimeout 0
ServerAliveInterval 300
EOF
プレイブックを実行します。
##As root with SSH keys:
$ ansible-playbook -i hosts prepare-ceph-nodes.yml
# As root user with default ssh key:
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --user root
# As root user with password:
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --user root --ask-pass
# As sudo user with password - replace ubuntu with correct username
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --user ubuntu --ask-pass --ask-become-pass
# As sudo user with ssh key and sudo password - replace ubuntu with correct username
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --user ubuntu --ask-become-pass
# As sudo user with ssh key and passwordless sudo - replace ubuntu with correct username
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --user ubuntu --ask-become-pass
# As sudo or root user with custom key
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --private-key /path/to/private/key <options>
私の場合は次を実行します:
$ ansible-playbook -i hosts prepare-ceph-nodes.yml --private-key ~/.ssh/id_rsa_jkmutai
実行出力:
PLAY [Prepare ceph nodes] ******************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************
ok: [ceph-mon-03]
ok: [ceph-mon-02]
ok: [ceph-mon-01]
ok: [ceph-osd-01]
ok: [ceph-osd-02]
ok: [ceph-osd-03]
TASK [Update system] ***********************************************************************************************************************************
changed: [ceph-mon-01]
changed: [ceph-mon-02]
changed: [ceph-mon-03]
changed: [ceph-osd-02]
changed: [ceph-osd-01]
changed: [ceph-osd-03]
TASK [Install common packages] *************************************************************************************************************************
changed: [ceph-mon-02]
changed: [ceph-mon-01]
changed: [ceph-osd-02]
changed: [ceph-osd-01]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
TASK [Add ceph admin user] *****************************************************************************************************************************
changed: [ceph-osd-02]
changed: [ceph-mon-02]
changed: [ceph-mon-01]
changed: [ceph-mon-03]
changed: [ceph-osd-01]
changed: [ceph-osd-03]
TASK [Create sudo file] ********************************************************************************************************************************
changed: [ceph-mon-02]
changed: [ceph-osd-02]
changed: [ceph-mon-01]
changed: [ceph-osd-01]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
TASK [Give ceph admin user passwordless sudo] **********************************************************************************************************
changed: [ceph-mon-02]
changed: [ceph-mon-01]
changed: [ceph-osd-02]
changed: [ceph-osd-01]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
TASK [Set authorized key taken from file to ceph admin] ************************************************************************************************
changed: [ceph-mon-01]
changed: [ceph-osd-01]
changed: [ceph-mon-03]
changed: [ceph-osd-02]
changed: [ceph-mon-02]
changed: [ceph-osd-03]
TASK [Set authorized key taken from file to root user] *************************************************************************************************
changed: [ceph-mon-01]
changed: [ceph-mon-02]
changed: [ceph-mon-03]
changed: [ceph-osd-01]
changed: [ceph-osd-02]
changed: [ceph-osd-03]
TASK [Install Docker] **********************************************************************************************************************************
changed: [ceph-mon-01]
changed: [ceph-mon-02]
changed: [ceph-osd-02]
changed: [ceph-osd-01]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
TASK [Reboot server after update and configs] **********************************************************************************************************
changed: [ceph-osd-01]
changed: [ceph-mon-02]
changed: [ceph-osd-02]
changed: [ceph-mon-01]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
PLAY RECAP *********************************************************************************************************************************************
ceph-mon-01 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-mon-02 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-mon-03 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-osd-01 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-osd-02 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-osd-03 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ノード上に作成された Ceph 管理者ユーザーとして ssh をテストします。
$ ssh cephadmin@ceph-mon-02
Warning: Permanently added 'ceph-mon-02,172.16.20.11' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-28-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.
cephadmin@ceph-mon-01:~$ sudo su -
root@ceph-mon-01:~# logout
cephadmin@ceph-mon-01:~$ exit
logout
Connection to ceph-mon-01 closed.
/etc/hosts を構成する
すべてのクラスター サーバーでホスト名に対してアクティブな DNS が構成されていない場合は、すべてのノードで /etc/hosts を更新します。
変更するプレイブックは次のとおりです。
$ vim update-hosts.yml
---
- name: Prepare ceph nodes
hosts: ceph_nodes
become: yes
become_method: sudo
tasks:
- name: Clean /etc/hosts file
copy:
content: ""
dest: /etc/hosts
- name: Update /etc/hosts file
blockinfile:
path: /etc/hosts
block: |
127.0.0.1 localhost
172.16.20.10 ceph-mon-01
172.16.20.11 ceph-mon-02
172.16.20.12 ceph-mon-03
172.16.20.13 ceph-osd-01
172.16.20.14 ceph-osd-02
172.16.20.15 ceph-osd-03
実行中のプレイブック:
$ ansible-playbook -i hosts update-hosts.yml --private-key ~/.ssh/id_rsa_jmutai
PLAY [Prepare ceph nodes] ******************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************
ok: [ceph-mon-01]
ok: [ceph-osd-02]
ok: [ceph-mon-03]
ok: [ceph-mon-02]
ok: [ceph-osd-01]
ok: [ceph-osd-03]
TASK [Clean /etc/hosts file] ***************************************************************************************************************************
changed: [ceph-mon-02]
changed: [ceph-mon-01]
changed: [ceph-osd-01]
changed: [ceph-osd-02]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
TASK [Update /etc/hosts file] **************************************************************************************************************************
changed: [ceph-mon-02]
changed: [ceph-mon-01]
changed: [ceph-osd-01]
changed: [ceph-osd-02]
changed: [ceph-mon-03]
changed: [ceph-osd-03]
PLAY RECAP *********************************************************************************************************************************************
ceph-mon-01 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-mon-02 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-mon-03 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-osd-01 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-osd-02 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ceph-osd-03 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
任意のノードに接続して確認します。
ssh cephadmin@ceph-mon-01
接続したら、次のように hosts ファイルを表示します。
$ cat /etc/hosts
# BEGIN ANSIBLE MANAGED BLOCK
127.0.0.1 localhost
172.16.20.10 ceph-mon-01
172.16.20.11 ceph-mon-02
172.16.20.12 ceph-mon-03
172.16.20.13 ceph-osd-01
172.16.20.14 ceph-osd-02
172.16.20.15 ceph-osd-03
# END ANSIBLE MANAGED BLOCK
ステップ 3: Ceph Storage Cluster を Ubuntu 22.04|20.04 にデプロイする
Ubuntu 22.04|20.04 で新しい Ceph クラスターをブートストラップするには、最初のモニター アドレス (IP またはホスト名) が必要です。
sudo mkdir -p /etc/ceph
cephadm bootstrap \
--mon-ip 172.16.20.10 \
--initial-dashboard-user admin \
--initial-dashboard-password Str0ngAdminP@ssw0rd
実行出力:
INFO:cephadm:Verifying podman|docker is present...
INFO:cephadm:Verifying lvm2 is present...
INFO:cephadm:Verifying time synchronization is in place...
INFO:cephadm:Unit chrony.service is enabled and running
INFO:cephadm:Repeating the final host check...
INFO:cephadm:podman|docker (/usr/bin/docker) is present
INFO:cephadm:systemctl is present
INFO:cephadm:lvcreate is present
INFO:cephadm:Unit chrony.service is enabled and running
INFO:cephadm:Host looks OK
INFO:root:Cluster fsid: 8dbf2eda-a513-11ea-a3c1-a534e03850ee
INFO:cephadm:Verifying IP 172.16.20.10 port 3300 ...
INFO:cephadm:Verifying IP 172.16.20.10 port 6789 ...
INFO:cephadm:Mon IP 172.16.20.10 is in CIDR network 172.31.1.1
INFO:cephadm:Pulling latest docker.io/ceph/ceph:v15 container...
INFO:cephadm:Extracting ceph user uid/gid from container image...
INFO:cephadm:Creating initial keys...
INFO:cephadm:Creating initial monmap...
INFO:cephadm:Creating mon...
INFO:cephadm:Waiting for mon to start...
INFO:cephadm:Waiting for mon...
INFO:cephadm:mon is available
INFO:cephadm:Assimilating anything we can from ceph.conf...
INFO:cephadm:Generating new minimal ceph.conf...
INFO:cephadm:Restarting the monitor...
INFO:cephadm:Setting mon public_network...
INFO:cephadm:Creating mgr...
INFO:cephadm:Wrote keyring to /etc/ceph/ceph.client.admin.keyring
INFO:cephadm:Wrote config to /etc/ceph/ceph.conf
INFO:cephadm:Waiting for mgr to start...
INFO:cephadm:Waiting for mgr...
INFO:cephadm:mgr not available, waiting (1/10)...
INFO:cephadm:mgr not available, waiting (2/10)...
INFO:cephadm:mgr not available, waiting (3/10)...
INFO:cephadm:mgr not available, waiting (4/10)...
.....
INFO:cephadm:Waiting for Mgr epoch 13...
INFO:cephadm:Mgr epoch 13 is available
INFO:cephadm:Generating a dashboard self-signed certificate...
INFO:cephadm:Creating initial admin user...
INFO:cephadm:Fetching dashboard port number...
INFO:cephadm:Ceph Dashboard is now available at:
URL: https://ceph-mon-01:8443/
User: admin
Password: Str0ngAdminP@ssw0rd
INFO:cephadm:You can access the Ceph CLI with:
sudo /usr/local/bin/cephadm shell --fsid 8dbf2eda-a513-11ea-a3c1-a534e03850ee -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Or, if you are only running a single cluster on this host:
sudo /usr/local/bin/cephadm shell
INFO:cephadm:Please consider enabling telemetry to help improve Ceph:
ceph telemetry on
For more information see:
https://docs.ceph.com/docs/master/mgr/telemetry/
INFO:cephadm:Bootstrap complete.
Ceph ツールをインストールします。まず、目的の Ceph リリースのリポジトリを追加します。
リリース 18.* の場合は、次を使用します。
cephadm add-repo --release reef
追加したら、必要なツールをインストールします。
cephadm install ceph-common
インストールを確認します。
$ ceph -v
ceph version 18.2.0 (5dd24139a1eada541a3bc16b6941c5dde975e26d) reef (stable)
追加のモニターがある場合は、以下のコマンドを実行して追加します。
##Copy Ceph SSH key##
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-mon-02
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-mon-03
## Add nodes to the cluster ##
ceph orch host add ceph-mon-02
ceph orch host add ceph-mon-03
##Label the nodes with mon ##
ceph orch host label add ceph-mon-01 mon
ceph orch host label add ceph-mon-02 mon
ceph orch host label add ceph-mon-03 mon
## Apply configs##
ceph orch apply mon ceph-mon-02
ceph orch apply mon ceph-mon-03
ホストとラベルのリストを表示します。
# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-mon-01 172.16.20.10 _admin,mon
ceph-mon-02 172.16.20.11 mon
ceph-mon-03 172.16.20.12 mon
3 hosts in cluster
実行中のコンテナ:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d666ae63232 prom/alertmanager "/bin/alertmanager -…" 3 minutes ago Up 3 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-alertmanager.ceph-mon-01
4e7ccde697c7 prom/prometheus:latest "/bin/prometheus --c…" 3 minutes ago Up 3 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-prometheus.ceph-mon-01
9fe169a3f2dc ceph/ceph-grafana:latest "/bin/sh -c 'grafana…" 8 minutes ago Up 8 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-grafana.ceph-mon-01
c8e99deb55a4 prom/node-exporter "/bin/node_exporter …" 8 minutes ago Up 8 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-node-exporter.ceph-mon-01
277f0ef7dd9d ceph/ceph:v15 "/usr/bin/ceph-crash…" 9 minutes ago Up 9 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-crash.ceph-mon-01
9de7a86857aa ceph/ceph:v15 "/usr/bin/ceph-mgr -…" 10 minutes ago Up 10 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-mgr.ceph-mon-01.qhokxo
d116bc14109c ceph/ceph:v15 "/usr/bin/ceph-mon -…" 10 minutes ago Up 10 minutes ceph-8dbf2eda-a513-11ea-a3c1-a534e03850ee-mon.ceph-mon-01
ステップ 4: Ceph OSD のデプロイ
クラスターの公開 SSH キーを新しい OSD ノードの root ユーザーのauthorized_keys ファイルにインストールします。
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd-01
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd-02
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd-03
新しいノードがクラスターの一部であることを Ceph に伝えます。
## Add hosts to cluster ##
ceph orch host add ceph-osd-01
ceph orch host add ceph-osd-02
ceph orch host add ceph-osd-03
##Give new nodes labels ##
ceph orch host label add ceph-osd-01 osd
ceph orch host label add ceph-osd-02 osd
ceph orch host label add ceph-osd-03 osd
ストレージ ノード上のすべてのデバイスを表示します。
# ceph orch device ls
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
ceph-osd-01 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 5120M Yes 79s ago
ceph-osd-02 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 5120M Yes 38s ago
ceph-osd-03 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 5120M Yes 38s ago
次の条件がすべて満たされる場合、 ストレージ デバイスは利用可能であるとみなされます。
- デバイスにはパーティションがあってはなりません。
- デバイスには LVM 状態があってはなりません。
- デバイスをマウントしないでください。
- デバイスにはファイル システムが含まれていてはなりません。
- デバイスには Ceph BlueStore OSD が含まれていてはなりません。
- デバイスは 5 GB より大きい必要があります。
Ceph に、利用可能な未使用のストレージ デバイス (私の場合は/dev/sdb) を消費するように指示します。
# ceph orch daemon add osd ceph-osd-01:/dev/sdb
Created osd(s) 0 on host 'ceph-osd-01'
# ceph orch daemon add osd ceph-osd-02:/dev/sdb
Created osd(s) 1 on host 'ceph-osd-02'
# ceph orch daemon add osd ceph-osd-03:/dev/sdb
Created osd(s) 1 on host 'ceph-osd-03'
Ceph クラスターのステータスを確認します。
# ceph -s
cluster:
id: a0438f44-471b-11ee-8b36-25e1769b22fc
health: HEALTH_OK
services:
mon: 2 daemons, quorum ceph-mon-01,ceph-mon-03 (age 10m)
mgr: ceph-mon-01.ixlvxj(active, since 12m), standbys: ceph-mon-02.ltlamn
osd: 3 osds: 3 up (since 40s), 3 in (since 59s)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 83 MiB used, 15 GiB / 15 GiB avail
pgs: 1 active+clean
ステップ 5: Ceph ダッシュボードにアクセスする
Ceph ダッシュボードは、上記の ceph -s
コマンドで特定されたアクティブな MGR サーバーのアドレスで利用できるようになりました。
この場合、https://ceph-mon-01:8443/ になります。
サービスにアクセスできない場合は、MGR ホスト上のファイアウォールの通過がポートに許可されていることを確認してください。
sudo ufw allow 8443
認証情報を使用してログインし、Ceph 管理ダッシュボードにアクセスします。
User: admin
Password: Str0ngAdminP@ssw0rd
接続したら、新しいパスワードを設定します。
新しいパスワードでログインし、Cephadm と Containers を使用して Ubuntu 22.04|20.04 で Ceph Storage Cluster の管理をお楽しみください。
次回の記事では、OSD の追加、削除、RGW の構成などについて説明します。常に接続してアップデートを入手してください。
詳細については、このページをご覧ください:
- CentOS |Rocky Linux|Alma Linux に Ceph クラスターをインストールする
- Ceph vs GlusterFS vs MooseFS vs HDFS vs DRBD
- Ceph Storage Cluster でのプールの作成
- Ceph RBD を使用した Kubernetes の永続ストレージ