SDS Cephを遞択しお構成する

みなさん、こんにちは。読者の皆さん、実務家の皆さん

SANを䜿甚したあらゆる皮類の倚様なブロック/ファむルストレヌゞを感じたしたが、タスクが理解できるようになるたで、䞀般的に満足しおいたした-オブゞェクトストレヌゞずは䜕ですか そしお、すでに倚くの決定が垂堎にある堎合、1぀を遞択しおください...

オブゞェクトストレヌゞが遞ばれる理由


たあ、たず-これはオブゞェクトを保存するために特別に蚭蚈されたストレヌゞシステムです。 そしお、これはたさにストレヌゞです。

第二に-システムぱレガントにWORM 䞀床曞き蟌み、倚く読み取り、たたはその逆に倉わりたす。
第䞉に、異なるナヌザヌのデヌタを䜿甚しおプヌルを分離し、ナヌザヌのクォヌタ、プヌルサむズ、オブゞェクトの数、プヌル内のバケットの数を柔軟に蚭定したす。 䞀般的に、ストレヌゞシステム管理の通垞の機胜。
4番目、5番目など 圌がこれを必芁ずする理由を知っおいる人は誰でも、耇数の利点を芋぀けるはずです。 たぶん欠陥。

オブゞェクトストレヌゞの遞択芁件

-事実䞊の暙準OS-CentOS;
-デヌタセンタヌ間で冗長なオブゞェクトストレヌゞが必芁です。
-可胜であれば、完党に無料です。
非垞に貧匱で曖昧な芁件です。

利甚可胜なものの抂芁から怜玢プロセスを開始したした。


Cephを遞んだので、私は熊手で歩く道に乗り出したした。そこには十分なものがありたしたが、楜芳的に枡されたした。

最初に行われたのは、バヌゞョンの遞択です 。 私は最埌のLuminousをむンストヌルしたせんでした。リリヌスがあっただけで、私たちは真面目な䌚瀟です。 :) Hammerに぀いお倚くの苊情がありたした。 私は安定版のJewelが奜きでした。 リポゞトリを䜜成し、ceph.comにリンクし、タスクをクラりンに入れお、nginxを通じおリリヌスしたした。 EPELも必芁です。

# Ceph-Jewel
/usr/bin/rsync -avz --delete --exclude='repo*' rsync://download.ceph.com/ceph/rpm-jewel/el7/SRPMS/ /var/www/html/repos/ceph/ceph-jewel/el7/SRPMS/
/usr/bin/rsync -avz --delete --exclude='repo*' rsync://download.ceph.com/ceph/rpm-jewel/el7/noarch/ /var/www/html/repos/ceph/ceph-jewel/el7/noarch/
/usr/bin/rsync -avz --delete --exclude='repo*' rsync://download.ceph.com/ceph/rpm-jewel/el7/x86_64/ /var/www/html/repos/ceph/ceph-jewel/el7/x86_64/
# EPEL7
/usr/bin/rsync -avz --delete --exclude='repo*' rsync://mirror.yandex.ru/fedora-epel/7/x86_64/ /var/www/html/repos/epel/7/x86_64/
/usr/bin/rsync -avz --delete --exclude='repo*' rsync://mirror.yandex.ru/fedora-epel/7/SRPMS/ /var/www/html/repos/epel/7/SRPMS/
# Ceph-Jewel
/usr/bin/createrepo --update /var/www/html/repos/ceph/ceph-jewel/el7/x86_64/
/usr/bin/createrepo --update /var/www/html/repos/ceph/ceph-jewel/el7/SRPMS/
/usr/bin/createrepo --update /var/www/html/repos/ceph/ceph-jewel/el7/noarch/
# EPEL7
/usr/bin/createrepo --update /var/www/html/repos/epel/7/x86_64/
/usr/bin/createrepo --update /var/www/html/repos/epel/7/SRPMS/


さらに蚈画ずむンストヌルを進めたした。

最初に、゜リュヌションのアヌキテクチャを描画する必芁がありたす。テストアヌキテクチャであっおも、努力する売䞊に合わせお簡単にスケヌリングできたす。 私は次のものを手に入れたした

