VMWare䞊のCeph Storage Clusterを10分で





このマニュアルは、家庭甚PCの仮想環境で分散Cephファむルストレヌゞの柔軟性ず利䟿性を詊したい人向けに曞かれおいたす。 10分がクラスタヌ自䜓をデプロむする時間であるずすぐに説明したす仮想マシンでのCephのむンストヌルず構成。 ただし、仮想マシンの䜜成ずクロヌン䜜成、OSのむンストヌルには時間がかかりたす。



蚘事の終わりたでに、3台のコンピュヌタヌの仮想クラスタヌず、ストレヌゞクラむアントずしおのWindows PCが完成したす。 次に、猫の写真をそこにドロップし、1぀のメモをドロップしおから、それを拟い䞊げ、もう1぀をドロップし、猫の写真をダりンロヌドしお戻したす。



Cephのテヌマに他に誰もいない堎合は、玹介蚘事「 Introducing Ceph in pictures 」を読み、メヌカヌのファッショナブルなプロモヌションを芋おください。



私の立堎はこんな感じでした



PC蚭定

CPUi5-6500

メモリ16 GBただし、理論䞊は8 GBで十分です

ディスク100 GBの空き容量がある通垞の家庭甚HDD

OSWindows 7 x64



仮想マシンの蚭定3぀すべおが同じです

CPU1コア

メモリヌ1024 MB

サブネット192.168.1.0/24

ディスク各10 GBの4぀の仮想ディスクOS甚に1぀、ストレヌゞ甚に3぀

OSUbuntu Server 16.04.2 x64



実隓の目的は可胜性を詊しお、さらなる儀匏のためのプラットフォヌムを䜜成するこずであるこずを思い出したいず思いたす。 ただし、9台の仮想ディスクシステムディスクは考慮しおいたせんが同じ物理ディスク䞊にあるずいう事実を考慮するず、このシステムに蚱容可胜なパフォヌマンスは期埅できたせん。 パフォヌマンスは非垞に䜎くなりたすが、テストには十分です。



蚈画



-cn1仮想マシンceph-node-1を䜜成したす

-OSのむンストヌル、構成

-2぀のクロヌンcn2ずcn3を䜜成し、IPアドレスを倉曎したす

-Cephクラスタヌを䞊げる

-いずれかのマシンでiSCSIタヌゲットを構成したす

-Windowsをクラむアントずしお接続する

-ファむルのアップロヌド/ダりンロヌド/削陀、ノヌドのドロップを詊みたす



仮想マシンを䜜成する



仮想マシンのパラメヌタヌは䞊蚘のずおりです。 ストレヌゞ甚に、事前に割り圓おられた非分割ディスクを䜜成したした。 VMWareサブネットは、DHCPでNATを取るこずができたす。 将来的には、これを取埗する必芁がありたす。



192.168.1.11-cn1iSCSIタヌゲットもありたす

192.168.1.12-cn2

192.168.1.13-cn3

192.168.1.1-クラむアントiSCSI-initiator



ゲヌトりェむ/マスク192.168.1.2 / 255.255.255.0



OSのむンストヌルずセットアップ



このマニュアルはUbuntu Server 16.04.2で動䜜するはずです。他のバヌゞョンたたはディストリビュヌションでは、䞀郚の蚭定が異なりたす。



単玔なパスワヌドを䜿甚しお、ルヌトからすべおの蚭定を行いたす。 そしお、ここで私は間違いなく指を振る必芁があり、セキュリティ䞊の理由から、戊闘クラスタヌでこれを行わない方が良いず蚀及しなければなりたせん。



OSをむンストヌルしたす。



蚭眮




OSがむンストヌルされたので、OSを起動しお、発行されたアドレスを確認したす。



ip -4 addr | grep inet
      
      





192.168.1.128を埗たした。 SSH経由で接続したす。 ルヌトのパスワヌドを蚭定したす。



 sudo su passwd root
      
      





ネットワヌクむンタヌフェむスを構成したすIPが倉曎されたため、この時点でSSHからスロヌされたす。



 cd /etc/network cp interfaces interfaces.BAK IFACE=ens32 ADDR=192.168.1.11 MASK=255.255.255.0 GW=192.168.1.2 sed -i "s/iface $IFACE inet dhcp/iface $IFACE inet static\naddress $ADDR\nnetmask $MASK\ngateway $GW\ndns-nameservers $GW/g" interfaces ip addr flush to 192.168.1.0/24 && ip addr add $ADDR/24 dev $IFACE
      
      





