Cách xây dựng Ceph Distributed Storage Cluster trên CentOS 7

theanh

Administrator
Nhân viên
Ceph là một nền tảng lưu trữ mã nguồn mở được sử dụng rộng rãi. Nó cung cấp hiệu suất cao, độ tin cậy và khả năng mở rộng. Hệ thống lưu trữ phân tán miễn phí Ceph cung cấp giao diện cho lưu trữ đối tượng, khối và tệp. Ceph được xây dựng để cung cấp hệ thống lưu trữ phân tán mà không có một điểm lỗi nào.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt và xây dựng một cụm Ceph trên CentOS 7. Một cụm Ceph yêu cầu các thành phần Ceph sau:
  • Ceph OSD (ceph-osd) - Xử lý kho dữ liệu, sao chép và phục hồi dữ liệu. Một cụm Ceph cần ít nhất hai máy chủ Ceph OSD. Tôi sẽ sử dụng ba máy chủ CentOS 7 OSD ở đây.
  • Ceph Monitor (ceph-mon) - Giám sát trạng thái cụm, bản đồ OSD và bản đồ CRUSH. Tôi sẽ sử dụng một máy chủ.
  • Ceph Meta Data Server (ceph-mds) - Cần có máy chủ này để sử dụng Ceph làm Hệ thống tệp.

Điều kiện tiên quyết

  • 6 nút máy chủ, tất cả đều được cài đặt CentOS 7.
  • Quyền root trên tất cả các nút.
Các máy chủ trong hướng dẫn này sẽ sử dụng các tên máy chủ và địa chỉ IP sau.

hostname Địa chỉ 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




Tất cả các nút OSD cần hai phân vùng, một phân vùng gốc (/) và một phân vùng trống được sử dụng làm bộ lưu trữ dữ liệu Ceph sau này.


Bước 1 - Cấu hình tất cả các nút​

Trong bước này, chúng ta sẽ cấu hình tất cả 6 nút để chuẩn bị cho việc cài đặt Ceph Cluster. Bạn phải làm theo và chạy tất cả các lệnh bên dưới trên tất cả các nút. Và đảm bảo ssh-server được cài đặt trên tất cả các nút.


Tạo Người dùng Ceph​

Tạo người dùng mới có tên 'cephuser' trên tất cả các nút.
Mã:
useradd -d /home/cephuser -m cephuser
passwd cephuser
Sau khi tạo người dùng mới, chúng ta cần cấu hình sudo cho 'cephuser'. Người dùng này phải có thể chạy lệnh dưới dạng root và có được quyền root mà không cần mật khẩu.

Chạy lệnh bên dưới để tạo tệp sudoers cho người dùng và chỉnh sửa tệp /etc/sudoers bằng sed.
Mã:
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



Cài đặt và cấu hình NTP​

Cài đặt NTP để đồng bộ hóa ngày và giờ trên tất cả các nút. Chạy lệnh thentpdate để đặt ngày và giờ thông qua giao thức NTP, chúng ta sẽ sử dụng máy chủ NTP của chúng tôi. Sau đó, hãy khởi động và kích hoạt máy chủ NTP để chạy khi khởi động.
Mã:
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.service

Cài đặt Open-vm-tools​

Nếu bạn đang chạy tất cả các nút bên trong VMware, bạn cần cài đặt tiện ích ảo hóa này. Nếu không, hãy bỏ qua bước này.
Mã:
yum install -y open-vm-tools

Tắt SELinux​

Tắt SELinux trên tất cả các nút bằng cách chỉnh sửa tệp cấu hình SELinux bằng trình chỉnh sửa luồng sed.
Mã:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Cấu hình tệp máy chủ​

Chỉnh sửa tệp /etc/hosts trên tất cả các nút bằng trình chỉnh sửa vim và thêm các dòng có địa chỉ IP và tên máy chủ của tất cả các nút cụm.
Mã:
vim /etc/hosts
Dán cấu hình bên dưới:
Mã:
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 osd1
10.0.15.22 osd2
10.0.15.23 osd3
10.0.15.15 client
Lưu tệp và thoát khỏi vim.

Bây giờ bạn có thể thử ping giữa các máy chủ với tên máy chủ của chúng để kiểm tra kết nối mạng. Ví dụ:
Mã:
ping -c 5 mon1



Bước 2 - Cấu hình Máy chủ SSH​

Trong bước này, tôi sẽ cấu hình nút ceph-admin. Nút admin được sử dụng để cấu hình nút giám sát và các nút osd. Đăng nhập vào nút ceph-admin và trở thành 'cephuser'.
Mã:
ssh root@ceph-admin
su - cephuser
Nút admin được sử dụng để cài đặt và cấu hình tất cả các nút cụm, vì vậy người dùng trên nút ceph-admin phải có quyền kết nối với tất cả các nút mà không cần mật khẩu. Chúng ta phải cấu hình quyền truy cập SSH không cần mật khẩu cho 'cephuser' trên nút 'ceph-admin'.

