بلاگ/نصب کلاستر ذخیره‌سازی Ceph در اوبونتو 18.04
به‌روز شده

نصب کلاستر ذخیره‌سازی Ceph در اوبونتو 18.04

Ceph یک پلتفرم ذخیره‌سازی متن‌باز است که سطح بالایی از عملکرد، اطمینان و مقیاس‌پذیری را در خود دارد. این در واقع، یک سیستم ذخیره‌سازی گسترده رایگان است که یک رابط کاربری برای ذخیره فایل، آبجکت و بلوک فراهم می‌کند و می‌تواند عملکردی بدون توقف داشته باشد. در این آموزش، نحوه نصب کلاستر Ceph را در...

1400/01/295550 بازدید
نصب کلاستر ذخیره‌سازی Ceph در اوبونتو 18.04
Ceph یک پلتفرم ذخیره‌سازی متن‌باز است که سطح بالایی از عملکرد، اطمینان و مقیاس‌پذیری را در خود دارد. این در واقع، یک سیستم ذخیره‌سازی گسترده رایگان است که یک رابط کاربری برای ذخیره فایل، آبجکت و بلوک فراهم می‌کند و می‌تواند عملکردی بدون توقف داشته باشد. در این آموزش، نحوه نصب کلاستر Ceph را در اوبونتو 18.04 بررسی خواهیم کرد. با ما همراه باشید. یک کلاستر Ceph متشکل از بخش‌های زیر است:
  • Ceph OSD یا ceph-osd - برای مدیریت ذخیره داده، تکرار داده و بازیابی آنها. یک کلاستر Ceph حداقل به دو سرور Ceph OSD احتیاج خواهد داشت. در اینجا ما از سه سرور اوبونتو 04 برای این منظور استفاده خواهیم کرد.
  • Ceph Monitor یا ceph-mon - برای پایش وضعیت کلاستتر اجرای مپ‌های OSD و CRUSH. در اینجا از یک سرور برای این منظور استفاده می‌کنیم.
  • سرور Ceph Meta Data یا ceph-mds - در صورتی که بخواهید از Ceph به عنوان فایل سیستم استفاده کنید، به این بخش احتیاج پیدا می‌کنید.

پیش‌نیازها

  • ۶ نقطه سرور همراه با نصب اوبونتو 04
  • دسترسی روت در تمام نقاط
در اینجا از هاست‌ها و IP های زیر استفاده می‌کنیم.
هاستآدرس IP
ceph-admin10.0.15.10
mon110.0.15.11
osd110.0.15.21
osd210.0.15.22
osd310.0.15.23
client10.0.15.15

گام ۱) تنظیم تمام نقاط

در این مرحله، تمام نقاط را برای نصب نرم‌افزار Ceph Cluster آماده می‌کنیم. فرمان‌هایی که در ادامه می‌آیند، باید برای تمام نقاط اجرا شوند. همچنین بایستی از نصب سرور ssh در تمام نقاط اطمینان حاصل کنید.

ایجاد کاربر Ceph

یک کاربر جدید با نام 'cephuser' در تمام نقاط ایجاد کنید.
php
useradd -m -s /bin/bash cephuserpasswd cephuser
پس از ساخت این کاربر جدید، باید cephuser را برای دسترسی بدون‌ پسورد sudo تنظیم کنیم. به این معنا که کاربر cephuser خواهد توانست بدون نیاز به پسورد، دسترسی‌های sudo را در اختیار داشته باشد. برای این منظور، فرمان‌های زیر را اجرا نمایید.
php
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuserchmod 0440 /etc/sudoers.d/cephusersed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

نصب و تنظیمات NTP

نصب NTP  برای هماهنگ‌سازی تاریخ و زمان در تمام نقاط انجام می‌گیرد. از فرمان ntpdate برای تنظیم تاریخ و زمان با NTP استفاده کنید. در اینجا از سرورهای US pool NTP برای این منظور بهره می‌گیریم. سپس سرور NTP را راه‌اندازی و آن را برای راه‌اندازی در شروع به کار سیستم تنظیم کنید.
php
sudo apt-get install -y ntp ntpdate ntp-docntpdate 0.us.pool.ntp.orghwclock --systohcsystemctl enable ntpsystemctl start ntp

نصب Open-vm-tools

اگر تمام نقاط را درون VMware اجرا می‌کنید، نیاز به این ابزار شبیه‌سازی خواهید داشت.
php
sudo apt-get install -y open-vm-tools

نصب پایتون و parted