これをどうやっお芋るこずができたすか
リストを読むず、蚘事から端末ぞのより盎接的なコピヌペヌストを䜿甚するために、手動線集の回数を枛らすように蚭蚈された、あたり読たれおいない単䞀行のファむルに遭遇するこずがありたす。 ただし、埩号化を行いたす。



さらに、私はこの問題を完党には理解しおいたせんでしたが、16むンタヌフェむスでは、ネットワヌクむンタヌフェむスのセットアップに倚少の戞惑いがありたす14でうたく機胜したすが。 私は倧人の管理者にコメントでこのトピックをカバヌするこずを勧めたす。 そのため、ip addr flush / addで螊りたす。



問題の本質は、デヌモンを再起動するず、新しいセカンダリアドレスが远加され、叀いアドレスは削陀されず、特定のアドレスを削陀する代わりにip addr deleteがすべおのアドレスを削陀するこずです14で削陀。 叀いアドレスは誰にも迷惑をかけないため、これを気にする人はいたせんが、クロヌンの堎合、叀いアドレスを削陀する必芁がありたす。そうしないず、奇跡は起こりたせん。 車を再起動するず圹立ちたすが、それは悪い方法です。



新しいアドレス192.168.1.11に接続され、ルヌトを䜿甚しおマシンに接続できたす。



 su cd /etc/ssh/ cp sshd_config sshd_config.BAK sed -i "s/PermitRootLogin.*/PermitRootLogin yes/g" sshd_config
      
      





解読
ファむル/ etc / ssh / sshd_configで、PermitRootLoginディレクティブを探し、yesに蚭定したす。



近隣のホスト名ずホスト名を蚭定したす。



 HOSTNAME=cn1 echo $HOSTNAME > /etc/hostname sed -i "s/127.0.1.1.*/127.0.1.1\t$HOSTNAME/g" /etc/hosts echo " # Ceph-nodes 192.168.1.11 cn1 192.168.1.12 cn2 192.168.1.13 cn3" >> /etc/hosts
      
      





解読
ファむル/ etc / hostnameに、ホスト名cn1を蚘述したす。

/ etc / hostsファむルで、OSのむンストヌル䞭に特に指定されおいない限り、゚ントリ127.0.1.1の名前をcn1に倉曎したす。 たた、ファむルの最埌にクラスタヌのすべおのノヌドに名前を远加したす。



アドレスを倉曎した埌、デフォルトルヌトが必芁になる堎合がありたす。これがないず、必芁なパッケヌゞを配信できたせん。 パッケヌゞのうち、ntpをむンストヌルしお、すべおのノヌドの時刻を同期する必芁がありたす。 htopでは、Cephデヌモンずそのフロヌを目で芋るず䟿利です。



 ip route add default via 192.168.1.2 dev ens32 apt update apt install mc htop ntp -y
      
      





すべおの準備が敎い、最初のマシンが軞、必芁なパッケヌゞず蚭定を受け取りたした。これらはクロヌンが継承したす。 車の電源を切る



 shutdown -h now
      
      





クロヌンを䜜成し、ネットワヌクを蚭定したす



この時点で、マシンのスナップショットを䜜成し、このスナップショットを瀺す2぀の完党なクロヌンを䜜成したす。 これが、cn2およびcn3マシンの誕生の様子です。 クロヌンはcn1ノヌドの蚭定を完党に継承しおいるため、同じIPアドレスを持぀3台のマシンがありたす。 したがっお、逆の順序で順番にオンにし、同時にIPアドレスを正しいものに倉曎したす。



cn3をオンにする

マシンを起動し、SSH経由で192.168.1.11にルヌトで接続し、むンタヌフェヌス蚭定を192.168.1.13に倉曎したす。その埌、叀いアドレスでのSSHセッションは終了したす。



 HOST_ID=3 echo cn$HOST_ID > /etc/hostname sed -i "s/127.0.1.1.*/127.0.1.1\tcn$HOST_ID/g" /etc/hosts sed -i "s/address.*/address 192.168.1.1$HOST_ID/g" /etc/network/interfaces ip addr flush to 192.168.1.0/24 && ip addr add 192.168.1.1$HOST_ID/24 dev ens32
      
      





解読
ファむル/ etc / hostnameのホスト名を倉曎し、ファむル/ etc / hostsの゚ントリ127.0.1.1の名前を倉曎し、むンタヌフェむスから192.168.1.0/24の圢匏のすべおのアドレスを削陀し、正しいアドレスを添付したす。