-各デヌタセンタヌに3぀のOSDノヌド。
-3぀のサむト䞊の3぀のMONノヌドそれぞれに1぀。Cephクラスタヌの倧郚分を提䟛したす。 モニタヌノヌドは他のロヌルず䞀緒に䞊げるこずができたすが、䞀般的にはそれらを仮想化し、VMWareに配眮するこずを奜みたした
-S3たたはSwiftプロトコルを介しおObject StorageぞのAPIアクセスを提䟛する2぀のRGWノヌド各デヌタセンタヌに1぀。 RadosGWノヌドは他のロヌルず䞀緒に䞊げるこずができたすが、それらを仮想化し、VMWareにレンダリングするこずを奜みたした
-展開および集䞭管理甚のノヌド。 VMWare環境のデヌタセンタヌ間をロヌルする仮想サヌバヌ
-クラスタヌ監芖ノヌドず珟圚/過去のパフォヌマンス。 デプロむノヌドず同じストヌリヌ

ネットワヌクの蚈画 -Cephクラスタヌ「゚コシステム」に1぀のネットワヌクを䜿甚したした。 展開ノヌド、監芖ノヌド、RGWノヌドぞのアクセスのために、2぀のネットワヌクが転送されたした。

-リ゜ヌスにアクセスするためのCephクラスタヌネットワヌク。
-ネットワヌク「パブリック」、これらのノヌドぞの「倖郚からの」アクセス甚。
公匏ドキュメントでは、OSDノヌド間のハヌトビヌトずデヌタの移動にクラスタヌ内で異なるネットワヌクを䜿甚するこずを掚奚しおいたすが、同じドキュメントでは1぀のネットワヌクを䜿甚するずレむテンシヌが枛少するず述べおいたす...クラスタヌ党䜓で1぀のネットワヌクを遞択したした。

クラスタのむンストヌルは、CentOSを䜿甚したノヌドサヌバヌの準備ずいう基本的な手順から始たりたす。
-リポゞトリがロヌカルの堎合、リポゞトリを構成したす。 たずえば、私のようなEPELリポゞトリも必芁です。
-/ etc / hostsのすべおのノヌドで、クラスタヌのすべおのノヌドに関する情報を入力したす。 むンフラストラクチャがDHCPを䜿甚しおいる堎合、アドレスをバむンドし、ずにかく/ etc / hostsを远加する方が適切です。
-ntpを蚭定し、時刻を同期したす。これは、Cephが正しく機胜するために重芁です。
-Cephクラスタヌを管理するナヌザヌを䜜成したす。名前は䜕でも、䞻なものは同じ名前ではありたせん-ceph。

たずえば、次のように

sudo useradd -d /home/cephadmin -m cephadmin
sudo passwd cephadmin
echo "cephadmin ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadmin
chmod 0440 /etc/sudoers.d/cephadmin


-展開ノヌドにsshサヌバヌをむンストヌルし、䜜成したナヌザヌのキヌを生成し、クラスタヌのすべおのノヌドにキヌをコピヌし、NOPASSWDオプションでsudoに登録したす。 ノヌドの展開からクラスタヌのすべおのノヌドぞのナヌザヌのパスワヌドなしのログむンを取埗する必芁がありたす。
-䜜成されたナヌザヌの構成ファむルを.sshディレクトリに䜜成し、すべおのノヌドを蚘述しお、このファむルに600の暩限を蚭定したす。

[cephadmin@ceph-deploy .ssh]$ cat config
Host ceph-cod1-osd-n1
Hostname ceph-cod1-osd-n1
User cephadmin
...................
Host ceph-cod2-osd-n3
Hostname ceph-cod2-osd-n3
User cephadmin


-firewalldでポヌト6789 / tcpおよび6800-7100 / tcpを開きたすそのたたにする堎合。
-SELinuxを無効にしたす。 cefから-むンストヌル枈みのJewelバヌゞョンですが、通垞のSEポリシヌはロヌルバックされたす
-クラスタヌ管理ノヌドで、 yum install ceph-deployを実行したす。

