banner
云野阁

云野阁

闲云野鹤,八方逍遥

cephクラスター展開ガイド

タスク目標#

  1. ceph クラスタの展開を完了する

タスクプラットフォーム#

  1. 物理デバイス --
  2. オペレーティングシステム:openEuler 22.03 LTS SP2

展開ガイド#

タスク 1:設定準備#

  1. ホスト名の変更
# 10.10.3.117のホスト名をfuture-ceph-node0に変更
hostnamectl set-hostname future-ceph-node0 && bash
# 10.10.3.118のホスト名をfuture-ceph-node1に変更
hostnamectl set-hostname future-ceph-node1 && bash
# 10.10.3.119のホスト名をfuture-ceph-node2に変更
hostnamectl set-hostname future-ceph-node2 && bash
# 10.10.3.120のホスト名をfuture-ceph-node3に変更
hostnamectl set-hostname future-ceph-node3 && bash
  1. インストール前の設定変更
# ファイアウォールを停止
systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state
 
# selinuxを永久に無効化
setenforce 0
 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
cat /etc/selinux/config


# hostsの追加
cat >> /etc/hosts << EOF
10.10.3.117 future-ceph-node0
10.10.3.118 future-ceph-node1
10.10.3.119 future-ceph-node2
10.10.3.120 future-ceph-node3
EOF
#確認
cat /etc/hosts


# 時間の同期
yum install ntp -y
systemctl start ntpd
systemctl enable ntpd
yum install chrony  -y
systemctl start chronyd
systemctl enable chronyd
# 設定を変更し、内容を追加
echo "
server 10.10.3.70 iburst
allow 10.10.3.0/24
" >> /etc/chrony.conf
timedatectl set-ntp true
systemctl restart chronyd
timedatectl status
date

ノード間のSSH通信を追加
ssh-keygen -t rsa
ssh-copy-id 10.10.3.118
ssh-copy-id 10.10.3.119
ssh-copy-id 10.10.3.120

タスク 2:Ceph を分散ストレージとして展開#

設定ダウンロードソース

echo "[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
" >/etc/yum.repos.d/ceph.repo

python2 をダウンロード

  1. zlibライブラリをインストールしないと、pip をインストールする際にエラーが発生します(再コンパイルが必要です)
 yum -y install zlib*
  1. GCC パッケージをインストールします。GCC がインストールされていない場合は、以下のコマンドを使用してインストールしてください。
yum -y install gcc openssl-devel bzip2-devel
  1. Python-2.7.18 をダウンロード
 cd /usr/src
 yum -y install wget
 wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
 tar xzf Python-2.7.18.tgz
  1. コンパイルの前に、インストールソースファイルの Modules/Setup.dist ファイルを修正し、コメントを外します。
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
  1. Python-2.7.18 をコンパイルします(make altinstallはデフォルトの python バイナリファイル /usr/bin/python を置き換えないようにします)。
cd /usr/src/Python-2.7.18
./configure --enable-optimizations
yum install -y make
make altinstall

元の Python バイナリファイルを上書きしたりリンクしたりしないでください。これによりシステムが壊れる可能性があります。

  1. 環境変数を設定します。
vi /etc/profile
export PYTHON_HOME=/usr/local/
PATH=$PATH:$PYTHON_HOME/bin
source /etc/profile
  1. pip のインストールスクリプトをダウンロードします。
curl "https://bootstrap.pypa.io/pip/2.7/get-pip.py" -o "get-pip.py"
  1. インストールスクリプトを実行してダウンロードします。
python2.7 get-pip.py 

ceph をダウンロード

# future-ceph-node0でダウンロード
pip2 install ceph-deploy
yum install -y ceph ceph-radosgw
# 他のノードでダウンロード
yum install -y ceph ceph-radosgw
# インストールパッケージが完全であるか確認
rpm -qa |egrep -i "ceph|rados|rbd"

ceph クラスタの展開#