در این ‌آموزش برای ساخت ceph-cluster به بسته‌های پایتون احتیاج خواهیم داشت. با کمک فرمان زیر پایتون و python-pip را نصب کنید.
php
sudo apt-get install -y python python-pip parted

تنظیم فایل hosts

ویرایش فایل hosts به کمک ادیتور vim برای تمام نقاط صورت می‌گیرد.
php
vim /etc/hosts
تنظیمات زیر را در فایل وارد کنید.
php
10.0.15.10        ceph-admin10.0.15.11        mon110.0.15.21        ceph-osd110.0.15.22        ceph-osd210.0.15.23        ceph-osd310.0.15.15        ceph-client
حالا فایل hosts را ذخیره کرده و از ادیتور vim خارج شوید. سپس می‌توانید عمل ping را بین عناویت هاست سرور انجام دهید و از ارتباط شبکه مطمئن شوید.
php
ping -c 5 mon1
نصب کلاستر Ceph در اوبونتو 18.04
نصب کلاستر Ceph در اوبونتو 18.04

گام ۲) تنظیم سرور SSH

در این مرحله، نقطه ceph-admin را تنظیم می‌کنیم. نقطه ادمین برای تنظیمات نقطه پایش (monitor) و نقاط osd مورد استفاده قرار می‌گیرد. برای این منظور به نقطه ceph-admin وارد شوید و به کاربر 'cephuser' دسترسی پیدا کنید.
php
ssh root@ceph-adminsu - cephuser
نقطه ادمین برای نصب و تنظیمات تمام نقاط کلاستر استفاده می‌شود. بنابراین کاربر نقطه ceph-admin می‌بایست تمام دسترسی‌های لازم برای ارتباط بدون پسورد با تمام نقاط را داشته باشد. بر این اساس، باید دسترسی بدون پسورد SSH کاربر 'cephuser' را در نقطه 'ceph-admin' تنظیم کنیم. تولید کلیدهای ssh برای 'cephuser'
php
ssh-keygen
عبارت کلمه عبور یا passphrase را به صورت خالی باقی بگذارید. سپس یک فایل تنظیمات برای ssh config بسازید.
php
vim ~/.ssh/config
خطوط زیر را در این فایل کپی کنید.
php
Host ceph-adminHostname ceph-adminUser cephuserHost mon1Hostname mon1User cephuserHost ceph-osd1Hostname ceph-osd1User cephuserHost ceph-osd2Hostname ceph-osd2User cephuserHost ceph-osd3Hostname ceph-osd3User cephuserHost ceph-clientHostname ceph-clientUser cephuser
حالا فایل را ذخیره کرده و از vim خارج شوید.
تنظیمات Ceph-admin
تنظیمات Ceph-admin
مجوّز فایل تنظمیات را به 644 تغییر دهید.
php
chmod 644 ~/.ssh/config
حالا با استفاده از فرمان ssh-copy-id، کلید را به تمام نقاط کپی کنید.
php
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hostsssh-copy-id ceph-osd1ssh-copy-id ceph-osd2ssh-copy-id ceph-osd3ssh-copy-id mon1
در هنگام درخواست سیستم، کلمه عبور cephuser را وارد کنید.
انتقال کلید ssh توسط Ceph-admin به تمام نقاط کلاستر Ceph
انتقال کلید ssh توسط Ceph-admin به تمام نقاط کلاستر
اکنون سعی کنید از طریق نقطه ادمین به سرور osd1 دسترسی پیدا کنید و به این وسیله ورود بدون پسورد را تست نمایید.
php
ssh ceph-osd1
ورود SSH بدون پسورد از طریق ceph-admin به تمام نقاط کلاستر
ورود SSH بدون پسورد از طریق ceph-admin به تمام نقاط کلاستر

گام ۳) تنظیمات فایروال اوبونتو

