Ceph یک پلتفرم ذخیرهسازی متنباز است که سطح بالایی از عملکرد، اطمینان و مقیاسپذیری را در خود دارد. این در واقع، یک سیستم ذخیرهسازی گسترده رایگان است که یک رابط کاربری برای ذخیره فایل، آبجکت و بلوک فراهم میکند و میتواند عملکردی بدون توقف داشته باشد. در این آموزش، نحوه نصب کلاستر Ceph را در...
1400/01/295550 بازدید
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' در تمام نقاط ایجاد کنید.
php
1useradd -m -s /bin/bash cephuser2passwd cephuser
پس از ساخت این کاربر جدید، باید cephuser را برای دسترسی بدون پسورد sudo تنظیم کنیم. به این معنا که کاربر cephuser خواهد توانست بدون نیاز به پسورد، دسترسیهای sudo را در اختیار داشته باشد.
برای این منظور، فرمانهای زیر را اجرا نمایید.
php
1echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser2chmod 0440 /etc/sudoers.d/cephuser3sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
نصب و تنظیمات NTP
نصب NTP برای هماهنگسازی تاریخ و زمان در تمام نقاط انجام میگیرد. از فرمان ntpdate برای تنظیم تاریخ و زمان با NTP استفاده کنید. در اینجا از سرورهای US pool NTP برای این منظور بهره میگیریم. سپس سرور NTP را راهاندازی و آن را برای راهاندازی در شروع به کار سیستم تنظیم کنید.
حالا فایل hosts را ذخیره کرده و از ادیتور vim خارج شوید.
سپس میتوانید عمل ping را بین عناویت هاست سرور انجام دهید و از ارتباط شبکه مطمئن شوید.
php
1ping -c 5 mon1
نصب کلاستر Ceph در اوبونتو 18.04
گام ۲) تنظیم سرور SSH
در این مرحله، نقطه ceph-admin را تنظیم میکنیم. نقطه ادمین برای تنظیمات نقطه پایش (monitor) و نقاط osd مورد استفاده قرار میگیرد. برای این منظور به نقطه ceph-admin وارد شوید و به کاربر 'cephuser' دسترسی پیدا کنید.
php
1ssh root@ceph-admin2su - cephuser
نقطه ادمین برای نصب و تنظیمات تمام نقاط کلاستر استفاده میشود. بنابراین کاربر نقطه ceph-admin میبایست تمام دسترسیهای لازم برای ارتباط بدون پسورد با تمام نقاط را داشته باشد. بر این اساس، باید دسترسی بدون پسورد SSH کاربر 'cephuser' را در نقطه 'ceph-admin' تنظیم کنیم.
تولید کلیدهای ssh برای 'cephuser'
php
1ssh-keygen
عبارت کلمه عبور یا passphrase را به صورت خالی باقی بگذارید.
سپس یک فایل تنظیمات برای ssh config بسازید.
در هنگام درخواست سیستم، کلمه عبور cephuser را وارد کنید.
انتقال کلید ssh توسط Ceph-admin به تمام نقاط کلاستر
اکنون سعی کنید از طریق نقطه ادمین به سرور osd1 دسترسی پیدا کنید و به این وسیله ورود بدون پسورد را تست نمایید.
php
1ssh ceph-osd1
ورود SSH بدون پسورد از طریق ceph-admin به تمام نقاط کلاستر
گام ۳) تنظیمات فایروال اوبونتو
فعالکردن فایروال در سرورها به دلایل امنیتی ضروری خواهد بود. برای این منظور، ترجیحاً از ابزار UFW، فایروال پیشفرض اوبونتو استفاده میکنیم. در این مرحله، UFW را در تمام نقاط فعال و سپس پورتهای موردنیاز ceph-admin، ceph-mon و ceph-osd را باز میکنیم.
به نقطه ceph-admin وارد شوید و بستههای UFW را نصب کنید.
php
1ssh root@ceph-admin2sudo apt-get install -y ufw
پورتهای 80، 2003 و 4505-4506 را باز کنید و سپس فایروال را دوباره راهاندازی نمایید.
در این آموزش ما سه نقطه OSD داریم که هر کدام از آنها شامل دو پارتیشن دیسک سخت است.
php
1/dev/sda for root partition23/dev/sdb is empty partition - 20GB
از /dev/sdb به عنوان دیسک ceph استفاده خواهیم کرد. برای این منظور، از نقطه ceph-admin به تمام نقاط OSD وارد میشویم و پارتیشن /dev/sdb را به صورت فایل سیستم XFS فرمت میکنیم.
php
1ssh ceph-osd123ssh ceph-osd245ssh ceph-osd3
پارتیشنبندی را با کمک فرمان fdisk بررسی میکنیم.
php
1sudo fdisk -l /dev/sdb
پارتیشن /dev/sdb را به صورت فایل سیستم XFS و همراه با جدول پارتیشن GPT با استفاده از فرمان parted فرمت میکنیم.
سپس پارتیشن را با کمک فرمان mkfs به صورت XFS فرمت میکنیم.
php
1sudo mkfs.xfs -f /dev/sdb
حالا با بررسی مجدد، یک پارتیشن XFS /dev/sdb مشاهده خواهید کرد.
php
1sudo fdisk -s /dev/sdb23sudo blkid -o value -s TYPE /dev/sdb
فرمت پارتیشن نقاط ceph OSD
گام ۵) ایجاد کلاستر Ceph
در این مرحله، از طریق سیستم ceph-admin در تمام نقاط Ceph را نصب میکنیم. برای شروع این کار، به نقطه ceph-admin وارد میشویم.
php
1ssh root@ceph-admin2su - cephuser
نصب ceph-deploy در نقطه ceph-admin
در گام ۱، ابزارهای پایتون و python-pip را در سیستم نصب کردیم. حالا باید ابزار بکارگیری Ceph، یعنی 'ceph-deploy' را از منبع pypi python نصب کنیم.
نصب ceph-deploy در نقطه ceph-admin با فرمان pip
php
1sudo pip install ceph-deploy
نکته: حتماً دقت کنید که تمام نقاط بروزرسانی شده باشند.
پس از نصب ابزار ceph-deploy، یک دایرکتوری جدید برای تنظیمات کلاستر Ceph ایجاد کنید.
ایجاد یک کلاستر جدید
ایجاد یک دایرکتوری کلاستر جدید
php
1mkdir cluster2cd cluster/
سپس با استفاده از فرمان ceph-deploy و تعریف نقطه مانیتورینگ mon1، یک کلاستر جدید بسازید.
php
1ceph-deploy new mon1
در نتیجه، یک فایل تنظیمات کلاستر Ceph با نام 'ceph.conf' در دایرکتوری تولید میشود.
ساخت یک کلاستر Ceph جدید
ویرایش فایل ceph.conf که با کمک ابزار vim صورت میگیرد.
php
1vim ceph.conf
در زیر بلوک ، خطوط زیر را وارد کنید.
php
1# Your network address23public network = 10.0.15.0/2445osd pool default size = 2
حالا فایل را ذخیره کرده و از ویرایشگر خارج شوید.
نصب Ceph در تمام نقاط
حالا با یک فرمان از نقطه ceph-admin، ابزار Ceph را در تمام نقاط نصب میکنیم.
در نتیجه، عمل نصب به صورت اتوماتیک در تمام نقاط کلاستر Ceph صورت میگیرد. این نصب ممکن است اندکی زمان نیاز داشته باشد.
حالا باید نقطه پایش را در mon1 به کار بگیرید.
php
1ceph-deploy mon create-initial
این فرمان موجب تولید یک کلید مانیتورینگ خواهد شد. این کلید را با استفاده از این فرمان ceph بررسی کنید.
php
1ceph-deploy gatherkeys mon1
تولید کلید مانیتورینگ
اضافهکردن OSD ها به کلاستر
پس از نصب Ceph در کلیه نقاط، اکنون میتوانیم OSD ها نیز به کلاستر اضافه کنیم. OSD ها پارتیشنهای دیتا و جورنال را در دیسک /dev/sdb ایجاد میکنند.
بررسی وضعیت دیسک /dev/sdb در تمام نقاط OSD
php
1ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
لیست دیسکهای نقاط OSD
در اینجا /dev/sdb را با فرمت XFS مشاهده میکنیم که قبلاُ آن را ایجاد کرده بودیم.
سپس با گزینه zap، جداول پارتیشن را در تمام نقاط حذف میکنیم.
php
1ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
این فرمان تمام دادههای /dev/sdb را در نقاط Ceph OSD پاک میکند.
حالا تمام نقاط OSD را آماده کنید و حتماً دقت کنید که هیچگونه خطایی در نتایج وجود نداشته باشد.
پس از مشاهده وضعیت آماده ceph-osd1-3 برای استفاده به عنوان OSD، میتوانید مطمئن باشید که فرمان را با موفقیت اجرا کردهاید.
آمادهسازی نقاط ceph-osd
فعالسازی OSD ها با کمک فرمان زیر صورت میگیرد.
در گام چهارم، یک کلاستر Ceph جدید ایجاد و نقاط OSD را به آن اضافه کردیم. حالا نوبت آن است که این کلاستر را آزمایش کرده و از درستیِ عملکرد آن مطمئن شویم.
برای این منظور، از نقطه ceph-admin به سرور مانیتورینگ mon1 وارد شوید.
php
1ssh mon1
فرمان زیر را اجرا کنید تا از سلامت کلاستر اطمینان حاصل کنید.
php
1sudo ceph health
حالا وضعیت کلاستر Ceph را بررسی کنید.
php
1sudo ceph -s
نتایج را به صورت زیر میتوانید مشاهده کنید.
وضعیت کلاستر Ceph
از عملکرد کلاستر Ceph مطمئن شوید و همینطور دقت کنید که نقطه مانیتورینگ mon1 با IP آدرس '10.0.15.11' وجود داشته باشد. همچنین سه سرور OSD در حال اجرا و فضای دیسکی به اندازه ۴۵ گیگابایت یا سه پارتیشن ۱۵ گیگابایتی Ceph Data OSD در دسترس باشند.
نهایتاً یک کلاستر Ceph جدید در اوبونتو 18.04 ساختهایم و امیدواریم که این آموزش مورد توجه شما قرار گرفته باشد.