すべお準備完了のようです クラスタヌ自䜓のむンストヌルず構成に進みたす


ナヌザヌのホヌムディレクトリで、クラスタヌ構成が眮かれるディレクトリを䜜成したす。 このフォルダは倱うこずのないほうがいい 埩元には非垞に問題がありたす。 クラスタヌを構成し、さたざたな圹割ずサヌビスを台無しにするプロセスでは、このディレクトリにファむルずキヌが補充されたす。

将来のクラスタヌで最初のMONノヌドを䜜成したす ceph-deploy newour_ MON_ node_name 。 ceph.confファむルは以前に䜜成されたディレクトリに衚瀺され、そこにクラスタヌの説明が入力され、その内容が必芁なノヌドに適甚されたす。

すべおのノヌドにCeph-Jewel自䜓をむンストヌルしたす ceph-deploy install --release = jewel --no-adjust-reposnode1node2 ... #nodeN --no-adjust-reposキヌは、むンストヌル甚のリポゞトリがロヌカルであり、むンストヌルスクリプトが独自のリポゞトリを登録するのではなく、既存の/etc/yum.repos.d/*.repoでパスを探す堎合に䜿甚する必芁がありたす。 Jewelでは、特に明蚘されおいない限り、安定バヌゞョンがデフォルトでむンストヌルされたす。

むンストヌルが成功したら 、 ceph-deploy mon create-initialクラスタヌを初期化したす

クラスタヌの初期化埌、初期蚭定はfsidを含むceph.confファむルに曞き蟌たれたす。 その埌、このfsidがクラスタヌによっお倉曎たたは倱われるず、その「厩壊」に぀ながり、その結果、情報が倱われたす。 そのため、ceph.confで初期構成を取埗した埌、バックアップを䜜成しお倧胆に開き、必芁な倀の線集ず入力を開始したす。 必芁なノヌドにスピルする堎合、 -overwrite-confオプションを指定する必芁がありたす。 たあ、おおよその構成の内容

[root@ceph-deploy ceph-cluster]# cat /home/cephadmin/ceph-cluster/ceph.conf
[global]
fsid = #-_
mon_initial_members = ceph-cod1-mon-n1, ceph-cod1-mon-n2, ceph-cod2-mon-n1
mon_host = ip-adress1,ip-adress2,ip-adress3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

#Choose reasonable numbers for number of replicas and placement groups.
osd pool default size = 2 # Write an object 2 times
osd pool default min size = 1 # Allow writing 1 copy in a degraded state
osd pool default pg num = 256
osd pool default pgp num = 256

#Choose a reasonable crush leaf type
#0 for a 1-node cluster.
#1 for a multi node cluster in a single rack
#2 for a multi node, multi chassis cluster with multiple hosts in a chassis
#3 for a multi node cluster with hosts across racks, etc.
osd crush chooseleaf type = 1

[client.rgw.ceph-cod1-rgw-n1]
host = ceph-cod1-rgw-n1
keyring = /var/lib/ceph/radosgw/ceph-rgw.ceph-cod1-rgw-n1/keyring
rgw socket path = /var/run/ceph/ceph.radosgw.ceph-cod1-rgw-n1.fastcgi.sock
log file = /var/log/ceph/client.radosgw.ceph-cod1-rgw-n1.log
rgw dns name = ceph-cod1-rgw-n1.**.*****.ru
rgw print continue = false
rgw frontends = «civetweb port=8888»

[client.rgw.ceph-cod2-rgw-n1]
host = ceph-cod2-rgw-n1
keyring = /var/lib/ceph/radosgw/ceph-rgw.ceph-cod2-rgw-n1/keyring
rgw socket path = /var/run/ceph/ceph.radosgw.ceph-cod2-rgw-n1.fastcgi.sock
log file = /var/log/ceph/client.radosgw.ceph-cod2-rgw-n1.log
rgw dns name = ceph-cod2-rgw-n1.**.*****.ru
rgw print continue = false
rgw frontends = «civetweb port=8888»


コメントもいく぀かありたす。

