著者:徐甲斐
この記事では、主に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/*
次の手順は、各ホストで実行する必要があります
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
この時点で、クラスターの展開は完了です。
ノードの/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
この時点で、各ノードの監視サービスを再起動する必要があります。次のセクションを参照してください。
# 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