Tạo khóa ssh cho 'cephuser'.
Mã:
ssh-keygen
để trống cụm mật khẩu.

Tiếp theo, tạo tệp cấu hình cho cấu hình ssh.
Mã:
vim ~/.ssh/config
Dán cấu hình bên dưới:
Mã:
Máy chủ ceph-admin
 Tên máy chủ ceph-admin
 Người dùng cephuser
 
Máy chủ mon1
 Tên máy chủ mon1
 Người dùng cephuser
 
Máy chủ osd1
 Tên máy chủ osd1
 Người dùng cephuser
 
Máy chủ osd2
 Tên máy chủ osd2
 Người dùng cephuser
 
Máy chủ osd3
 Tên máy chủ osd3
 Người dùng cephuser
 
Máy chủ máy khách
 Tên máy chủ máy khách
 Người dùng cephuser
Lưu tệp.



Thay đổi quyền của tệp cấu hình.
Mã:
chmod 644 ~/.ssh/config
Bây giờ hãy thêm khóa SSH vào tất cả các nút có lệnh ssh-copy-id.
Mã:
ssh-keyscan osd1 osd2 osd3 mon1 client >> ~/.ssh/known_hosts
ssh-copy-id osd1
ssh-copy-id osd2
ssh-copy-id osd3
ssh-copy-id mon1
ssh-copy-id client
Nhập mật khẩu 'cephuser' của bạn khi được yêu cầu.



Khi bạn hoàn tất, hãy thử truy cập máy chủ osd1 từ nút ceph-admin.
Mã:
ssh osd1

Bước 3 - Cấu hình Firewalld​

Chúng tôi sẽ sử dụng Firewalld để bảo vệ hệ thống. Trong bước này, chúng ta sẽ bật firewald trên tất cả các nút, sau đó mở các cổng cần thiết byceph-admon, ceph-mon và ceph-osd.

Đăng nhập vào nút ceph-admin và khởi động firewalld.
Mã:
ssh root@ceph-admin
systemctl start firewalld
systemctl enable firewalld
Mở cổng 80, 2003 và 4505-4506, sau đó tải lại tường lửa.
Mã:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
sudo firewall-cmd --reload
Từ nút ceph-admin, đăng nhập vào nút giám sát 'mon1' và khởi động firewalld.
Mã:
ssh mon1
sudo systemctl start firewalld
sudo systemctl enable firewalld
Mở cổng mới trên nút giám sát Ceph và tải lại tường lửa.
Mã:
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --reload
Cuối cùng, mở cổng 6800-7300 trên mỗi nút theosd - osd1, osd2 và os3.

Đăng nhập vào từng nút osd từ nút ceph-admin.
Mã:
ssh osd1
sudo systemctl start firewalld
sudo systemctl enable firewalld
Mở các cổng và tải lại tường lửa.
Mã:
sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
sudo firewall-cmd --reload
Cấu hình tường lửa đã hoàn tất.


Bước 4 - Cấu hình các nút Ceph OSD​

Trong hướng dẫn này, chúng ta có 3 nút OSD và mỗi nút có hai phân vùng.
  1. /dev/sda cho phân vùng gốc.
  2. /dev/sdb là một phân vùng trống - 30GB trong trường hợp của tôi.
Chúng ta sẽ sử dụng /dev/sdb cho đĩa Ceph. Từ nút ceph-admin, đăng nhập vào tất cả các nút OSD và định dạng phân vùng /dev/sdb bằng XFS.
Mã:
ssh osd1
ssh osd2
ssh osd3
Kiểm tra phân vùng bằng lệnh fdisk.
Mã:
sudo fdisk -l /dev/sdb
Định dạng phân vùng /dev/sdb bằng hệ thống tệp XFS và bảng phân vùng GPT bằng cách sử dụng lệnh parted.
Mã:
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs /dev/sdb -f
Bây giờ hãy kiểm tra phân vùng và bạn sẽ nhận được phân vùng xfs /dev/sdb.
Mã:
sudo blkid -o value -s TYPE /dev/sdb



Bước 5 - Xây dựng cụm Ceph​

Trong bước này, chúng ta sẽ cài đặt Ceph trên tất cả các nút từ nút ceph-admin.

Đăng nhập vào nút ceph-admin.
Mã:
ssh root@ceph-admin
su - cephuser

Cài đặt ceph-deploy trên nút ceph-admin​

Thêm kho lưu trữ Ceph và cài đặt công cụ triển khai Ceph 'ceph-deploy' bằng lệnh yum.
Mã:
sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum update -y && sudo yum install ceph-deploy -y
Đảm bảo tất cả các nút đều được cập nhật.

Sau khi công cụ ceph-deploy đã được cài đặt, hãy tạo một thư mục mới để cấu hình cụm ceph.


Tạo cấu hình cụm mới​