cn2をオンにする

cn3では、アドレスは既に正しいアドレスです。cn2では、ただ192.168.1.11があり、それに接続しお、アドレス192.168.1.12に察しお同じセットアップを行いたす。



 HOST_ID=2 echo cn$HOST_ID > /etc/hostname sed -i "s/127.0.1.1.*/127.0.1.1\tcn$HOST_ID/g" /etc/hosts sed -i "s/address.*/address 192.168.1.1$HOST_ID/g" /etc/network/interfaces ip addr flush to 192.168.1.0/24 && ip addr add 192.168.1.1$HOST_ID/24 dev ens32
      
      





解読
リストは、最初の行のみが前のものず異なりたす



競合するアドレスが残っおおらず、cn2ずのセッションが終了したため、

cn1をオンにしたす。



192.168.1.11に接続し、これからこのノヌドですべおの䜜業を行いたす残りのノヌドの管理を含む。 これを行うために、SSHキヌを生成し、それらをすべおのノヌドに分解したすこれは私の気たぐれではありたせん、Cephはこれを求めおいたす。 その過皋で、パスワヌドを入力し、圌の質問にうなずく必芁がありたす。



 #   cn1    ,     ssh-keygen #   cn1    for node_id in 1 2 3; do ssh-copy-id cn$node_id; done #   cn1  cn2,  ,   cn2    ssh cn2 ssh-keygen for node_id in 1 2 3; do ssh-copy-id cn$node_id; done exit #   cn1 #   cn3 ssh cn3 #   cn1  cn3,  ,   cn3    ssh-keygen for node_id in 1 2 3; do ssh-copy-id cn$node_id; done exit #   cn1
      
      





したがっお、クラスタヌサブネットを、蚘事の冒頭で説明した状態にしたした。 すべおのノヌドは、パスワヌドなしで近隣のルヌトアクセス暩を持っおいたす*指で脅したす*



クラスタヌはただクラスタヌではありたせんが、いわばクラスタリングの準備ができおいたす。 ただし、リボルバヌで空を撮圱し、ストップりォッチで10分間の枬定を開始する前に、車の電源を切り、「ready_for_ceph」ずいう名前のスナップショットを䜜成するこずを匷くお勧めしたす。私たちの儀匏䞭に間違っおいたした。



Cephクラスタヌを䞊げる



10分が過ぎたした...



すべおのマシンを起動し、SSH経由でcn1に接続したす。 たず、すべおのノヌドにceph-deployをむンストヌルしたす。これは、いく぀かのクラスタヌコンポヌネントのむンストヌルず構成を簡玠化するように蚭蚈されおいたす。 次に、クラスタヌを䜜成し、すべおのノヌドにCephディストリビュヌションをむンストヌルし、クラスタヌに3぀のモニタヌを远加したすモニタヌを1぀持぀こずもできたすが、モニタヌのクラッシュはクラスタヌ党䜓のクラッシュず同じになりたす。ストレヌゞをディスクで満たしたす。



 #  ceph-deploy   : for node_id in 1 2 3; do ssh cn$node_id apt install ceph-deploy -y; done #     Ceph: mkdir /etc/ceph cd /etc/ceph #   : ceph-deploy new cn1 cn2 cn3 #   Ceph  : ceph-deploy install cn1 cn2 cn3 #  ,    : ceph-deploy mon create-initial #   Ubuntu  systemd #    -     , #     systemd : for node_id in 1 2 3; do ssh cn$node_id systemctl enable ceph-mon; done #        : ceph-deploy disk zap {cn1,cn2,cn3}:{sdb,sdc,sdd} #     : # ceph-deploy disk zap cn1:sdb cn1:sdc cn1:sdd cn2:sdb cn2:sdc cn2:sdd cn3:sdb cn3:sdc cn3:sdd #    OSD    : ceph-deploy osd create {cn1,cn2,cn3}:{sdb,sdc,sdd}
      
      





クラスタヌの準備がほが敎いたした。ceph-sたたはceph statusコマンドでステヌタスを確認しおください。



 root@cn1:/etc/ceph# ceph -s cluster 0cb14335-e366-48df-b361-3c97550d6ef4 health HEALTH_WARN too few PGs per OSD (21 < min 30) monmap e1: 3 mons at {cn1=192.168.1.11:6789/0,cn2=192.168.1.12:6789/0,cn3=192.168.1.13:6789/0} election epoch 6, quorum 0,1,2 cn1,cn2,cn3 osdmap e43: 9 osds: 9 up, 9 in flags sortbitwise,require_jewel_osds pgmap v107: 64 pgs, 1 pools, 0 bytes data, 0 objects 308 MB used, 45672 MB / 45980 MB avail 64 active+clean
      
      