فعال‌کردن فایروال در سرورها به دلایل امنیتی ضروری خواهد بود. برای این منظور، ترجیحاً از ابزار UFW، فایروال پیش‌فرض اوبونتو استفاده می‌کنیم. در این مرحله، UFW را در تمام نقاط فعال و سپس پورت‌های موردنیاز ceph-admin، ceph-mon و ceph-osd را باز می‌کنیم. به نقطه ceph-admin وارد شوید و بسته‌های UFW را نصب کنید.
php
ssh root@ceph-adminsudo apt-get install -y ufw
پورت‌های 80، 2003 و 4505-4506 را باز کنید و سپس فایروال را دوباره راه‌اندازی نمایید.
php
sudo ufw allow 22/tcpsudo ufw allow 80/tcpsudo ufw allow 2003/tcpsudo ufw allow 4505:4506/tcp
UFW را اجرا و آن را به گونه‌ای تنظیم کنید که در آغاز به کار سیستم فعال شود.
php
sudo ufw enable
فایروال UFW همراه با سرویس Ceph
فایروال UFW همراه با سرویس Ceph
از نقطه ceph-admin، وارد نقطه مانیتورینگ mon1 شوید و UFW را نصب کنید.
php
ssh mon1sudo apt-get install -y ufw
پورت‌های نقطه ceph monitor را باز کرده و UFW را اجرا کنید.
php
sudo ufw allow 22/tcpsudo ufw allow 6789/tcpsudo ufw enable
نهایتاً هر کدام از این پورت‌ها را در نقاط osd باز کنید:
php
ceph-osd1, ceph-osd2 and ceph-osd3 - port 6800-7300
از نقطه ادمین به هر کدام از نقاط ceph-osd وارد شوید و UFW را نصب کنید.
php
ssh ceph-osd1sudo apt-get install -y ufw
پورت‌ها را در نقاط osd باز کنید و فایروال را دوباره اجرا نمایید.
php
sudo ufw allow 22/tcpsudo ufw allow 6800:7300/tcpsudo ufw enable
در نتیجه، تنظیمات فایروال ufw به اتمام می‌رسد.

گام ۴) تظیمات نقاط Ceph OSD

در این آموزش ما سه نقطه OSD داریم که هر کدام از آنها شامل دو پارتیشن دیسک سخت است.
php
/dev/sda for root partition/dev/sdb is empty partition - 20GB
از /dev/sdb به عنوان دیسک ceph استفاده خواهیم کرد. برای این منظور، از نقطه ceph-admin به تمام نقاط OSD وارد می‌شویم و پارتیشن /dev/sdb را به صورت فایل سیستم XFS فرمت می‌کنیم.
php
ssh ceph-osd1ssh ceph-osd2ssh ceph-osd3
پارتیشن‌‌بندی را با کمک فرمان fdisk بررسی می‌کنیم.
php
sudo fdisk -l /dev/sdb
پارتیشن /dev/sdb را به صورت فایل سیستم XFS و همراه با جدول پارتیشن GPT با استفاده از فرمان parted فرمت می‌کنیم.
php
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
سپس پارتیشن را با کمک فرمان mkfs به صورت XFS فرمت می‌کنیم.
php
sudo mkfs.xfs -f /dev/sdb
حالا با بررسی مجدد، یک پارتیشن XFS /dev/sdb مشاهده خواهید کرد.
php
sudo fdisk -s /dev/sdbsudo blkid -o value -s TYPE /dev/sdb
فرمت پارتیشن نقاط ceph OSD
فرمت پارتیشن نقاط ceph OSD

گام ۵)  ایجاد کلاستر Ceph

در این مرحله، از طریق سیستم ceph-admin در تمام نقاط Ceph را نصب می‌کنیم. برای شروع این کار، به نقطه ceph-admin وارد می‌شویم.
php
ssh root@ceph-adminsu - cephuser

نصب ceph-deploy در نقطه ceph-admin

در گام ۱، ابزارهای پایتون و python-pip را در سیستم نصب کردیم. حالا باید ابزار بکارگیری Ceph، یعنی 'ceph-deploy' را از منبع pypi python نصب کنیم. نصب ceph-deploy در نقطه ceph-admin با فرمان pip
php
sudo pip install ceph-deploy
نکته: حتماً دقت کنید که تمام نقاط بروزرسانی شده باشند. پس از نصب ابزار ceph-deploy، یک دایرکتوری جدید برای تنظیمات کلاستر Ceph ایجاد کنید.

ایجاد یک کلاستر جدید

ایجاد یک دایرکتوری کلاستر جدید
php
mkdir clustercd cluster/
سپس با استفاده از فرمان ceph-deploy  و تعریف نقطه مانیتورینگ mon1، یک کلاستر جدید بسازید.
php
ceph-deploy new mon1
در نتیجه، یک فایل تنظیمات کلاستر Ceph با نام 'ceph.conf' در دایرکتوری تولید می‌شود.
ساخت یک کلاستر Ceph جدید
ساخت یک کلاستر Ceph جدید
ویرایش فایل ceph.conf که با کمک ابزار vim صورت می‌گیرد.
php
vim ceph.conf
در زیر بلوک ، خطوط زیر را وارد کنید.
php
# Your network addresspublic network = 10.0.15.0/24osd pool default size = 2
حالا فایل را ذخیره کرده و از ویرایشگر خارج شوید.