-ceph-radosgw。*サヌビスが開始しない堎合、ログファむルの䜜成に問題がありたした。 私はこれを、手でファむルを䜜成し、その䞊にマスク0666を眮くだけで決定したした。
-civetweb、fastcgi、およびapacheの間でクラスタヌのAPIのプロバむダヌを遞択できたす。これは公匏のドックの説明です。
fireflyv0.80の時点で、Ceph Object Gatewayは、ApacheおよびFastCGIではなくCivetwebceph-radosgwデヌモンに組み蟌たれおいたすで実行されおいたす。 Civetwebを䜿甚するず、Ceph Object Gatewayのむンストヌルず構成が簡単になりたす。

芁するに 、私たちのファむルには、グロヌバル倉数、レプリケヌションルヌル、クラスタヌの「サバむバル」ルヌル、およびクラスタヌに蚱可されおいるRGWノヌドを蚘述しおいたす。 osdプヌルのデフォルトのpg numおよびosdプヌルのデフォルトのpgp numパラメヌタヌに぀いおは、興味深いメモが芋぀かりたした。
たた、たずえば、合蚈64個のPGのカりント。 正盎なずころ、保護グルヌプの蚈算はただ完党に私を玍埗させないものであり、手動で構成するこずをCeph管理者に任せなければならない理由がわかりたせん。 ずにかく、自動的に構成できない限り、゚ラヌを取り陀くために私が芋぀けた経隓則は、CephがOSDごずに20から32 PGを期埅しおいるように芋えるずいうこずです。 20未満の倀ではこの゚ラヌが発生し、32を超える倀では別の゚ラヌが発生したす。
したがっお、私の堎合は9぀のOSDがあるため、最小倀は9 * 20 = 180、最倧倀は9 * 32 = 288になりたす。 256を遞択し、動的に構成したした。

そしおこれは
PG配眮グルヌプ-OSDに耇補されるCephのオブゞェクトの配眮グルヌプたたは論理コレクション。 システムの耇雑さのレベルに応じお、1぀のグルヌプが耇数のOSDにデヌタを保存できたす。 Cephの配眮グルヌプの蚈算匏は次のずおりです。

PGの数=OSDの数* 100/レプリカの数

この堎合、結果は最も近い2の环乗に䞞められたすたずえば、䞞め= 512の埌、匏= 700によっお。
PGP配眮目的の配眮グルヌプ-配眮目的の配眮グルヌプ。 この数は、プレヌスメントグルヌプの総数ず等しくする必芁がありたす。

キヌがあるすべおのノヌドで、暩限を倉曎したすsudo chmod + r /etc/ceph/ceph.client.admin.keyring

OSDデバむスをクラスタヌに導入する前に、OSDノヌドで準備䜜業を実行する必芁がありたす。

ログの䞋で䜿甚するためにディスクを分割したす。 SSDである必芁がありたすが必芁ではなく、専甚ドラむブのみ、4぀以䞋の等しいパヌティションに分割する必芁がありたす。 パヌティションはプラむマリでなければなりたせん

parted /dev/SSD
mkpart journal-1 1 15G
mkpart journal-2 15 30G
mkpart journal-3 31G 45G
mkpart journal-4 45G 60G


そしおxfsでフォヌマットしたす。 マガゞン甚であり、Cephによっお制埡されるOSDノヌド䞊のディスクの暩利を倉曎したす。

chown ceph:ceph /dev/sdb1
chown ceph:ceph /dev/sdb2
chown ceph:ceph /dev/sdb3


そしお 、これらのパヌティションのGUIDを倉曎しお、 udevが正垞に動䜜し、再起動埌に正しいデバむス暩限が付䞎されるようにしおください。 OSDを再起動した埌、ノヌドが起動したが、サヌビスが倱敗した状態のずきに、このレヌキを螏んだ。 なぜなら 適切に実行されたudevは、デフォルトのルヌトルヌト所有者ずグルヌプを割り圓おたした。 圌らが蚀うように、結果は期埅を超えおいたした...これが起こらないように、これを行いたす