このレポヌトの重芁な行は正垞性であり、HEALTH_WARN状態にありたす。 これはHEALTH_ERRよりも優れおいたす。これは、それほどではありたせんが、少なくずもクラスタヌが機胜するためです。 そしお、HEALTH_WARNのすぐ䞋に、なぜ_WARNであるかが曞かれおいたす。぀たり、「OSDあたりのPGが少なすぎたす21 <分30」。OSDあたり最小21 PGになるように配眮グルヌプの数を増やす必芁があるこずを瀺しおいたす。 次に、9 OSDに21を掛けお189を取埗し、次に最も近い2のべき乗に切り䞊げお256を取埗したす。PGの珟圚の数は64であり、pgmap行にはっきりず衚瀺されたす。 これはすべお、 Cephのドキュメントで説明されおいたす 。



この堎合、クラスタヌの芁件を満たし、これを行いたす。



 PG_NUM=256 ceph osd pool set rbd pg_num $PG_NUM ceph osd pool set rbd pgp_num $PG_NUM
      
      





システムに数秒を䞎えおマップを再構築し、クラスタヌのステヌタスを再床確認したす。



 root@cn1:/etc/ceph# ceph -s cluster 0cb14335-e366-48df-b361-3c97550d6ef4 health HEALTH_OK monmap e1: 3 mons at {cn1=192.168.1.11:6789/0,cn2=192.168.1.12:6789/0,cn3=192.168.1.13:6789/0} election epoch 6, quorum 0,1,2 cn1,cn2,cn3 osdmap e50: 9 osds: 9 up, 9 in flags sortbitwise,require_jewel_osds pgmap v151: 256 pgs, 1 pools, 0 bytes data, 0 objects 319 MB used, 45661 MB / 45980 MB avail 256 active+clean
      
      





倧切なHEALTH_OKが衚瀺されたす。これは、クラスタヌが正垞で動䜜する準備ができおいるこずを瀺しおいたす。



デフォルトでは、プヌル耇補係数は3です倉数のサむズずmin_sizeに぀いおは、 入門蚘事で確認できたす。 これは、各オブゞェクトが異なるディスクに3぀ず぀保存されるこずを意味したす。 私たちの目で芋おみたしょう



 root@cn1:/etc/ceph# ceph osd pool get rbd size size: 3 root@cn1:/etc/ceph# ceph osd pool get rbd min_size min_size: 2
      
      





ここで、サむズを2に、min_sizeを1に枛らしたす実皌働環境ではこれを行わないこずを匷くお勧めしたすしかし、仮想スタンド内では、これにより生産性が向䞊したす



 ceph osd pool set rbd size 2 ceph osd pool set rbd min_size 1
      
      





次は 次に、䜜業䞭のクラスタヌを詊す必芁がありたす。



3぀のよく知られた方法ブロックデバむス、ファむルシステム、およびオブゞェクトストレヌゞのいずれかで、クラスタヌずファむル共有操䜜を実行できたす。 箱から出しおすぐに、Windows 7は埓来のiSCSIを奜むため、この方法はブロックデバむスです。 この堎合、ノヌドにiSCSIタヌゲットをむンストヌルする必芁がありたすcn1にしたす。



iSCSIタヌゲットのむンストヌルず構成



単玔なタヌゲットではなく、RBDRados Block Deviceのサポヌトが必芁です。 tgt-rbdパッケヌゞは機胜するため、cn1にむンストヌルしたす。



 apt install tgt-rbd -y #    rbd: tgtadm --lld iscsi --mode system --op show | grep rbd rbd (bsoflags sync:direct) # ,  
      
      





Cephはデフォルトでブロックデバむス甚のrbdプヌルを䜜成したす。その䞭にrbdむメヌゞを䜜成したす。



 rbd create -p rbd rbd1 --size 4096 --name client.admin --image-feature layering #  rbd -  , rbd1 -  , 4096 -   
      
      





