Ceph14.2.22 クラスターのデプロイメントと落とし穴ガイド (純粋なイントラネット環境、yum ソース、時刻同期なし)

目次

準備

必要なリソース:

ローカルの yum ソースの構築

その他の準備:

SELinuxをオフにする

ホスト名の変更、ホストの追加

時刻同期がオンになっていることを確認してください

yum は関連パッケージをインストールします

いくつかの ceph コマンド


初めての ceph のデプロイに関しては、以前は新しいユーザーを作成して領域を割り当てるだけで、自分でデプロイしたことはなく、実際の制作や運用の経験も比較的浅く、せいぜい ceph から ceph へのデータ移行を行った程度でした。以前は Alibaba Cloud OSS でした。

イントラネット環境なので、一部のパッケージのアップロードを除いて、基本的に外部ネットワークから隔離されており、操作インターフェースも非常に不快で、すぐに終わると思っていましたが、実際には完了するまでに午後1日近くかかりました。 、いくつかの落とし穴に遭遇しましたが、幸いなことに金曜日の仕事が終わる前に解決されました。

この記事は簡単に記録されています。同じ質問がある場合は、直接プライベート メッセージを送信できます。

♦️

準備

準備

実際には、準備作業が大変でしたが、新しいホストは別の部門から提供されたため、基本的な初期化作業がいくつか行われず、ユーザーは一般ユーザーのみを提供しました。

必要なリソース:

ホストリスト コンポーネントのデプロイ
192.168.20.2 ceph-mon、ceph-mgr
192.168.20.3 ceph-mon、ceph-mgr、ceph-osd
192.168.20.4 ceph-mon、ceph-osd

ホストリソースに加えてデプロイメントパッケージもあり、イントラネット環境のため外部ネットワークのyumソースにアクセスできないため、対応するパッケージを自分でダウンロードし、サーバーにアクセスして独自のyumソースをデプロイする必要があります関連するパッケージは 2 つの主要な部分に分かれており、1 つはインストール ノードに ceph-deploy をデプロイする必要があること、もう 1 つは ceph の他のパッケージです。

これらの rpm パッケージをダウンロードするときは、Alibaba Cloud のソースを使用します。rpm パッケージのダウンロードに加えて、rpm パッケージ間の依存関係が含まれる対応するリポデータもダウンロードする必要があります。独自のローカル ソースを構築する場合は、 が必要です。

ラップトップで gitbash を使用してダウンロードしました。次の 2 つのコマンドで、対応するパッケージを準備できます。

#ceph rpm包for i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done# ceph repodatafor i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done

さらに、ceph-deploy の準備は、次のような別のパスです。

rpm パッケージと repodata パッケージも準備する必要があります。ceph-deploy は 2.0.1 を使用します。現在サーバーで利用可能なパッケージを直接確認することもできます yum list|grep ceph-deploy

for i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done

ローカルの yum ソースの構築

以前の記事では ng をプロキシとして転送していることが多かったのですが、ここではローカルファイルを直接 yum ソースとして利用しており、各ホストでの操作が必要ですが、もう ng は使いたくありません。

vim /etc/yum.repos.d/ceph.repo

[ceph]name=cephbaseurl=file:///data/mirrors/cephgpgcheck=0priority=1

ダウンロードした rpm パッケージと repodata フォルダーをこのフォルダーの下に配置し、構成後に実行する必要があります。

​​​​​​​

yum clean allyum makecacheyum repolist

実行中にエラーは報告されません。yum list|grep cephで該当するパッケージがあるか確認してください。あれば問題ありません。3台のマシンで同じ操作を行う必要があり、少々面倒です。

また、ceph-deploy がデプロイされているホストでは、ceph-deploy の yum ソースを追加する必要がありますが、手順は同じです。

この時点で、yum ソースは基本的に確立されます。

その他の準備

ファイアウォールをオフにする: 以前は、内部ミラーリングまたは一部のクラウド ホストが基本的にオフになっていたため、この手順は基本的に不要でした。

​​​​​​​

systemctl stop firewalldsystemctl disable firewalld

selinuxを閉じる

#一般也是关闭的,没关的话下面两步都要做#重启后生效,防止主机异常重启sed -i 's/enforcing/disabled/' /etc/selinux/config  #即时生效setenforce 0  

ホスト名の変更、ホストの追加

​​​​​​​

#修改主机名hostnamectl set-hostname  ceph1#添加hostcat >> /etc/hosts << EOF192.168.20.2 ceph1192.168.20.3 ceph2192.168.20.4 ceph3EOF

時刻同期がオンになっていることを確認してください

これも後々落とし穴となり、monサービスが常に異常となるのですが、イントラネット環境で内部時刻同期サービスがないため、マスターノードをサーバー、残りの2台をクライアントとして利用することになります。最初に同期が設定されていますが、反映されませんでした。時間を調整してから、時間が同期されているかどうか、および設定が成功したかどうかを観察することをお勧めします。
​​​​​