管理ノード#
Monitor の展開
  1. 設定ファイルディレクトリを作成し、設定ファイルを作成します。
mkdir /etc/ceph/
touch /etc/ceph/ceph.conf
  1. クラスタの FSDI を生成します:
uuidgen
38ac0084-40b7-4c93-b561-a16d6a6478c5
  1. クラスタのためにキーリングを作成し、Monitor サービスのためにキーを生成します:
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
  1. 管理者キーリングを作成し、client.admin ユーザーを生成し、このユーザーをキーリングに追加します:
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
  1. bootstrap-osd キーリングを作成し、client.bootstrap-osd ユーザーをこのキーリングに追加します:
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'
  1. 生成されたキーを ceph.mon.keyring に追加します。
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
  1. ホスト名と IP アドレス、FSID を使用して monitor マップを生成します:
monmaptool --create --add future-ceph-node0 10.10.3.117 --fsid 79fd2206-39ca-4ec4-9cd2-96e065c6361e /tmp/monmap
  1. mon のディレクトリを作成し、クラスタ名-ホスト名の形式を使用します:
 mkdir  /var/lib/ceph/mon/ceph-future-ceph-node0
  1. 最初の mon デーモンの情報を入力します:
ceph-mon --mkfs -i future-ceph-node0 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
  1. /etc/ceph/ceph.conf ファイルを設定します:
cat /etc/ceph/ceph.conf
################################################
[global]
fsid = 79fd2206-39ca-4ec4-9cd2-96e065c6361e     # 生成されたFSID
mon initial members =future-ceph-node0
mon host = 10.10.3.117
public network = 10.10.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1

################################################
  1. root で操作しているため、権限を ceph に設定する必要があります(systemd の起動ファイルを変更して ceph ユーザーを root に変更することもできます)、そして Monitor を起動します。
chown  -R ceph:ceph /var/lib/ceph
systemctl start [email protected]
systemctl enable [email protected]
  1. サービスが正常に起動していることを確認します:
ceph -s
yum install -y net-tools
netstat -lntp|grep ceph-mon
Manager の展開

ceph-mon サービスを設定した後、ceph-mgr サービスを設定する必要があります。

  1. 認証キーを生成します(ceph-mgr はカスタム名です):
# 10.10.3.117
ceph auth get-or-create mgr.ceph-mgr mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.ceph-mgr]
        key = AQBMNTZl5adxEhAAk6Jk/CKNWUyNb2DoKXUPvQ==
        
# 10.10.3.118
ceph auth get-or-create mgr.ceph-mgr1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.ceph-mgr1]
        key = AQDbRTZlgjXWBBAAGew4Xta+t9vgIWPCWC8EVg==
  1. このキーを保存するファイルのディレクトリを作成します。
# 10.10.3.117
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph-mgr
# 生成されたキーをこのディレクトリに保存し、keyringと名付けます。
vi /var/lib/ceph/mgr/ceph-ceph-mgr/keyring 
[mgr.ceph-mgr]
        key = AQBMNTZl5adxEhAAk6Jk/CKNWUyNb2DoKXUPvQ==
        
# 10.10.3.118
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph-mgr1
# 生成されたキーをこのディレクトリに保存し、keyringと名付けます。
vi /var/lib/ceph/mgr/ceph-ceph-mgr1/keyring 
[mgr.ceph-mgr1]
        key = AQDbRTZlgjXWBBAAGew4Xta+t9vgIWPCWC8EVg==
  1. ceph-mgr サービスを起動します。
ceph-mgr -i ceph-mgr
ceph-mgr -i ceph-mgr1
systemctl enable ceph-mgr@future-ceph-node0
systemctl enable ceph-mgr@future-ceph-node1
# サービスが起動しているか確認し、cephの状態を確認します。
ceph -s
# 現在のmgrで利用可能なモジュールを確認します。
ceph mgr module ls
OSD の作成
ceph-volume lvm create --data /dev/sdb
# 現在のlvm論理ボリュームを確認します。
ceph-volume lvm list
# cephの状態を確認します。
ceph -s
Ceph-dashboard のインストールと設定
  1. dashboard 機能を有効にします。
ceph mgr module enable dashboard
  1. 証明書を作成します。
ceph dashboard create-self-signed-cert
  1. web ログインのユーザー名とパスワードを設定します。
 # /etc/ceph/dashboard.keyを作成し、パスワードを書き込みます。
 echo "パスワード" >/etc/ceph/dashboard.key
 ceph dashboard ac-user-create k8s administrator -i /etc/ceph/dashboard.key
  1. dashboard のデフォルトポートを変更します(オプション)

ポートを設定します。デフォルトポートは 8443 で、18443 に変更します。変更後、mgr を再起動する必要があります。ポートが有効になります。

ceph config set mgr mgr/dashboard/server_port 18443
systemctl restart ceph-mgr.target
  1. サービスアドレスを確認し、ログインします。
ceph mgr services

{

​ "dashboard": "https://future-ceph-node0:8443/"

}

image-20240323222001957-1711203607034-1

node ノード#
Monitor の拡張
  1. マスターノードの設定を変更します。
vi /etc/ceph/ceph.conf
[global]
fsid = 79fd2206-39ca-4ec4-9cd2-96e065c6361e     # 生成されたFSID
mon initial members =future-ceph-node0,future-ceph-node1,future-ceph-node2,future-ceph-node3            # ホスト名
mon host = 10.10.3.117,10.10.3.118,10.10.3.119,10.10.3.120                       # 対応するIP
public network = 10.10.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
[mon]
mon allow pool delete = true

[mds.future-ceph-node0]
host = future-ceph-node0
  1. 設定とキーリングファイルを他のノードに配布します(マスターノード)。
