ウェブサイト検索

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 の永続ストレージ

関連記事: