Бул күмөн - антпесе, биз бул абдан кызыктуу жана күлкүлүү продукт менен айланып калмак эмес.
Cephтин операциясына катышкандардын көбү анча көп эмес (же тагыраак айтканда, өтө сейрек), бирок кээде талап кылынган учурга туш болушкан - Cephти iSCSI же FC аркылуу туташтыруу. Эмне үчүн? Мисалы, кандайдыр бир себептерден улам виртуалдаштыла элек Windows же Solaris серверине Cephтен сүрөт тапшырыңыз. Же виртуалдаштырылган, бирок Ceph аткара албаган гипервизорду колдонуу - жана биз билгендей, алардын көбү бар. Мисалы? Мисалы, HyperV же ESXi, алар активдүү колдонулат. Ал эми тапшырма Ceph тартып конок машинага бир сүрөттөлүш кызмат пайда болсо, бул абдан кызыктуу ишке айланат.
Ошентип, берилген:
мурунтан эле иштеп жаткан Ceph кластери
iSCSI аркылуу берилиши керек болгон мурунтан эле бар сүрөт
Бассейн аты mypool, сүрөттүн аты менин сүрөтүм
баштоо?
Биринчиден, FC же iSCSI жөнүндө сөз кылганда, бизде демилгечи жана максаттуу субъекттер бар. Максат - бул сервер, демилгечи - кардар. Биздин милдет аз күч менен демилгечиге Ceph сүрөтүн берүү болуп саналат. Бул биз максатты кеңейтишибиз керек дегенди билдирет. Бирок кайда, кайсы компьютерде?
Бактыга жараша, Ceph кластеринде бизде жок дегенде бир компонент бар, анын IP дареги такталган жана Cephтин эң маанилүү компоненттеринин бири конфигурацияланган жана ал компонент монитор болуп саналат. Демек, биз мониторго iSCSI бутасын орнотобуз (жана бир эле учурда демилгечи, жок дегенде тесттер үчүн). Мен муну CentOSда жасадым, бирок чечим башка бөлүштүрүү үчүн да ылайыктуу - сиз жөн гана пакеттерди бөлүштүрүүңүздө алгылыктуу түрдө орнотуу керек.
# yum -y install iscsi-initiator-utils targetcli
Орнотулган пакеттердин максаты эмне?
targetcli — Linux ядросуна орнотулган SCSI максаттуу башкаруу үчүн утилита
iscsi-initiator-utils - Linux ядросуна орнотулган iSCSI демилгечисин башкаруу үчүн колдонулган утилиталары бар пакет
Сүрөттү iSCSI аркылуу демилгечиге тапшыруу үчүн окуяларды өнүктүрүүнүн эки варианты бар - максаттын колдонуучулар мейкиндигин колдонуу же сүрөттү операциялык системага көрүнгөн блоктук түзүлүш катары туташтыруу жана аны iSCSI аркылуу экспорттоо. Биз экинчи жол менен кетебиз - колдонуучулар мейкиндиги дагы эле "эксперименталдык" абалда жана жемиштүү колдонууга бир аз даяр эмес. Кошумчалай кетсек, аны менен тузактар бар, алар жөнүндө көп сүйлөп, (оо үрөй учурар!) талаша аласыз.
Эгерде биз узак колдоо цикли менен бир аз туруктуу бөлүштүрүүнү колдонсок, анда бизде бар ядро бул кандайдыр бир байыркы, байыркы версия. Мисалы, CentOS7де 3.10.*, CentOS8де 4.19. Бизди кеминде 5.3 (же тагыраак айтканда 5.4) жана андан жаңыраак ядро кызыктырат. Неге? Анткени демейки боюнча Ceph сүрөттөрүндө эски өзөктөр менен шайкеш келбеген параметрлердин топтому иштетилген. Бул биздин бөлүштүрүү үчүн репозиторийди жаңы ядро менен туташтырабыз (мисалы, CentOS үчүн бул elrepo), жаңы ядрону орнотуп, жаңы ядро менен иштөө үчүн системаны кайра жүктөйбүз:
Монитор менен серверди кайра жүктөө (бизде үч монитор бар, туурабы?)
Сүрөттү блоктук түзүлүш катары туташтыруу
# rbd map mypool/myimage
/dev/rbd0
Болгону максатты конфигурациялоо гана калды. Бул мисалда мен максатты конфигурациялайм. демо режими - аутентификациясыз, көрүнөө жана баарына жеткиликтүү. Өндүрүштүк чөйрөдө сиз аутентификацияны конфигурациялоону кааласаңыз керек, бирок бул бүгүнкү көңүл ачуу үчүн көнүгүү үчүн бир аз чектелүү.
/dev/rbd/mypool/myimage файлы менен байланышкан disk1 аттуу серверди түзүңүз. Көрсөтүлгөн файл udev демону тарабынан /dev/rbd0га автоматтык түрдө түзүлгөн символдук шилтеме. Биз символдук шилтемени колдонобуз, анткени rbd түзмөгүнүн аталышы Ceph сүрөттөрү хостко туташкан тартипте өзгөрүшү мүмкүн.
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute demo_mode_write_protect=0
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute generate_node_acls=1
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute cache_dynamic_acls=1
Конфигурацияны сактаңыз:
# targetcli saveconfig
Максаттын бар экендигин текшерүү:
# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool
Биз максатты бириктиребиз:
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (multiple)
Login to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] successful.
Эгер бардыгын туура кылган болсоңуз, серверде SCSI түзмөгүнө окшош жаңы диск пайда болот, бирок чындыгында iSCSI бутасы аркылуу жеткиликтүү болгон Cephтин сүрөтү. Жүктөө көйгөйлөрүн болтурбоо үчүн, туташкан дискти жана табылган максатты жергиликтүү демилгечиден алып салуу жакшы:
Сүрөт автоматтык түрдө туташып, туташкандан кийин максат стратификацияланышы үчүн конфигурацияны сактап калуу гана калды. Бутаны учуруу эки кадамдан турат - RBDди туташтыруу жана иш жүзүндө бутаны ишке киргизүү.
Биринчиден, RBD сүрөттөрүнүн хостко автоматтык туташууларын конфигурациялайлы. Бул /etc/ceph/rbdmap файлына төмөнкү саптарды кошуу менен ишке ашырылат:
Акыркы сыноо - бул мониторубузду кайра жүктөө (бул азыр iSCSI максаты). Белгилей кетчү нерсе, эгерде биз буйрук менен демилгечинин маалымат базасын тазалабасак iscsiadm -n discoverydb -o жок кылуу ... сиз жүктөбөй турган же жүктөө үчүн көп убакытты талап кылган серверге туш болушуңуз мүмкүн.
Эмне калды?
Биз максатты жөнөткүбүз келген серверде демилгечиди конфигурациялаңыз.
Максатыбыздын катачылыкка чыдамдуулугун кантип камсыз кылабыз?
Сиз башка мониторлордогу максаттарды конфигурациялап, көп жолду орното аласыз (vmware муну түшүнөт жана ал тургай иштейт, Hyper-V түшүнбөйт - бул SCSI кулпуларын талап кылат). Ядродогу Ceph кардары кэшти колдонбогондуктан, бул абдан ыңгайлуу. Же дагы бир вариант - үч компоненттен турган кластердик ресурсту түзүү - атайын максаттуу IP дарек жана rbdmap жана scsi-максат кызматтары жана бул ресурсту кластердик инструменттер аркылуу башкаруу (кардиостимуляторду ким айтты?)
ордуна эпилогунда жөнүндө
Көрүнүп тургандай, бул макала бир аз тамаша - бирок анда мен "тез жана мисалдар менен" бир эле учурда бир нече абдан популярдуу темаларды карап чыгууга аракет кылдым - iSCSI максаттуу, ал сөзсүз түрдө Ceph сүрөттөрүн экспорттоо мүмкүн эмес - бирок, мисалы, LVM көлөмдөрүн экспорттоо, iSCSI демилгечиси менен иштөөнүн негиздери (бутаны кантип сканерлөө керек, бутага кантип туташуу керек, ажыратуу, маалымат базасынан максаттуу жазууну жок кылуу), systemd үчүн өз бирдигин жазуу жана башкалар
Бул экспериментти толугу менен кайталабасаңыз да, жок дегенде ушул макаладан бир нерсе сизге пайдалуу болот деп ишенем.