نصب Ceph در تمام نقاط

حالا با یک فرمان از نقطه ceph-admin، ابزار Ceph را در تمام نقاط نصب می‌کنیم.
php
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
در نتیجه، عمل نصب به صورت اتوماتیک در تمام نقاط کلاستر Ceph صورت می‌گیرد. این نصب ممکن است اندکی زمان نیاز داشته باشد. حالا باید نقطه پایش را در mon1 به کار بگیرید.
php
ceph-deploy mon create-initial
این فرمان موجب تولید یک کلید مانیتورینگ خواهد شد. این کلید را با استفاده از این فرمان ceph بررسی کنید.
php
ceph-deploy gatherkeys mon1
تولید کلید مانیتورینگ
تولید کلید مانیتورینگ

اضافه‌کردن OSD ها به کلاستر

پس از نصب Ceph در کلیه نقاط، اکنون می‌توانیم OSD ها نیز به کلاستر اضافه کنیم. OSD ها پارتیشن‌های دیتا و جورنال را در دیسک /dev/sdb ایجاد می‌کنند. بررسی وضعیت دیسک /dev/sdb در تمام نقاط OSD
php
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
لیست دیسک‌های نقاط OSD
لیست دیسک‌های نقاط OSD
در اینجا /dev/sdb را با فرمت XFS مشاهده می‌کنیم که قبلاُ آن را ایجاد کرده بودیم. سپس با گزینه zap، جداول پارتیشن را در تمام نقاط حذف می‌کنیم.
php
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
این فرمان تمام داده‌های /dev/sdb را در نقاط Ceph OSD پاک می‌کند. حالا تمام نقاط OSD را آماده کنید و حتماً دقت کنید که هیچ‌گونه خطایی در نتایج وجود نداشته باشد.
php
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
پس از مشاهده وضعیت آماده ceph-osd1-3 برای استفاده به عنوان OSD، می‌توانید مطمئن باشید که فرمان را با موفقیت اجرا کرده‌اید.
آماده‌سازی نقاط ceph-osd
آماده‌سازی نقاط ceph-osd
فعال‌سازی OSD ها با کمک فرمان زیر صورت می‌گیرد.
php
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
اکنون می‌توانید دوباره دیسک sdb را در نقاط OSD بررسی کنید.
php
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
فعال‌سازی نقاط Ceph osd
فعال‌سازی نقاط Ceph osd
در نتیجه، /dev/sdb دارای دو پارتیشن به صورت زیر خواهد بود.
php
/dev/sdb1 - Ceph Data/dev/sdb2 - Ceph Journal
همچنین می‌توانید این بررسی را به صورت مستقیم از نقطه OSD انجام دهید.
php
ssh ceph-osd1sudo fdisk -l /dev/sdb
در نتیجه، نقاط Ceph OSD ایجاد شدند.
در نتیجه، نقاط Ceph OSD ایجاد شدند.
حالا کلید management را برای تمام نقاط کلاستر Ceph به کار می‌گیریم.
php
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3
با استفاده از فرمان زیر، مجوّز فایل کلید را تغییر می‌دهیم.
php
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
در نتیجه، کلاستر Ceph در اوبونتو 18.04 ایجاد شد.

گام ۶) تست Ceph

در گام چهارم، یک کلاستر Ceph جدید ایجاد و نقاط OSD را به آن اضافه کردیم. حالا نوبت آن است که این کلاستر را آزمایش کرده و از درستیِ عملکرد آن مطمئن شویم. برای این منظور، از نقطه ceph-admin به سرور مانیتورینگ mon1 وارد شوید.
php
ssh mon1
فرمان زیر را اجرا کنید تا از سلامت کلاستر اطمینان حاصل کنید.
php
sudo ceph health
حالا وضعیت کلاستر Ceph را بررسی کنید.
php
sudo ceph -s
نتایج را به صورت زیر می‌توانید مشاهده کنید.
وضعیت کلاستر Ceph
وضعیت کلاستر Ceph
از عملکرد کلاستر Ceph مطمئن شوید و همین‌طور دقت کنید که نقطه مانیتورینگ mon1 با IP آدرس '10.0.15.11' وجود داشته باشد. همچنین سه سرور OSD در حال اجرا و فضای دیسکی به اندازه ۴۵ گیگابایت یا سه پارتیشن ۱۵ گیگابایتی Ceph Data OSD در دسترس باشند. نهایتاً یک کلاستر Ceph جدید در اوبونتو 18.04 ساخته‌ایم و امیدواریم که این آموزش مورد توجه شما قرار گرفته باشد.