Cephの迅速な展開(Centos7 + Jewel)

著者:徐甲斐

この記事では、主に3つの仮想マシンを使用してCeph分散システムを構築する方法を紹介します。手順は単純ですが正確です。環境クリーニングセクションでは、展開が失敗した場合の問題のほとんどを解決できます。最後のセクションでは、環境をセットアップしたばかりの学生に役立つことを期待して、一般的なCeph操作を紹介します。

周囲##

CentOS 7がインストールされた3つのホスト、各ホストには3つのディスクがあります(仮想マシンディスクは100Gより大きくなければなりません)。詳細情報は次のとおりです。

[ root@ceph-1~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511(Core)[root@ceph-1~]# lsblk 
NAME            MAJ:MINRM   SIZE RO TYPE MOUNTPOINT
sda              8:00   128G  0 disk 
├─sda1           8:10   500M  0 part /boot
└─sda2           8:20127.5G  0 part 
 ├─centos-root 253:00    50G 0 lvm  /
 ├─centos-swap 253:10     2G 0 lvm  [SWAP]
 └─centos-home 253:2075.5G  0 lvm /home
sdb              8:160     2T  0 disk 
sdc              8:320     2T  0 disk 
sdd              8:480     2T  0 disk 
sr0             11:01  1024M  0 rom  
[ root@ceph-1~]# cat /etc/hosts
..192.168.57.222 ceph-1192.168.57.223ceph-2192.168.57.224 ceph-3

クラスター構成は次のとおりです。

ホスト IP 機能
ceph-1 192.168.57.222 deploy、mon1、osd3
ceph-2 192.168.57.223 mon1、 osd3
ceph-3 192.168.57.224 mon1 、osd3

環境クリーンアップ##

以前の展開が失敗した場合、cephクライアントを削除したり、仮想マシンを再構築したりする必要はありません。各ノードで次の手順を実行するだけで、cephクライアントをインストールしたばかりの状態に環境をクリーンアップできます。古いクラスター上に構築する前に環境をクリーンアップすることを強くお勧めします。そうしないと、さまざまな異常な状況が発生します。

psaux|grep ceph |awk '{print $2}'|xargs kill -9
ps -ef|grep ceph
# この時点で、すべてのcephプロセスが閉じられていることを確認してください。 ! !閉じていない場合は、数回実行してください。
umount /var/lib/ceph/osd/*
rm -rf /var/lib/ceph/osd/*
rm -rf /var/lib/ceph/mon/*
rm -rf /var/lib/ceph/mds/*
rm -rf /var/lib/ceph/bootstrap-mds/*
rm -rf /var/lib/ceph/bootstrap-osd/*
rm -rf /var/lib/ceph/bootstrap-rgw/*
rm -rf /var/lib/ceph/tmp/*
rm -rf /etc/ceph/*
rm -rf /var/run/ceph/*

yumsourceとcephのインストール##

次の手順は、各ホストで実行する必要があります

yumclean all
rm -rf /etc/yum.repos.d/*.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo

セフのソースを増やす:

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

以下を追加します:

[ ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0

cephクライアントをインストールします:

yummakecache
yum install ceph ceph-radosgw rdate -y
selinuxを閉じる&firewalld
sed-i 's/SELINUX=.*/SELINUX=disabled/'/etc/selinux/config
setenforce 0
systemctl stop firewalld 
systemctl disable firewalld

各ノードの時刻を同期します:

yum-y install rdate
rdate -s time-a.nist.gov
echo rdate -s time-a.nist.gov >>/etc/rc.d/rc.local 
chmod +x /etc/rc.d/rc.local

展開を開始します##

デプロイメントノード(ceph-1)にceph-deployをインストールします。以下のデプロイメントノードはceph-1を参照しています:

[ root@ceph-1~]# yum -y install ceph-deploy
[ root@ceph-1~]# ceph-deploy --version
1.5.34[ root@ceph-1~]# ceph -v
ceph version 10.2.2(45107e21c568dd033c2f0a3107dec8f0b0e58374)

デプロイメントノードにデプロイメントディレクトリを作成し、デプロイメントを開始します。

[ root@ceph-1~]# cd
[ root@ceph-1~]# mkdir cluster
[ root@ceph-1~]# cd cluster/[root@ceph-1 cluster]# ceph-deploy newceph-1 ceph-2 ceph-3

以前に各ノードにssh-copy-idがない場合は、パスワードを入力する必要があります。プロセスログは次のとおりです。

[ ceph_deploy.conf][DEBUG] found configuration file at:/root/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.34):/usr/bin/ceph-deploy newceph-1 ceph-2 ceph-3[ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ] username                     : None
[ ceph_deploy.cli][INFO  ] func                         :<functionnewat0x7f91781f96e0>[ceph_deploy.cli][INFO  ] verbose                      : False
[ ceph_deploy.cli][INFO  ] overwrite_conf               : False
[ ceph_deploy.cli][INFO  ] quiet                        : False
[ ceph_deploy.cli][INFO  ] cd_conf                      :<ceph_deploy.conf.cephdeploy.Conf instance at 0x7f917755ca28>[ceph_deploy.cli][INFO  ] cluster                      : ceph
[ ceph_deploy.cli][INFO  ] ssh_copykey                  : True
[ ceph_deploy.cli][INFO  ]  mon                          :['ceph-1','ceph-2','ceph-3']....
ceph_deploy.new][WARNIN] could not connect via SSH
[ ceph_deploy.new][INFO  ] will connect again with password prompt
The authenticity of host 'ceph-2 (192.168.57.223)' can't be established.
ECDSA key fingerprint is ef:e2:3e:38:fa:47:f4:61:b7:4d:d3:24:de:d4:7a:54.
Are you sure you want to continueconnecting(yes/no)? yes
Warning: Permanently added 'ceph-2,192.168.57.223'(ECDSA) to the list of knownhosts.
root
root@ceph-2's password:[ceph-2][DEBUG ] connected to host: ceph-2....[ceph_deploy.new][DEBUG ] Resolving host ceph-3[ceph_deploy.new][DEBUG ] Monitor ceph-3 at 192.168.57.224[ceph_deploy.new][DEBUG ] Monitor initial members are ['ceph-1','ceph-2','ceph-3'][ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.57.222','192.168.57.223','192.168.57.224'][ceph_deploy.new][DEBUG ] Creating a random mon key...[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...

このとき、ディレクトリの内容は次のとおりです。

[ root@ceph-1cluster]# ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring

独自のIP構成に従ってpublic_networkをceph.confに追加し、mon間の時間差の許容範囲をわずかに増やします(デフォルトは0.05秒ですが、現在は2秒に変更されています)。

[ root@ceph-1cluster]# echo public_network=192.168.57.0/24>> ceph.conf 
[ root@ceph-1 cluster]# echo mon_clock_drift_allowed =2>> ceph.conf 
[ root@ceph-1 cluster]# cat ceph.conf 
[ global]
fsid = 0248817a-b758-4d6b-a217-11248b098e10
mon_initial_members = ceph-1, ceph-2, ceph-3
mon_host =192.168.57.222,192.168.57.223,192.168.57.224
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

public_network=192.168.57.0/24
mon_clock_drift_allowed =2

モニターの展開を開始します:

[ root@ceph-1cluster]# ceph-deploy mon create-initial
.... いくつかのログ
[ root@ceph-1 cluster]# ls
ceph.bootstrap-mds.keyring  ceph.bootstrap-rgw.keyring ceph.conf            ceph.mon.keyring
ceph.bootstrap-osd.keyring  ceph.client.admin.keyring  ceph-deploy-ceph.log

クラスターステータスの表示:

[ root@ceph-1cluster]# ceph -s
 cluster 0248817a-b758-4d6b-a217-11248b098e10
  health HEALTH_ERR
   no osds
   Monitorclock skew detected 
  monmap e1:3 mons at{ceph-1=192.168.57.222:6789/0,ceph-2=192.168.57.223:6789/0,ceph-3=192.168.57.224:6789/0}
   electionepoch 6, quorum 0,1,2 ceph-1,ceph-2,ceph-3
  osdmap e1:0 osds:0 up,0in
   flagssortbitwise
  pgmap v2:64 pgs,1 pools,0 bytes data, 0objects
   0 kB used, 0kB /0 kB avail
     64 creating

OSDの展開を開始します:

ceph-deploy--overwrite-conf osd prepare ceph-1:/dev/sdb ceph-1:/dev/sdc ceph-1:/dev/sddceph-2:/dev/sdb ceph-2:/dev/sdc ceph-2:/dev/sdd ceph-3:/dev/sdb ceph-3:/dev/sdcceph-3:/dev/sdd  --zap-disk
ceph-deploy --overwrite-conf osd activate ceph-1:/dev/sdb1 ceph-1:/dev/sdc1ceph-1:/dev/sdd1 ceph-2:/dev/sdb1 ceph-2:/dev/sdc1 ceph-2:/dev/sdd1ceph-3:/dev/sdb1 ceph-3:/dev/sdc1 ceph-3:/dev/sdd1

展開中に小さな問題が発生しました。1つのOSDが失敗しました(すべてのOSDが展開された後、OSDを再展開することで問題を解決できます)。何も起こらない場合、クラスターのステータスは次のようになります。

[ root@ceph-1cluster]# ceph -s
 cluster 0248817a-b758-4d6b-a217-11248b098e10
  health HEALTH_WARN
   too few PGsper OSD(21< min 30)
  monmap e1:3 mons at{ceph-1=192.168.57.222:6789/0,ceph-2=192.168.57.223:6789/0,ceph-3=192.168.57.224:6789/0}
   electionepoch 22, quorum 0,1,2 ceph-1,ceph-2,ceph-3
  osdmap e45:9 osds:9 up,9in
   flagssortbitwise
  pgmap v82:64 pgs,1 pools,0 bytes data, 0objects
   273 MB used,16335 GB /16336 GB avail
     64 active+clean

この警告を削除するには、rbdプールのPGを増やすだけです。

[ root@ceph-1cluster]# ceph osd pool set rbd pg_num 128set pool 0 pg_num to 128[root@ceph-1 cluster]# ceph osd pool set rbd pgp_num 128set pool 0 pgp_num to 128[root@ceph-1 cluster]# ceph -s
 cluster 0248817a-b758-4d6b-a217-11248b098e10
  health HEALTH_ERR
   19 pgs arestuck inactive for more than 300 seconds
   12 pgspeering
   19 pgs stuckinactive
  monmap e1:3 mons at{ceph-1=192.168.57.222:6789/0,ceph-2=192.168.57.223:6789/0,ceph-3=192.168.57.224:6789/0}
   electionepoch 22, quorum 0,1,2 ceph-1,ceph-2,ceph-3
  osdmap e49:9 osds:9 up,9in
   flagssortbitwise
  pgmap v96:128 pgs,1 pools,0 bytes data, 0objects
   308 MB used,18377 GB /18378 GB avail
    103 active+clean
     12 peering
     9 creating
     4 activating
[ root@ceph-1 cluster]# ceph -s
 cluster 0248817a-b758-4d6b-a217-11248b098e10
  health HEALTH_OK
  monmap e1:3 mons at {ceph-1=192.168.57.222:6789/0,ceph-2=192.168.57.223:6789/0,ceph-3=192.168.57.224:6789/0}
   electionepoch 22, quorum 0,1,2 ceph-1,ceph-2,ceph-3
  osdmap e49:9 osds:9 up,9in
   flagssortbitwise
  pgmap v99:128 pgs,1 pools,0 bytes data, 0objects
   310 MB used,18377 GB /18378 GB avail
    128 active+clean

この時点で、クラスターの展開は完了です。

config push

ノードの/etc/ceph/ceph.confファイルを直接変更する方法は使用せず、デプロイメントノード(ここではceph-1:/root/cluster/ceph.conf) ディレクトリの下で変更してください。ノードが数十個あると、1つずつ変更することができないためです。プッシュ方式は高速で安全です。変更後、次の手順を実行して、confファイルを各ノードにプッシュします。

[ root@ceph-1cluster]# ceph-deploy --overwrite-conf config push ceph-1 ceph-2 ceph-3

この時点で、各ノードの監視サービスを再起動する必要があります。次のセクションを参照してください。

mon&osd起動モード##

# monitor start/stop/restart
# ceph-1は、各モニターが配置されているノードのホスト名です。
systemctl start [email protected]
systemctl restart [email protected]
systemctl stop [email protected]

# OSD start/stop/restart 
#0 渡すことができるノードのOSDのIDです`ceph osd tree`見る
systemctl start/stop/restart [email protected]

[ root@ceph-1 cluster]# ceph osd tree
ID WEIGHT   TYPE NAME       UP/DOWNREWEIGHT PRIMARY-AFFINITY 
- 117.94685 rootdefault                                     
- 25.98228  hostceph-101.99409        osd.0        up 1.000001.0000011.99409        osd.1        up 1.000001.0000081.99409        osd.2        up 1.000001.00000-35.98228     hostceph-221.99409        osd.3        up 1.000001.0000031.99409        osd.4        up 1.000001.0000041.99409        osd.5        up 1.000001.00000-45.98228     hostceph-351.99409        osd.6        up 1.000001.0000061.99409        osd.7        up  1.000001.0000071.99409        osd.8        up 1.000001.00000

原文:TStackパブリックアカウント

Recommended Posts

Cephの迅速な展開(Centos7 + Jewel)
Centos7でのCeph展開の簡潔な要約
CentOS展開ハーバー
CentOSサーバー展開(YUM)
CentOS7.6サーバー展開VNC
CentOS7環境でのKubernetes(k8s)クラスターの迅速な展開
Centos7.4デプロイメント構成Elasticsearch5.6クラスター
centos7へのグラファイトの展開
Centos7.2展開vncサービスレコード
CENTOS7はCEPHオリジナルを手動でインストールします
Centos6.9でのRabbitMQクラスター展開レコード
CentOS7でのElasticsearchクラスター展開レコード
フラスコプロジェクトのCentOS展開方法
CentOs7のインストールと展開Zabbix3.4オリジナル
centos7でのFFmpeg環境の展開記録
CentOS7でのErlang20.2のインストールと展開
k8sプラクティス(1):Centos 7.6デプロイメントk8s(v1.14.2)クラスター
CentosでのPPTP環境の展開記録