Tạo thư mục cụm mới.
Mã:
mkdir cluster
cd cluster/
Tiếp theo, tạo cấu hình cụm mới bằng lệnh 'ceph-deploy', định nghĩa nút giám sát là 'mon1'.
Mã:
ceph-deploy new mon1
Lệnh này sẽ tạo tệp cấu hình cụm Ceph 'ceph.conf' trong thư mục cụm.



Chỉnh sửa tệp ceph.conf bằng vim.
Mã:
vim ceph.conf
Trong khối [toàn cầu], dán cấu hình bên dưới.
Mã:
# Địa chỉ mạng của bạn
mạng công cộng = 10.0.15.0/24
kích thước mặc định của nhóm osd = 2
Lưu tệp và thoát khỏi vim.


Cài đặt Ceph trên tất cả các nút​

Bây giờ hãy cài đặt Ceph trên tất cả các nút khác từ nút ceph-admin. Điều này có thể được thực hiện bằng một lệnh duy nhất.
Mã:
ceph-deploy install ceph-admin mon1 osd1 osd2 osd3
Lệnh này sẽ tự động cài đặt Ceph trên tất cả các nút: mon1, osd1-3 và ceph-admin - Quá trình cài đặt sẽ mất một thời gian.

Bây giờ hãy triển khai ceph-mon trên nút mon1.
Mã:
ceph-deploy mon create-initial
Lệnh này sẽ tạo khóa giám sát, kiểm tra và lấy khóa bằng lệnh 'ceph'.
Mã:
ceph-deploy gatherkeys mon1



Thêm OSDS vào Cluster​

Khi Ceph đã được cài đặt trên tất cả các nút, thì chúng ta có thể thêm daemon OSD vào cluster. OSD Daemon sẽ tạo phân vùng dữ liệu và nhật ký của chúng trên đĩa /dev/sdb.

Kiểm tra xem phân vùng /dev/sdb có khả dụng trên tất cả các nút OSD không.
Mã:
ceph-deploy disk list osd1 osd2 osd3


Bạn sẽ thấy /dev/sdbdisk với định dạng XFS.

Tiếp theo, xóa các bảng phân vùng /dev/sdb trên tất cả các nút bằng tùy chọn zap.
Mã:
ceph-deploy disk zap osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb
Lệnh này sẽ xóa tất cả dữ liệu trên /dev/sdb trên các nút Ceph OSD.

Bây giờ hãy chuẩn bị tất cả các nút OSDS. Đảm bảo không có lỗi trong kết quả.
Mã:
ceph-deploy osd prepare osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb
Nếu bạn thấy kết quả osd1-3 đã sẵn sàng để sử dụng OSD thì quá trình triển khai đã thành công.



Kích hoạt OSD bằng lệnh bên dưới:
Mã:
ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1 osd3:/dev/sdb1
Kiểm tra lỗi đầu ra trước khi tiếp tục. Bây giờ bạn có thể kiểm tra đĩa sdb trên các nút OSD bằng lệnh list.
Mã:
ceph-deploy disk list osd1 osd2 osd3


Kết quả là /dev/sdb hiện có hai phân vùng:
  1. /dev/sdb1 - Ceph Data
  2. /dev/sdb2 - Ceph Journal
Hoặc bạn có thể kiểm tra trực tiếp trên nút OSD bằng fdisk.
Mã:
ssh osd1
sudo fdisk -l /dev/sdb


Tiếp theo, triển khai management-key tới tất cả các nút được liên kết.
Mã:
ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3
Thay đổi quyền của tệp khóa bằng cách chạy lệnh bên dưới trên tất cả nodes.
Mã:
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
Ceph Cluster trên CentOS 7 đã được tạo.


Bước 6 - Kiểm tra thiết lập Ceph​

Ở bước 4, chúng tôi đã cài đặt và tạo cụm Ceph mới, sau đó chúng tôi đã thêm các nút OSDS vào cụm. Bây giờ chúng ta có thể kiểm tra cụm và đảm bảo không có lỗi nào trong quá trình thiết lập cụm.

Từ nút ceph-admin, hãy đăng nhập vào máy chủ giám sát ceph 'mon1'.
Mã:
ssh mon1
Chạy lệnh bên dưới để kiểm tra tình trạng cụm.
Mã:
sudo ceph health
Bây giờ hãy kiểm tra trạng thái cụm.
Mã:
sudo ceph -s
Và bạn sẽ thấy kết quả bên dưới:



Đảm bảo tình trạng Ceph OK và có một nút giám sát 'mon1' có địa chỉ IP '10.0.15.11'. Cần có 3 máy chủ OSD và tất cả đều phải hoạt động và phải có đĩa trống khoảng 75GB - 3x25GB phân vùng Ceph Data.

Xin chúc mừng, bạn đã xây dựng thành công một Ceph Cluster mới.

Trong phần tiếp theo của hướng dẫn về Ceph, tôi sẽ chỉ cho bạn cách sử dụng Ceph như một Thiết bị khối hoặc gắn kết nó như một Hệ thống tệp.


Tham khảo​

 
Back
Bên trên