آموزش نحوه نصب Ceph در اوبونتو 18.04 LTS به صورت جامع
نصب Ceph چگونه انجام میشود؟ اجزای کلاستر یا خوشههای Ceph کدامند؟ شاید به نظر برسد که راه اندازی Ceph ، بسیار دشوار است و نمیتوان به سادگی آن را انجام داد. اما بهطورکلی، فعالسازی Ceph به زمان و دقت بسیار زیادی نیاز دارد. در این مقاله قصد داریم به نصب و پیکربندی یک کلاستر (خوشه) ذخیره سازی Ceph کاربردی در سرور Ubuntu 18.04 LTS بپردازیم. به بیانی بسیار ساده Ceph یک راه حل ذخیره سازی open-source (منبع باز) است که کلاستر ذخیره سازی شیء توزیع شده را پیاده سازی کرده و رابطهایی برای یک شی، بلوک و ذخیره سازی در سطح فایل فراهم میکند.
سرورهای مجازی ابر آراز از تکنولوژی Ceph بهرهبردهاند و شما میتوانید از آپتایم 99/9 که در اختیارتان میگذاریم، استفاده نمایید. بدین طریق شما دیگر نگرانی بابت داون شدن سایت خود نخواهید داشت. اگر قصد خرید سرور با امکانات و امتیازات ویژه و متعدد دارید،ب وب سایت ما سرزده و از خدمات ما استفاده نمایید.
اجزای کلاستر ذخیره Ceph
در ادامه قصد داریم تا با هم اجزای کلاستر Ceph را بررسی کنیم. به یاد داشته باشید که آشنایی با این اجزا در زمان نصب Ceph از اهمیت بسیار بالایی برخوردار است.
مانیتورها
یک Ceph Monitor یا ceph-mon نقشههایی از وضعیت خوشه، از جمله نقشه مانیتور، نقشه مدیر، نقشه OSD و نقشه CRUSH را حفظ میکند. بررسی این مورد در زمان نصب Ceph از اهمیت بسیار بالایی برخوردار است.
OSD های Ceph
یک osd ceph کاربردهای بسیار زیادی دارد، برخی از این کاربردها عبارتند از:
- ذخیرهسازی دادهها
- تکثیر دادهها
- بازیابی دادهها
- متعادل سازی توزیع دادهها
- قرار دادن اطلاعات نظارتی در اختیار مانیتورها و مدیران Ceph
MDSs
یک سرور Ceph Metadata (MDS، ceph-mds) فراداده را به نمایندگی از Ceph Filesystem ذخیره میکند (یعنی دستگاههای Ceph Block و Ceph Object Storage از MDS استفاده نمیکنند). سرورهای Ceph Metadata به کاربران سیستم فایل POSIX اجازه میدهد تا دستورات اساسی مانند ، ls ، find و… را بدون بار سنگینی بر Ceph Storage اجرا کنند.
Ceph storage یک پروژه اُپن سورس است که راهکاری برای Software-define storage با کیفیت بالا و حذف single point of failure فراهم مینماید. به عبارتی Ceph storage یک راهکار واقعی و جامع در زمینهی سرویسهای یکپارچه ذخیرهسازی است که دسترسیهای استوریج در سطوح Block، Object و File را در اختیار ما میگذارد. اگر قصد آشنایی بیشتر با این مفهوم را دارید به وبلاگ ابرآراز مراجعه کرده و مقالهی Ceph storage چیست را مطالعه نمایید.
اهمیت شناخت Managers در زمان نصب Ceph
یک Ceph Manager (ceph-mgr) مسئول پیگیری معیارهای زمان اجرا و وضعیت فعلی خوشه (کلاستر) Ceph ، از جمله استفاده از ذخیره سازی، معیارهای عملکرد فعلی و بار سیستم است.
Ceph Cluster در معماری اوبونتو 18.04
استقرار کلاستر Ceph بر اساس نمودار سیستم زیر است:
به یاد داشته باشید که نام میزبان هر سرور باید مطابق آن تنظیم شده و /etc /hosts فایل پیکربندی شود تا در تمامی گرههای Ceph Cluster شبیه شکل زیر در دسترس باشند:
192.168.18.70 rgw.example.com rgw 192.168.18.71 mon01.example.com mon01 192.168.18.72 mon02.example.com mon02 192.168.18.73 mon03.example.com mon03 192.168.18.75 osd01.example.com osd01 192.168.18.76 osd02.example.com osd02 192.168.18.77 osd03.example.com osd03
نام میزبان و آدرس IP را متناسب با تنظیمات خود تغییر دهید. به عنوان یک پیش نیاز برای راه اندازی Ceph ، اطمینان حاصل کنید که سیستم شما به روز شده است:
sudo apt update sudo apt -y upgrade sudo reboot
Node Ceph Admin Node را آماده کنید. پس از راهاندازی مجدد سیستمها، میتوانید استقرار و نصب Ceph را شروع کنید. توصیه میشود یک گره اضافی داشته باشید که کار آن استفاده از ceph در تمام گرههای Ceph است. این گره را گره مدیریت مینامند.
192.168.18.74 ceph-admin.example.com ceph-admin
Node Ceph Admin Node را آماده کنید
شما باید مخازن Ceph را به گره مدیریت ceph اضافه کرده و سپس بسته ceph-install را نصب کنید. گره سرپرست ما در اینجا دارای IP 192.168.18.74 است.
وارد کردن کلید مخزن
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
مخزن Ceph را به سیستم خود اضافه کنید. این کار نصب Ceph nautilus را انجام میدهد.
echo deb https://download.ceph.com/debian-nautilus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
مخزن خود را به روز کرده و ceph-install را نصب کنید:
sudo apt update sudo apt -y install ceph-deploy
آماده سازی Ceph Nodes برای نصب Ceph
گره سرپرست باید دسترسی SSH بدون رمز عبور به گرههای Ceph داشته باشد. وقتی مدیر ceph به عنوان یک کاربر به یک گره Ceph وارد میشود ، آن کاربر خاص باید دارای امتیازات sudo بدون رمز عبور باشد.
کاربر SSH را در تمامی گرههای Ceph اضافه کنید؛ rgw ، osd nodes و مانیتورها
export USER_NAME="ceph-admin" export USER_PASS="StrOngP@ssw0rd" sudo useradd --create-home -s /bin/bash ${USER_NAME} echo "${USER_NAME}:${USER_PASS}"|sudo chpasswd echo "${USER_NAME} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/${USER_NAME} sudo chmod 0440 /etc/sudoers.d/${USER_NAME}
در این مرحله از نصب Ceph تأیید کنید که کاربر میتواند sudo را بدون درخواست رمز عبور اجرا کند
jmutai@osd01:~$ su - ceph-admin Password: ceph-admin@osd01:~$ sudo su - root@ceph-admin:~#
کلیدهای SSH را در ceph-admin node ایجاد کنید، اما از sudo یا کاربر اصلی استفاده نکنید. عبارت عبور را خالی بگذارید:
# su - ceph-admin $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ceph-admin/.ssh/id_rsa): Created directory '/home/ceph-admin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ceph-admin/.ssh/id_rsa. Your public key has been saved in /home/ceph-admin/.ssh/id_rsa.pub. The key fingerprint is: SHA256:DZZdfRS1Yo+unWAkDum7juShEF67pm7VdSkfWlsCpbA ceph-admin@ceph-admin
The key's randomart image is: +---[RSA 2048]----+ | . .. .. o=| | o..o . . o| | E .= o o o | | +.O .. + | | . .. .oS.*. . . | |. o.....ooo . | | o.. o . . o . | | ...= o . . + . | |oooo o.+. . o | +----[SHA256]-----+ $ ls /home/ceph-admin/.ssh/ config id_rsa id_rsa.pub known_hosts
~/.ssh/خود را پیکربندی کنید
$ cat /home/ceph-admin/.ssh/config Host osd01 Hostname osd01 User ceph-admin Host osd02 Hostname osd02 User ceph-admin Host osd03 Hostname osd03 User ceph-admin Host osd01 Hostname osd01 User ceph-admin Host mon01 Hostname mon01 User ceph-admin
Host mon02 Hostname mon02 User ceph-admin Host mon03 Hostname mon03 User ceph-admin Host rgw Hostname rgw User ceph-admin
کلید هر گره Ceph را کپی کنید. (این کار را از Ceph Admin Node به عنوان کاربر ceph-admin انجام دهید)
for i in rgw mon01 mon02 mon03 osd01 osd02 osd03; do ssh-copy-id $i done
اگر کاربر از راه دور شما در همه Ceph Nodes نیست، ceph-admin را با نام کاربری مناسب جایگزین کنید.
استقرار و نصب Ceph
Ceph به Clock drift حساس است، بنابراین اطمینان حاصل کنید که NTP را در همه Ceph Nodes ، به ویژه مانیتورها، تنظیم کردهاید.
sudo apt install ntp
ما قصد داریم یک خوشه سه Ceph Node با یک Ceph Monitor و سه Ceph OSD Daemons ایجاد کنیم. هنگامی که خوشه به حالت فعال رسید، آن را با افزودن یک سرور متادیتا (فرا داده) و دو مانیتور Ceph دیگر گسترش دهید.
بیایید با ایجاد یک دایرکتوری در گره مدیریتی خود برای حفظ فایلهای پیکربندی و کلیدهایی که ceph-splace برای خوشه ایجاد میکند، شروع کنیم.
mkdir ceph-deploy cd ceph-deploy
ابزار ceph-استقرار فایلها را به فهرست فعلی منتقل میکند. هنگام اجرا و نصب ceph -استقرار ، مطمئن شوید که در این فهرست هستید.
مرحله 1: ابتدا گرههای مانیتور ceph را راه اندازی کنید
دستورات زیر را بر روی گره سرپرست خود از فهرست ceph-استقرار که برای نگهداری جزئیات پیکربندی خود ایجاد کردهاید اجرا کنید.
$ ceph-deploy new mon01 mon02 mon03
نمونه ی خروجی دستور بالا به شرح زیر میباشد:
ceph-admin@ceph-admin:~/ceph-deploy$ ceph-deploy new mon01 mon02 mon03 [ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph-admin/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (2.0.1): /usr/bin/ceph-deploy new mon01 [ceph_deploy.cli][INFO ] ceph-deploy options: [ceph_deploy.cli][INFO ] username : None [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 0x7f4c0720a950> [ceph_deploy.cli][INFO ] cluster : ceph [ceph_deploy.cli][INFO ] ssh_copykey : True [ceph_deploy.cli][INFO ] mon : ['mon01'] [ceph_deploy.cli][INFO ] func : <function new at 0x7f4c07456d70> [ceph_deploy.cli][INFO ] public_network : None [ceph_deploy.cli][INFO ] ceph_conf : None [ceph_deploy.cli][INFO ] cluster_network : None [ceph_deploy.cli][INFO ] default_release : False [ceph_deploy.cli][INFO ] fsid : None [ceph_deploy.new][DEBUG ] Creating new cluster named ceph [ceph_deploy.new][INFO ] making sure passwordless SSH succeeds [mon01][DEBUG ] connected to host: ceph-admin [mon01][INFO ] Running command: ssh -CT -o BatchMode=yes mon01 [mon01][DEBUG ] connection detected need for sudo [mon01][DEBUG ] connected to host: mon01 [mon01][DEBUG ] detect platform information from remote host [mon01][DEBUG ] detect machine type [mon01][DEBUG ] find the location of an executable [mon01][INFO ] Running command: sudo /bin/ip link show [mon01][INFO ] Running command: sudo /bin/ip addr show [mon01][DEBUG ] IP addresses found: [u'192.168.18.71', u'192.168.19.71', u'192.168.121.23'] [ceph_deploy.new][DEBUG ] Resolving host mon01 [ceph_deploy.new][DEBUG ] Monitor mon01 at 192.168.18.71 [ceph_deploy.new][DEBUG ] Monitor initial members are ['mon01'] [ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.18.71'] [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..
مرحله 2: نصب بستههای Ceph
برای فعالسازی و نصب Ceph بستههای آن را روی تمامی گرهها نصب کنید:
ceph-deploy install mon01 mon02 mon03 osd01 osd02 osd03 rgw
ابزار ceph-استقرار Ceph را روی هر گره نصب میکند.
نمونهی خروجی دستور بالا به شرح زیر است:
.......................... [osd03][DEBUG ] Setting up ceph-base (13.2.2-1bionic) ... [osd03][DEBUG ] Setting up python-pecan (1.2.1-2) ... [osd03][DEBUG ] update-alternatives: using /usr/bin/python2-pecan to provide /usr/bin/pecan (pecan) in auto mode [osd03][DEBUG ] update-alternatives: using /usr/bin/python2-gunicorn_pecan to provide /usr/bin/gunicorn_pecan (gunicorn_pecan) in auto mode [osd03][DEBUG ] Setting up ceph-osd (13.2.2-1bionic) ... [osd03][DEBUG ] chown: cannot access '/var/lib/ceph/osd/*/block*': No such file or directory [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-osd.target -> /lib/systemd/system/ceph-osd.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-osd.target -> /lib/systemd/system/ceph-osd.target. [osd03][DEBUG ] Setting up ceph-mds (13.2.2-1bionic) ... [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mds.target -> /lib/systemd/system/ceph-mds.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mds.target -> /lib/systemd/system/ceph-mds.target. [osd03][DEBUG ] Setting up ceph-mon (13.2.2-1bionic) ... [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mon.target -> /lib/systemd/system/ceph-mon.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mon.target -> /lib/systemd/system/ceph-mon.target. [osd03][DEBUG ] Setting up ceph-mgr (13.2.2-1bionic) ... [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mgr.target -> /lib/systemd/system/ceph-mgr.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mgr.target -> /lib/systemd/system/ceph-mgr.target. [osd03][DEBUG ] Setting up ceph (13.2.2-1bionic) ... [osd03][DEBUG ] Processing triggers for libc-bin (2.27-3ubuntu1) ... [osd03][DEBUG ] Processing triggers for ureadahead (0.100.0-20) ... [osd03][DEBUG ] Processing triggers for systemd (237-3ubuntu10) ... [osd03][INFO ] Running command: sudo ceph --version [osd03][DEBUG ] ceph version 13.2.2 (02899bfda814146b021136e9d8e80eba494e1126) mimic (stable)
مرحله 3: استقرار مانیتورهای اولیه و جمعآری کلیدها
با اجرای دستور، مانیتورهای اولیه را ایجاد کنید:
ceph-deploy mon create-initial
با این کار، تعدادی کلید در دایرکتوری کاری شما قرار داده میشود.
اجرای manager daemon برای نصب Ceph
ceph-deploy mgr create mon01 mon02 mon03
اضافه کردن سرورهای فراداده:
ceph-deploy mds create mon01 mon02 mon03
مرحله 4: کپی کردن کلید مدیریت Ceph
فایل پیکربندی و کلید مدیریت را در گره سرپرست و Ceph Nodes خود کپی کنید:
ceph-deploy admin mon01 mon02 mon03 osd01 osd02 osd03
مرحله 5: اضافه کردن سه OSD
فرض میکنیم شما در هر گره، دیسک بلااستفادهای دارید به نام /dev /device. شکل من شبیه شکل زیر است:
root@osd01:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 32G 0 disk |-sda1 8:1 0 487M 0 part /boot |-sda2 8:2 0 1.9G 0 part [SWAP] `-sda3 8:3 0 29.6G 0 part / vdb 252:0 0 5G 0 disk vdc 252:16 0 5G 0 disk vdd 252:32 0 5G 0 disk
من سه دستگاه برای استفاده دارم:
- dev/vda
- dev/vdb
- dev/vdc
اطمینان حاصل کنید که دستگاه در حال حاضر استفاده نمیشود و اطلاعات مهمی در آن وجود ندارد. نحو استفاده به شرح زیر است:
ceph-deploy osd create --data {device} {ceph-node}
ما در این قسمت از نصب Ceph دستورات زیر را اجرا میکنیم:
for i in vdb vdc vdd; do for j in osd01 osd02 osd03; do ceph-deploy osd create --data /dev/$i $j done done
توجه: اگر در حال ایجاد OSD روی حجم LVM هستید ، آرگومان –data باید به جای مسیر به دستگاه بلوک حجم ، volume_group/lv_name باشد.
خروجی دستور lsblkcomm باید تغییر کند
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
|-sda1 8:1 0 487M 0 part /boot
|-sda2 8:2 0 1.9G 0 part [SWAP]
`-sda3 8:3 0 29.6G 0 part /
vdb 252:0 0 5G 0 disk
`-ceph--908c8792--04e8--414f--8430--faa78e9b18eb-osd--block--275c9d8b--3825--4898--9b3b--5ea080fd7137 253:0 0 5G 0 lvm
vdc 252:16 0 5G 0 disk
`-ceph--c79a5159--3980--47e8--b649--ed0c44d32d51-osd--block--a50c2ebc--8d65--4d16--9196--6f741606b3a2 253:1 0 5G 0 lvm
vdd 252:32 0 5G 0 disk
`-ceph--594ff477--943e--49d8--8e08--addf5dbccca3-osd--block--5b71bad9--7fa8--41af--a3af--48af1219aafd 253:2 0 5G 0 lvm
مرحله 6: سلامت خوشه خود را بررسی کنید.
وضعیت خوشه Ceph را بررسی کنید
root@osd02:~# sudo ceph health HEALTH_OK root@osd02:~# sudo ceph status cluster: id: 5594514c-4d70-4ec8-a74e-e54ac2c1994f health: HEALTH_OK services: mon: 1 daemons, quorum mon01 mgr: osd01(active) osd: 9 osds: 9 up, 9 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 9.0 GiB used, 36 GiB / 45 GiB avail pgs:
هنگامی که مانیتورهای جدید Ceph خود را اضافه کردید ، Ceph همگام سازی مانیتورها را آغاز کرده و حد نصاب را تشکیل می دهد. با انجام موارد زیر می توانید وضعیت حد نصاب را بررسی کنید:
ceph quorum_status --format json-pretty
مرحله 7: داشبورد Ceph را فعال کنید
ماژول Ceph Dashboard را فعال کنید:
sudo ceph mgr module enable dashboard sudo ceph mgr module ls
تولید گواهینامه های امضا شده برای داشبورد:
sudo ceph dashboard create-self-signed-cert
ایجاد کاربر برای داشبورد:
sudo ceph dashboard ac-user-create admin 'Str0ngP@sswOrd' administrator
فعال کردن Frontend مدیریت Object Gateway:
$ sudo radosgw-admin user create --uid=admin --display-name='Ceph Admin' --system
در نهایت ، اطلاعات کاربری را به داشبورد ارائه دهید:
sudo ceph dashboard set-rgw-api-access-key <api-access-key> sudo ceph dashboard set-rgw-api-secret-key <api-secret-key>
اگر در راه اندازی Object Gateway از گواهی خود امضا استفاده می کنید ، باید تأیید گواهی را غیرفعال کنید:
sudo ceph dashboard set-rgw-api-ssl-verify False
مرحله 8: Rados Gateway را اضافه کنید
برای استفاده از جزء Ceph Object Gateway Ceph ، باید یک نمونه از RGW را مستقر کنید. موارد زیر را برای ایجاد یک نمونه جدید از Rados Gateway انجام دهید:
$ ceph-deploy rgw create {gateway-node}
مثال:
$ ceph-deploy rgw create rgw
به طور پیش فرض ، نمونه RGW روی پورت 7480 گوش می دهد. این را می توان با ویرایش ceph.conf در گره ای که RGW را اجرا می کند تغییر داد:
[client] rgw frontends = civetweb port=80
تنظیم مجدد خوشه(کلاستر) Ceph شما
اگر در هر مرحله با مشکل روبرو شدید و می خواهید از نو شروع کنید ، موارد زیر را برای پاک کردن بسته های Ceph انجام داده و همه داده ها و تنظیمات آن را پاک کنید:
ceph-deploy purge {ceph-node} [{ceph-node}] ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys rm ceph.*
اگر پاکسازی را اجرا می کنید ، باید Ceph را دوباره نصب کنید. آخرین دستور rm فایلهایی را که توسط ceph-spyqually local در حین نصب قبلی نوشته شده است حذف می کند.