#可以使用ntp或者chrony#安装chrony服务yum install chrony -y#主节点配置文件修改
vim /etc/chrony.confserver 192.168.20.2 iburstallow 192.168.20.0/24 local stratum 10#ceph2、ceph3配置server 192.168.20.2 iburst#三台重启chrongyd服务
systemctl restart chrongydsystemctl enable chronyd#其它命令chronyc -a makestepchronyc sourcestatschronyc sources -v

chronycsources -v コマンドを実行した後、返された結果の先頭が ^* であるかどうかを確認します。^? である場合は、時刻同期に問題があることを意味するため、確認する必要があります。

この時点で、基本的な準備作業は完了しており、後で完全な展開プロセスが開始されます。

♦️

クラスターの展開

yum は関連パッケージをインストールします

Ceph1の実行

yum install python-setuptools ceph-deploy -y#注意查看 ceph-deploy 的版本  ceph-deploy --version

ceph1、ceph2、ceph3の実行

yum install -y ceph ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-mgr

関連するパッケージがデプロイされた後、最初にクラスターが初期化されます。

mkdir /data/my-clustercd /data/my-clusterceph-deploy new  ceph1

実行中に例外がないことを確認してください

#mon服务的初始化ceph-deploy mon create-initial#将配置文件拷贝到对应的节点ceph-deploy admin ceph2 ceph3#如果想部署高可用的monitor ,可以将ceph2也加入mon集群ceph-deploy mon add ceph2# 复制ceph 相关文件,执行后可以使用ceph -scp ceph.client.admin.keyring /etc/ceph/

#ここでいくつかの情報を確認してください。これは、展開を確実にし、先に進むための条件です。

1.ceph -s クラスターは HEALTH OK 状態です

2. mon プロセスはありますか?

3.Monサービスが実行されているかどうかを確認する

上記の 3 つのステップは実際には同じことを意味します。健康状態に問題がない場合は、次の 2 つのステップを読む必要はありません。

正常でない場合は、おそらく 2 つの例外が考えられます。1 つは時刻同期例外のエラー、もう 1 つはセーフ モードの問題です。

#时间同步异常报错clock skew detected on mon.node2#禁用不 安全模式 报错“mon is allowing insecure global_id reclaim”ceph config set mon auth_allow_insecure_global_id_reclaim false

mon が正常性を確認したら、mgr のデプロイを続行します。

​​​​​​​

ceph-deploy mgr create ceph1#如果想部署高可用mgr,可以将ceph2、ceph3也添加进来ceph-deploy mgr create ceph2

デプロイ後は、ceph -s のステータスが正常であるか、関連するプロセスやサービスが正常であるかどうかも確認してください。

ps -ef|grep mgr プロセスは存在します

ここで発生した問題は、初期化には問題はなかったものの、mgr プロセスが正常に戻らなかったことです。サービスの起動ログを確認したところ、/var 下の mgr のディレクトリ権限が root であることがわかりました。サービスの起動はceph ユーザーなので、権限を変更するには chown する必要があります。

その後、サービスを再起動すると、プロセスは正常に完了します。

mgr が終了したら、osd の初期化を続けます。この手順の前に、事前にディスクを準備する必要があります。フォーマットされていないことが最善です。そうでない場合は、クリーンアップ手順を実行する必要があります。

ceph-deploy disk zap ceph1 /dev/sda3#然后添加 osdceph-deploy osd create --data /dev/sda3 ceph2ceph-deploy osd create --data /dev/sda3 ceph3

追加後、プロセスサービスが正常かどうかも確認してください。

いくつかの ceph コマンド

​​​​​​​

#检查集群状态命令ceph -s# 查看osd状态ceph osd status#列出所有ceph服务systemctl status ceph\*.service ceph\*.target#启动所有服务的守护进程systemctl start ceph.target#停止所有服务的守护进程systemctl stop ceph.target#按照服务类型启动服务守护进程systemctl start ceph-osd.targetsystemctl start ceph-mon.targetsystemctl start ceph-mds.target

デプロイメントプロセス中に問題が発生し、ロールバックしたい場合は、次のコマンドを使用できます。今回のデプロイメント中に 2 回ロールバックし、3 回目で最終的にデプロイメントが成功しました。

#这步 部署的yum包也会删除ceph-deploy purge ceph1 ceph2 ceph3ceph-deploy forgetkeys

この時点で基本的な展開は終わっていますが、正式に利用する場合はその後のメンテナンスが始まったばかりで、具体的なものであれば今後もアップデートが行われます。

おすすめ

転載: blog.csdn.net/smallbird108/article/details/125963911