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-admin | 10.0.15.10 |
mon1 | 10.0.15.11 |
osd1 | 10.0.15.21 |
osd2 | 10.0.15.22 |
osd3 | 10.0.15.23 |
client | 10.0.15.15 |
گام ۱) تنظیم تمام نقاط
در این مرحله، تمام نقاط را برای نصب نرمافزار Ceph Cluster آماده میکنیم. فرمانهایی که در ادامه میآیند، باید برای تمام نقاط اجرا شوند. همچنین بایستی از نصب سرور ssh در تمام نقاط اطمینان حاصل کنید.
ایجاد کاربر Ceph
یک کاربر جدید با نام ‘cephuser’ در تمام نقاط ایجاد کنید.
useradd -m -s /bin/bash cephuser passwd cephuser
پس از ساخت این کاربر جدید، باید cephuser را برای دسترسی بدون پسورد sudo تنظیم کنیم. به این معنا که کاربر cephuser خواهد توانست بدون نیاز به پسورد، دسترسیهای sudo را در اختیار داشته باشد.
برای این منظور، فرمانهای زیر را اجرا نمایید.
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser chmod 0440 /etc/sudoers.d/cephuser sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
نصب و تنظیمات NTP
نصب NTP برای هماهنگسازی تاریخ و زمان در تمام نقاط انجام میگیرد. از فرمان ntpdate برای تنظیم تاریخ و زمان با NTP استفاده کنید. در اینجا از سرورهای US pool NTP برای این منظور بهره میگیریم. سپس سرور NTP را راهاندازی و آن را برای راهاندازی در شروع به کار سیستم تنظیم کنید.
sudo apt-get install -y ntp ntpdate ntp-doc ntpdate 0.us.pool.ntp.org hwclock --systohc systemctl enable ntp systemctl start ntp
نصب Open-vm-tools
اگر تمام نقاط را درون VMware اجرا میکنید، نیاز به این ابزار شبیهسازی خواهید داشت.
sudo apt-get install -y open-vm-tools
نصب پایتون و parted
در این آموزش برای ساخت ceph-cluster به بستههای پایتون احتیاج خواهیم داشت. با کمک فرمان زیر پایتون و python-pip را نصب کنید.
sudo apt-get install -y python python-pip parted
تنظیم فایل hosts
ویرایش فایل hosts به کمک ادیتور vim برای تمام نقاط صورت میگیرد.
vim /etc/hosts
تنظیمات زیر را در فایل وارد کنید.
10.0.15.10 ceph-admin 10.0.15.11 mon1 10.0.15.21 ceph-osd1 10.0.15.22 ceph-osd2 10.0.15.23 ceph-osd3 10.0.15.15 ceph-client
حالا فایل hosts را ذخیره کرده و از ادیتور vim خارج شوید.
سپس میتوانید عمل ping را بین عناویت هاست سرور انجام دهید و از ارتباط شبکه مطمئن شوید.
ping -c 5 mon1
گام ۲) تنظیم سرور SSH
در این مرحله، نقطه ceph-admin را تنظیم میکنیم. نقطه ادمین برای تنظیمات نقطه پایش (monitor) و نقاط osd مورد استفاده قرار میگیرد. برای این منظور به نقطه ceph-admin وارد شوید و به کاربر ‘cephuser’ دسترسی پیدا کنید.
ssh root@ceph-admin su - cephuser
نقطه ادمین برای نصب و تنظیمات تمام نقاط کلاستر استفاده میشود. بنابراین کاربر نقطه ceph-admin میبایست تمام دسترسیهای لازم برای ارتباط بدون پسورد با تمام نقاط را داشته باشد. بر این اساس، باید دسترسی بدون پسورد SSH کاربر ‘cephuser’ را در نقطه ‘ceph-admin’ تنظیم کنیم.
تولید کلیدهای ssh برای ‘cephuser’
ssh-keygen
عبارت کلمه عبور یا passphrase را به صورت خالی باقی بگذارید.
سپس یک فایل تنظیمات برای ssh config بسازید.
vim ~/.ssh/config
خطوط زیر را در این فایل کپی کنید.
Host ceph-admin Hostname ceph-admin User cephuser Host mon1 Hostname mon1 User cephuser Host ceph-osd1 Hostname ceph-osd1 User cephuser Host ceph-osd2 Hostname ceph-osd2 User cephuser Host ceph-osd3 Hostname ceph-osd3 User cephuser Host ceph-client Hostname ceph-client User cephuser
حالا فایل را ذخیره کرده و از vim خارج شوید.
مجوّز فایل تنظمیات را به 644 تغییر دهید.
chmod 644 ~/.ssh/config
حالا با استفاده از فرمان ssh-copy-id، کلید را به تمام نقاط کپی کنید.
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts ssh-copy-id ceph-osd1 ssh-copy-id ceph-osd2 ssh-copy-id ceph-osd3 ssh-copy-id mon1
در هنگام درخواست سیستم، کلمه عبور cephuser را وارد کنید.
اکنون سعی کنید از طریق نقطه ادمین به سرور osd1 دسترسی پیدا کنید و به این وسیله ورود بدون پسورد را تست نمایید.
ssh ceph-osd1
گام ۳) تنظیمات فایروال اوبونتو
فعالکردن فایروال در سرورها به دلایل امنیتی ضروری خواهد بود. برای این منظور، ترجیحاً از ابزار UFW، فایروال پیشفرض اوبونتو استفاده میکنیم. در این مرحله، UFW را در تمام نقاط فعال و سپس پورتهای موردنیاز ceph-admin، ceph-mon و ceph-osd را باز میکنیم.
به نقطه ceph-admin وارد شوید و بستههای UFW را نصب کنید.
ssh root@ceph-admin sudo apt-get install -y ufw
پورتهای 80، 2003 و 4505-4506 را باز کنید و سپس فایروال را دوباره راهاندازی نمایید.
sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 2003/tcp sudo ufw allow 4505:4506/tcp
UFW را اجرا و آن را به گونهای تنظیم کنید که در آغاز به کار سیستم فعال شود.
sudo ufw enable
از نقطه ceph-admin، وارد نقطه مانیتورینگ mon1 شوید و UFW را نصب کنید.
ssh mon1 sudo apt-get install -y ufw
پورتهای نقطه ceph monitor را باز کرده و UFW را اجرا کنید.
sudo ufw allow 22/tcp sudo ufw allow 6789/tcp sudo ufw enable
نهایتاً هر کدام از این پورتها را در نقاط osd باز کنید:
ceph-osd1, ceph-osd2 and ceph-osd3 - port 6800-7300
از نقطه ادمین به هر کدام از نقاط ceph-osd وارد شوید و UFW را نصب کنید.
ssh ceph-osd1 sudo apt-get install -y ufw
پورتها را در نقاط osd باز کنید و فایروال را دوباره اجرا نمایید.
sudo ufw allow 22/tcp sudo ufw allow 6800:7300/tcp sudo ufw enable
در نتیجه، تنظیمات فایروال ufw به اتمام میرسد.
گام ۴) تظیمات نقاط Ceph OSD
در این آموزش ما سه نقطه OSD داریم که هر کدام از آنها شامل دو پارتیشن دیسک سخت است.
/dev/sda for root partition /dev/sdb is empty partition - 20GB
از /dev/sdb به عنوان دیسک ceph استفاده خواهیم کرد. برای این منظور، از نقطه ceph-admin به تمام نقاط OSD وارد میشویم و پارتیشن /dev/sdb را به صورت فایل سیستم XFS فرمت میکنیم.
ssh ceph-osd1 ssh ceph-osd2 ssh ceph-osd3
پارتیشنبندی را با کمک فرمان fdisk بررسی میکنیم.
sudo fdisk -l /dev/sdb
پارتیشن /dev/sdb را به صورت فایل سیستم XFS و همراه با جدول پارتیشن GPT با استفاده از فرمان parted فرمت میکنیم.
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
سپس پارتیشن را با کمک فرمان mkfs به صورت XFS فرمت میکنیم.
sudo mkfs.xfs -f /dev/sdb
حالا با بررسی مجدد، یک پارتیشن XFS /dev/sdb مشاهده خواهید کرد.
sudo fdisk -s /dev/sdb sudo blkid -o value -s TYPE /dev/sdb
گام ۵) ایجاد کلاستر Ceph
در این مرحله، از طریق سیستم ceph-admin در تمام نقاط Ceph را نصب میکنیم. برای شروع این کار، به نقطه ceph-admin وارد میشویم.
ssh root@ceph-admin su - cephuser
نصب ceph-deploy در نقطه ceph-admin
در گام ۱، ابزارهای پایتون و python-pip را در سیستم نصب کردیم. حالا باید ابزار بکارگیری Ceph، یعنی ‘ceph-deploy’ را از منبع pypi python نصب کنیم.
نصب ceph-deploy در نقطه ceph-admin با فرمان pip
sudo pip install ceph-deploy
نکته: حتماً دقت کنید که تمام نقاط بروزرسانی شده باشند.
پس از نصب ابزار ceph-deploy، یک دایرکتوری جدید برای تنظیمات کلاستر Ceph ایجاد کنید.
ایجاد یک کلاستر جدید
ایجاد یک دایرکتوری کلاستر جدید
mkdir cluster cd cluster/
سپس با استفاده از فرمان ceph-deploy و تعریف نقطه مانیتورینگ mon1، یک کلاستر جدید بسازید.
ceph-deploy new mon1
در نتیجه، یک فایل تنظیمات کلاستر Ceph با نام ‘ceph.conf’ در دایرکتوری تولید میشود.
ویرایش فایل ceph.conf که با کمک ابزار vim صورت میگیرد.
vim ceph.conf
در زیر بلوک [global]، خطوط زیر را وارد کنید.
# Your network address public network = 10.0.15.0/24 osd pool default size = 2
حالا فایل را ذخیره کرده و از ویرایشگر خارج شوید.
نصب Ceph در تمام نقاط
حالا با یک فرمان از نقطه ceph-admin، ابزار Ceph را در تمام نقاط نصب میکنیم.
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
در نتیجه، عمل نصب به صورت اتوماتیک در تمام نقاط کلاستر Ceph صورت میگیرد. این نصب ممکن است اندکی زمان نیاز داشته باشد.
حالا باید نقطه پایش را در mon1 به کار بگیرید.
ceph-deploy mon create-initial
این فرمان موجب تولید یک کلید مانیتورینگ خواهد شد. این کلید را با استفاده از این فرمان ceph بررسی کنید.
ceph-deploy gatherkeys mon1
اضافهکردن OSD ها به کلاستر
پس از نصب Ceph در کلیه نقاط، اکنون میتوانیم OSD ها نیز به کلاستر اضافه کنیم. OSD ها پارتیشنهای دیتا و جورنال را در دیسک /dev/sdb ایجاد میکنند.
بررسی وضعیت دیسک /dev/sdb در تمام نقاط OSD
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
در اینجا /dev/sdb را با فرمت XFS مشاهده میکنیم که قبلاُ آن را ایجاد کرده بودیم.
سپس با گزینه zap، جداول پارتیشن را در تمام نقاط حذف میکنیم.
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
این فرمان تمام دادههای /dev/sdb را در نقاط Ceph OSD پاک میکند.
حالا تمام نقاط OSD را آماده کنید و حتماً دقت کنید که هیچگونه خطایی در نتایج وجود نداشته باشد.
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
پس از مشاهده وضعیت آماده ceph-osd1-3 برای استفاده به عنوان OSD، میتوانید مطمئن باشید که فرمان را با موفقیت اجرا کردهاید.
فعالسازی OSD ها با کمک فرمان زیر صورت میگیرد.
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
اکنون میتوانید دوباره دیسک sdb را در نقاط OSD بررسی کنید.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
در نتیجه، /dev/sdb دارای دو پارتیشن به صورت زیر خواهد بود.
/dev/sdb1 - Ceph Data /dev/sdb2 - Ceph Journal
همچنین میتوانید این بررسی را به صورت مستقیم از نقطه OSD انجام دهید.
ssh ceph-osd1 sudo fdisk -l /dev/sdb
حالا کلید management را برای تمام نقاط کلاستر Ceph به کار میگیریم.
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3
با استفاده از فرمان زیر، مجوّز فایل کلید را تغییر میدهیم.
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
در نتیجه، کلاستر Ceph در اوبونتو 18.04 ایجاد شد.
گام ۶) تست Ceph
در گام چهارم، یک کلاستر Ceph جدید ایجاد و نقاط OSD را به آن اضافه کردیم. حالا نوبت آن است که این کلاستر را آزمایش کرده و از درستیِ عملکرد آن مطمئن شویم.
برای این منظور، از نقطه ceph-admin به سرور مانیتورینگ mon1 وارد شوید.
ssh mon1
فرمان زیر را اجرا کنید تا از سلامت کلاستر اطمینان حاصل کنید.
sudo ceph health
حالا وضعیت کلاستر Ceph را بررسی کنید.
sudo ceph -s
نتایج را به صورت زیر میتوانید مشاهده کنید.
از عملکرد کلاستر Ceph مطمئن شوید و همینطور دقت کنید که نقطه مانیتورینگ mon1 با IP آدرس ‘10.0.15.11’ وجود داشته باشد. همچنین سه سرور OSD در حال اجرا و فضای دیسکی به اندازه ۴۵ گیگابایت یا سه پارتیشن ۱۵ گیگابایتی Ceph Data OSD در دسترس باشند.
نهایتاً یک کلاستر Ceph جدید در اوبونتو 18.04 ساختهایم و امیدواریم که این آموزش مورد توجه شما قرار گرفته باشد.