目次
初めての 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 repodata
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-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=ceph
baseurl=file:///data/mirrors/ceph
gpgcheck=0
priority=1
ダウンロードした rpm パッケージと repodata フォルダーをこのフォルダーの下に配置し、構成後に実行する必要があります。
yum clean all
yum makecache
yum repolist
実行中にエラーは報告されません。yum list|grep cephで該当するパッケージがあるか確認してください。あれば問題ありません。3台のマシンで同じ操作を行う必要があり、少々面倒です。
また、ceph-deploy がデプロイされているホストでは、ceph-deploy の yum ソースを追加する必要がありますが、手順は同じです。
この時点で、yum ソースは基本的に確立されます。
その他の準備:
ファイアウォールをオフにする: 以前は、内部ミラーリングまたは一部のクラウド ホストが基本的にオフになっていたため、この手順は基本的に不要でした。
systemctl stop firewalld
systemctl disable firewalld
selinuxを閉じる
#一般也是关闭的,没关的话下面两步都要做
#重启后生效,防止主机异常重启
sed -i 's/enforcing/disabled/' /etc/selinux/config
#即时生效
setenforce 0
ホスト名の変更、ホストの追加
#修改主机名
hostnamectl set-hostname ceph1
#添加host
cat >> /etc/hosts << EOF
192.168.20.2 ceph1
192.168.20.3 ceph2
192.168.20.4 ceph3
EOF
時刻同期がオンになっていることを確認してください
これも後々落とし穴となり、monサービスが常に異常となるのですが、イントラネット環境で内部時刻同期サービスがないため、マスターノードをサーバー、残りの2台をクライアントとして利用することになります。最初に同期が設定されていますが、反映されませんでした。時間を調整してから、時間が同期されているかどうか、および設定が成功したかどうかを観察することをお勧めします。
#可以使用ntp或者chrony
#安装chrony服务
yum install chrony -y
#主节点配置文件修改
vim /etc/chrony.conf
server 192.168.20.2 iburst
allow 192.168.20.0/24
local stratum 10
#ceph2、ceph3配置
server 192.168.20.2 iburst
#三台重启chrongyd服务
systemctl restart chrongyd
systemctl enable chronyd
#其它命令
chronyc -a makestep
chronyc sourcestats
chronyc 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-cluster
cd /data/my-cluster
ceph-deploy new ceph1
実行中に例外がないことを確認してください
#mon服务的初始化
ceph-deploy mon create-initial
#将配置文件拷贝到对应的节点
ceph-deploy admin ceph2 ceph3
#如果想部署高可用的monitor ,可以将ceph2也加入mon集群
ceph-deploy mon add ceph2
# 复制ceph 相关文件,执行后可以使用ceph -s
cp 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
#然后添加 osd
ceph-deploy osd create --data /dev/sda3 ceph2
ceph-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.target
systemctl start ceph-mon.target
systemctl start ceph-mds.target
デプロイメントプロセス中に問題が発生し、ロールバックしたい場合は、次のコマンドを使用できます。今回のデプロイメント中に 2 回ロールバックし、3 回目で最終的にデプロイメントが成功しました。
#这步 部署的yum包也会删除
ceph-deploy purge ceph1 ceph2 ceph3
ceph-deploy forgetkeys
この時点で基本的な展開は終わっていますが、正式に利用する場合はその後のメンテナンスが始まったばかりで、具体的なものであれば今後もアップデートが行われます。