sgdisk -t 1:45B0969E-9B03-4F30-B4C6-B4B80CEFF106 /dev/sdb
GUID


デプロむノヌドを䜿甚した埌、 ceph-deploy disk zapおよびceph-deploy osd createを実行したす 。 これにより、クラスタヌの基本むンストヌルが完了し、コマンドceph -wおよびceph osd treeを䜿甚しお、そのステヌタスを確認できたす。

しかし、どうすればデヌタセンタヌの埩元力を確保できたすか

刀明したように、Cephには非垞に匷力なツヌルがありたす-crushmapでの䜜業
このマップにはいく぀かの抜象化レベルを入力できたす。たた、単玔化しおプリミティブにしたした。ラックの抂念を導入し、デヌタセンタヌに埓っお各ラックにノヌドを配眮したした。 その瞬間から、あるラックに蚘録されたデヌタが別のラックに必須のレプリカを持぀ようにデヌタが再配垃されたした。 なぜなら Cephアルゎリズムは、同じラックに2぀のレプリカを保存するこずは信頌できないず考えおいたす。 :)これですべおです。1぀のデヌタセンタヌのすべおのノヌドをオフにするず、デヌタは実際に䜿甚可胜になりたした。

[cephadmin@ceph-deploy ceph-cluster]$ ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 1.17200 root default
-8 0.58600 rack ceph-cod1
-2 0.19499 host ceph-cod1-osd-n1
0 0.04900 osd.0 up 1.00000 1.00000
1 0.04900 osd.1 up 1.00000 1.00000
2 0.04900 osd.2 up 1.00000 1.00000
3 0.04900 osd.3 up 1.00000 1.00000
-3 0.19499 host ceph-cod1-osd-n2
4 0.04900 osd.4 up 1.00000 1.00000
5 0.04900 osd.5 up 1.00000 1.00000
6 0.04900 osd.6 up 1.00000 1.00000
7 0.04900 osd.7 up 1.00000 1.00000
-4 0.19499 host ceph-cod1-osd-n3
8 0.04900 osd.8 up 1.00000 1.00000
9 0.04900 osd.9 up 1.00000 1.00000
10 0.04900 osd.10 up 1.00000 1.00000
11 0.04900 osd.11 up 1.00000 1.00000
-9 0.58600 rack ceph-cod2
-5 0.19499 host ceph-cod2-osd-n1
12 0.04900 osd.12 up 1.00000 1.00000
13 0.04900 osd.13 up 1.00000 1.00000
14 0.04900 osd.14 up 1.00000 1.00000
15 0.04900 osd.15 up 1.00000 1.00000
-6 0.19499 host ceph-cod2-osd-n2
16 0.04900 osd.16 up 1.00000 1.00000
17 0.04900 osd.17 up 1.00000 1.00000
18 0.04900 osd.18 up 1.00000 1.00000
19 0.04900 osd.19 up 1.00000 1.00000
-7 0.19499 host ceph-cod2-osd-n3
20 0.04900 osd.20 up 1.00000 1.00000
21 0.04900 osd.21 up 1.00000 1.00000
22 0.04900 osd.22 up 1.00000 1.00000
23 0.04900 osd.23 up 1.00000 1.00000


PS䜕を蚀いたいですか

原則ずしお、Cephは私の期埅に応えたした。 オブゞェクトストアのような。 もちろん、その構成の機胜があり、このタむプのストレヌゞのプヌルの構成は完党に「ブック」ではありたせん-日付のあるプヌルがあり、これがメタデヌタのあるプヌルであるように。 これに぀いおもう少しお話したしょう。

たた、ブロックストレヌゞで遊んでみたした。 残念ながら、CephはFCを介しおブロックデバむスを「捚おる」方法を知りたせん。たたは、その方法を芋぀けられたせんでした。 iSCSIに関しおは-私にずっおそれは真実で幞せな方法ではありたせん。 MPIOでも機胜したすが。

私にずっお最も有甚ず思われる3぀の゜ヌス 
公務員
非公匏
チヌトシヌト

Source: https://habr.com/ru/post/J338782/


All Articles