# 公開鍵を生成し、nodeノードのホストにコピーします。
ssh-keygen -t rsa
ssh-copy-id 10.10.3.118
ssh-copy-id 10.10.3.119
ssh-copy-id 10.10.3.120
# 認証キーをコピーします。
scp /etc/ceph/*  10.10.3.118:/etc/ceph/
scp /etc/ceph/*  10.10.3.119:/etc/ceph/
scp /etc/ceph/*  10.10.3.120:/etc/ceph/
  1. node ノードで ceph 関連のディレクトリを作成し、権限を追加します:
mkdir -p  /var/lib/ceph/{bootstrap-mds,bootstrap-mgr,bootstrap-osd,bootstrap-rbd,bootstrap-rgw,mds,mgr,mon,osd}
chown  -R ceph:ceph /var/lib/ceph

sudo -u ceph mkdir /var/lib/ceph/mon/ceph-future-ceph-node1
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-future-ceph-node2
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-future-ceph-node3
  1. node ノードの設定ファイルを変更します。node1 の例(他のノードも同様)。
[global]
fsid = 79fd2206-39ca-4ec4-9cd2-96e065c6361e     # 生成されたFSID
mon initial members =future-ceph-node0,future-ceph-node1,future-ceph-node2,future-ceph-node3            # ホスト名
mon host = 10.10.3.117,10.10.3.118,10.10.3.119,10.10.3.120                       # 対応するIP
public network = 10.10.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
[mon]
mon allow pool delete = true

[mon.future-ceph-node1]
mon_addr = 10.10.3.118:6789
host = future-ceph-node1
  1. クラスタ内のキーとマップを取得します。node1 の例(他のノードも同様)。
ceph auth get mon. -o /tmp/monkeyring
ceph mon getmap -o /tmp/monmap
  1. 既存のキーとマップを使用して新しい Monitor を追加し、ホスト名を指定します。node1 の例(他のノードも同様)。
sudo -u ceph ceph-mon --mkfs -i future-ceph-node1 --monmap /tmp/monmap --keyring /tmp/monkeyring
  1. サービスを起動します。node1 の例(他のノードも同様)。
systemctl start ceph-mon@future-ceph-node1
systemctl enable ceph-mon@future-ceph-node1
# monの状態を確認します。
ceph -s
ceph mon stat
OSD の追加

既存の osd のマスターノードから初期化されたキーリングファイルをコピーします。

scp -p  /var/lib/ceph/bootstrap-osd/ceph.keyring  10.10.3.118:/var/lib/ceph/bootstrap-osd/
scp -p  /var/lib/ceph/bootstrap-osd/ceph.keyring  10.10.3.119:/var/lib/ceph/bootstrap-osd/
scp -p  /var/lib/ceph/bootstrap-osd/ceph.keyring  10.10.3.120:/var/lib/ceph/bootstrap-osd/

node ノードに osd を追加します。

ceph-volume lvm create --data /dev/sdb

systemctl restart ceph-osd@future-ceph-node1
systemctl enable ceph-osd@future-ceph-node1
# 状態を確認します。
ceph -s

Mds の追加#

# ディレクトリを作成します。
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-future-ceph-node0
# キーを作成します。
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-future-ceph-node0/keyring --gen-key -n mds.future-ceph-node0
# キーをインポートし、capsを設定します。
ceph auth add mds.future-ceph-node0 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-future-ceph-node0/keyring
# 手動でサービスを起動します。
ceph-mds --cluster ceph -i future-ceph-node0 -m future-ceph-node0:6789
 chown -R ceph:ceph /var/lib/ceph/mds/
 systemctl start ceph-mds@future-ceph-node0
 systemctl enable ceph-mds@future-ceph-node0
 # サービスが起動しているか確認します。
 ps -ef|grep ceph-mds
 # cephクラスタの状態を確認します。
 ceph -s

CephFS の作成#

プールを作成します。

# データを保存します。
ceph osd pool create cephfs_data 64
# メタデータを保存します。
ceph osd pool create cephfs_metadata 64
# cephfsファイルシステムを有効にします。
ceph fs new cephfs cephfs_metadata cephfs_data
# ファイルシステムの状態を確認します。
ceph fs ls
ceph mds stat
  1. cephfs をマウントします。

カーネルドライバでマウントします。

# 依存関係をインストールします。
yum install -y ceph-common
# マウントポイントを作成します。
mkdir /data
# ストレージキーを取得します(管理ノード)。
cat /etc/ceph/ceph.client.admin.keyring
# 117の/dataを他のホストの/dataにマウントします。
 mount -t ceph 10.10.3.117:6789:/ /data -o name=admin,secret=AQBLfS9l612IGhAAOF1iJqT6+rHJPCxqQegqCA==
 
 # アンマウントします。
umount /data  

ユーザー制御でマウントします。

yum install ceph-fuse -y
# 他のホストにマウントします。
ceph-fuse -m  10.10.3.117:6789 /data
# マウント設定を確認します。
df -h |grep code

# アンマウントします。
fusermount -u /mnt/cephfs

rbd プールの作成#

# rbdプールを作成します。
ceph osd pool create rbd-k8s 64 64
# 有効にします。
ceph osd pool application enable rbd-k8s rbd
# 初期化します。
rbd pool init rbd-k8s
# 確認します。
ceph osd lspools
# イメージを確認します。
 rbd ls rbd-k8s
 # イメージ情報を確認します。
 rbd info --pool rbd-k8s --image mars-c09bb992-963e-43dd-8e5c-e3a1d723b1c8 
# イメージをマッピングします。
 rbd map  --pool rbd-k8s --image mars-c09bb992-963e-43dd-8e5c-e3a1d723b1c8
 # フォーマットします。
 mkfs.ext4 /dev/rbd0
 # ローカルにマウントします。
  mount /dev/rbd0 /data/code
  # 確認します。
  lsblk
  # アンマウントします。
   umount /dev/rbd0
   # マッピングを解除します。
   rbd unmap /dev/rbd0
   
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。