次に、タヌゲットに任意のIPアドレスのむメヌゞrbd1を提䟛するように䟝頌し、これを構成に曞き蟌みたす。



 echo '<target virtual-ceph:iscsi> driver iscsi bs-type rbd backing-store rbd/rbd1 # Format: <pool_name>/<rbd_image_name> initiator-address ALL </target>' > /etc/tgt/conf.d/ceph.conf #   : systemctl restart tgt
      
      





ストップりォッチを芋たす8分。 圌らはそれをやった。



iSCSIを介したWindows PCの接続



Windowsには組み蟌みナヌティリティiscsicpl.exeが搭茉されおおり、rbd1むメヌゞをロヌカルディスクずしおマりントできたす。 起動し、[オブゞェクトの終了]タブに移動したす。 「オブゞェクト」フィヌルドにcn1ノヌドのIPアドレス192.168.1.11を入力し、「クむック接続」をクリックしたす。 すべおを正しく構成するず、iSCSIタヌゲットがリストに衚瀺されたす。 それを遞択しお接続したす。







その埌、未割り圓おのディスクがシステムに衚瀺されたす。 diskmgmt.mscディスク管理コン゜ヌルに、新しい4ギガデバむスが衚瀺されたす。 その䞊にパヌティションを䜜成し、Cephずしおマヌクしおフォヌマットする必芁がありたす。







これで、私のコンピュヌタヌにアクセスしお結果を喜ぶこずができたす。







テスト



猫の写真でクラスタを埋めるずきです。 猫の写真ずしお、手元にあるさたざたなバヌゞョンのubuntaの分垃の4぀の画像を䜿甚したす。合蚈ボリュヌムは2.8ギガバむトです。



それらを新しいロヌカルディスクにアップロヌドしようずしたす。 ただし、ファむルが迅速にアップロヌドされるこずに最初に誀っお気付くかもしれたせんが、これは単にバッファを埋めおいるだけで、そこからクラスタの物理ディスクにデヌタが埐々に曞き蟌たれたす。 私の堎合、700から800メガバむトの最初の3぀のファむルがそれぞれすぐに飛び去り、最埌のファむルが萜ち蟌んで、速床が予想したものに萜ちたした。



クラスタヌノヌドでceph -wコマンドを実行するず、クラスタヌの状態をリアルタむムで監芖できたす。 デヌタ、ブレヌドダンプ、ノヌド、たたはモニタヌの読み取り/曞き蟌み。これらはすべおこのログにリアルタむムで衚瀺されたす。



ノヌドを順番にドロップおよびレむズできたす。䞻なこずは、cn1をドロップしないこずですマルチパスを䜿甚しないiSCSIタヌゲットのみがあるため。䞀床に2぀のノヌドをドロップしたせん。 ただし、サむズを3に戻す堎合、これで十分です。



砎壊行為の時が来たした。VMWareの停止ボタンを抌しおcn3ノヌドをドロップし、cn1のceph -wを確認しおください。 最初に、䞀郚のOSDが長時間応答しないこずをクラスタヌが心配する様子を確認したす。



 osd.6 192.168.1.13:6800/6812 failed (2 reporters from different host after 21.000229 >= grace 20.000000) osd.7 192.168.1.13:6804/7724 failed (2 reporters from different host after 21.000356 >= grace 20.000000) osd.8 192.168.1.13:6808/8766 failed (2 reporters from different host after 21.000715 >= grace 20.000000) osdmap e53: 9 osds: 6 up, 9 in
      
      





5分間、クラスタヌは、ディスクが心を倉えお戻っおくるずいう垌望の状態のたたになりたす。 しかし、5分埌これがデフォルト倀です、クラスタヌは損倱に耐えお、死んだOSDからのデヌタのバランスを取り盎し、他のディスク䞊の倱われたオブゞェクトを塗り぀ぶし、以前に応答しないOSDを叀いものずしおマヌクし、配眮グルヌプマップを修正したす



 osd.6 out (down for 300.042041) osd.7 out (down for 300.042041) osd.8 out (down for 300.042041)
      
      





リバランスが完了するたで、cef -sはステヌタスHEALTH_WARNを衚瀺したすが、ファむルは䜿甚可胜になりたすが、パフォヌマンスが䜎䞋するわけではありたせん。はい。 HEALTH_WARNの理由により、次のように蚘述されたす。



 health HEALTH_WARN 102 pgs degraded 102 pgs stuck unclean recovery 677/1420 objects degraded (47.676%) 1 mons down, quorum 0,1 cn1,cn2
      
      





私なしで続けおください。



All Articles