CEPH là một sản phẩm nguồn mở để triển khai giải pháp storage hợp nhất, tức là nó có thể cung cấp được các loại storage bao gồm: Object Storage, Block Storage và File Storage trên một hệ thống duy nhất. CEPH có thể đáp ứng quy mô triển khai từ vài máy chủ cho tới vài chục máy để cung cấp hạ tầng lưu trữ cho ứng dụng trong hạ tầng của ban.
Kiến trúc của CEPH
Tính tới thời điểm này, CEPH Nautilus (version 14.x) là phiên bản stable của CEPH. Trong biên bản ngày, ngoài những tính năng hay ho vốn có của hệ thống Storage nói chung thì CEPH còn cung cấp một phiên bản cải tiến khá lớn về giao diện người dùng (CEPH Dashboad), đồng thời tích hợp sẵn với các ứng dụng giám sát như prometheus, zabbix.
Hiện trên trang chủ docs.ceph.com cung cấp khá đầy đủ tài liệu cài đặt CEPH, nhưng để phục vụ việc lab của team cloud365 và chia sẻ về stack mà team đang dùng để xây dựng cloud thì mình xin chia sẻ tài liệu dựng LAB với CEPH trên mô hình 03 node để tạo cluster CEPH.
Trong phạm vi bài lab này, cloud365 sẽ cài đặt CEPH và cấu hình để cung cấp Object Storage & Block Storage cho client có thể sử dụng. Tài liệu này cũng hướng dẫn các bạn dựng lab và cấu hình cơ bản Ceph Dashboad.
Môi trường cài đặt CEPH được thực hiện trên các máy ảo, hoặc các máy vật lý, tùy vào điều kiện của bạn. Các VLAN được cấu hình trước đó, hãy thay đổi nếu hạ tầng của bạn có các VLAN khác nhau.
1. Mô hình dựng LAB
1.1 Mô hình logic khi dựng LAB
Trong mô hình logic này, sẽ có các thành phần của CEPH. Các thành phần này sẽ thuộc các node trên mô hình triển khai (Mô hình đấu nối vật lý) bao gồm: ceph-admin, ceph-mgr, MON, OSD, RADOSGW. Vai trò của từng thành phần này sẽ được đề cập ở các bài về lý thuyết khác.
1.2. Mô hình triển khai
2. IP Planning
IP Planning và cấu hình từng máy để dựng LAB. Bạn có thể triển khai mô hình này trên các môi trường ảo hóa KVM, VMware, Virtualbox hoặc trên các máy vật lý. Tùy vào các VLAN trong hệ thống của bạn mà có thể điều chỉnh cho phù hợp. Các cấu hình về RAM, Disk, CPU chỉ là cấu hình tương tương trở lên
3. Các bước cài đặt
3.1. Thiết lập hostname, IP
3.1.1. Thiết lập hostname, IP cho node CEPH1
Login với tài khoản root và thực hiện các lệnh dưới.
yum update -y
Cài đặt các gói phần mềm bổ trợ
yum install epel-release -y
yum update -y
yum install wget byobu curl git byobu python-setuptools python-virtualenv -y
Thiết lập hostname cho CEPH1
hostnamectl set-hostname ceph1
Thiết lập IP Add, trong hướng dẫn này, VLAN 192.168.98.0/24 sẽ ra internet để tải các gói cài đặt.
echo "Setup IP ens32"
nmcli con modify ens32 ipv4.addresses 192.168.98.85/24
nmcli con modify ens32 ipv4.gateway 192.168.98.1
nmcli con modify ens32 ipv4.dns 8.8.8.8
nmcli con modify ens32 ipv4.method manual
nmcli con modify ens32 connection.autoconnect yes
echo "Setup IP ens33"
nmcli con modify ens33 ipv4.addresses 192.168.62.85/24
nmcli con modify ens33 ipv4.method manual
nmcli con modify ens33 connection.autoconnect yes
echo "Setup IP ens34"
nmcli con modify ens34 ipv4.addresses 192.168.63.85/24
nmcli con modify ens34 ipv4.method manual
nmcli con modify ens34 connection.autoconnect yes
Cấu hình chế độ firewall để tiện trong môi trường lab. Trong môi trường production cần bật firewall hoặc iptables hoặc có biện pháp xử lý khác tương ứng để đảm bảo các vấn đề về an toàn.
sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl enable network
sudo systemctl start network
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
Khai báo file /etc/hosts. Việc này rất quan trọng vì CEPH sẽ sử dụng hostname trong các bước tới để cấu hình và kết nối khi thực hiện.
cat << EOF > /etc/hosts
127.0.0.1 `hostname` localhost
192.168.62.84 client1
192.168.62.85 ceph1
192.168.62.86 ceph2
192.168.62.87 ceph3
192.168.98.84 client1
192.168.98.85 ceph1
192.168.98.86 ceph2
192.168.98.87 ceph3
EOF
Cài đặt NTP, trong hướng dẫn này sử dụng chronyd thay cho ntpd. Việc đồng bộ thời gian cũng là quan trọng khi triển khai CEPH. Hãy đảm bảo timezone và thời gian được đồng bộ để đúng với hệ thống của bạn.
yum install -y chrony
systemctl enable chronyd.service
systemctl start chronyd.service
systemctl restart chronyd.service
chronyc sources
Lưu ý: Nếu bạn có hệ thống NTP nội bộ, hãy cấu hình nó hoặc tham khảo ở đây: https://news.cloud365.vn/?s=ntp
Khởi động lại node CEPH1 và chuyển sang CEPH2 thực hiện tiếp.
init 6
3.1.2. Thiết lập hostname, IP cho node CEPH2
Login với tài khoản root và thực hiện các lệnh dưới.
Cập nhật các gói phần mềm.
yum update -y
Cài đặt các gói phần mềm bổ trợ
yum install epel-release -y
yum update -y
yum install wget byobu curl git byobu python-setuptools python-virtualenv -y
Thiết lập hostname cho CEPH2
hostnamectl set-hostname ceph2
Thiết lập IP Add, trong hướng dẫn này, VLAN 192.168.98.0/24 sẽ ra internet để tải các gói cài đặt.
echo "Setup IP ens32"
nmcli con modify ens32 ipv4.addresses 192.168.98.86/24
nmcli con modify ens32 ipv4.gateway 192.168.98.1
nmcli con modify ens32 ipv4.dns 8.8.8.8
nmcli con modify ens32 ipv4.method manual
nmcli con modify ens32 connection.autoconnect yes
echo "Setup IP ens33"
nmcli con modify ens33 ipv4.addresses 192.168.62.86/24
nmcli con modify ens33 ipv4.method manual
nmcli con modify ens33 connection.autoconnect yes
echo "Setup IP ens34"
nmcli con modify ens34 ipv4.addresses 192.168.63.86/24
nmcli con modify ens34 ipv4.method manual
nmcli con modify ens34 connection.autoconnect yes
Cấu hình chế độ firewall để tiện trong môi trường lab. Trong môi trường production cần bật firewall hoặc iptables hoặc có biện pháp xử lý khác tương ứng để đảm bảo các vấn đề về an toàn.
sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl enable network
sudo systemctl start network
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
Khai báo file /etc/hosts. Việc này rất quan trọng vì CEPH sẽ sử dụng hostname trong các bước tới để cấu hình và kết nối khi thực hiện.
cat << EOF > /etc/hosts
127.0.0.1 `hostname` localhost
192.168.62.84 client1
192.168.62.85 ceph1
192.168.62.86 ceph2
192.168.62.87 ceph3
192.168.98.84 client1
192.168.98.85 ceph1
192.168.98.86 ceph2
192.168.98.87 ceph3
EOF
Cài đặt NTP, trong hướng dẫn này sử dụng chronyd thay cho ntpd. Việc đồng bộ thời gian cũng là quan trọng khi triển khai CEPH. Hãy đảm bảo timezone và thời gian được đồng bộ để đúng với hệ thống của bạn.
yum install -y chrony
systemctl enable chronyd.service
systemctl start chronyd.service
systemctl restart chronyd.service
chronyc sources
Lưu ý: Nếu bạn có hệ thống NTP nội bộ, hãy cấu hình nó hoặc tham khảo ở đây: https://news.cloud365.vn/?s=ntp
Khởi động lại node CEPH2 và chuyển sang CEPH3 thực hiện.
init 6
3.1.3. Thiết lập hostname, IP cho node CEPH3
Login với tài khoản root và thực hiện các lệnh dưới.
Cập nhật các gói phần mềm.
yum update -y
Cài đặt các gói bổ trợ
yum install epel-release -y
yum update -y
yum install wget byobu curl git byobu python-setuptools python-virtualenv -y
Thiết lập hostname cho CEPH3
hostnamectl set-hostname ceph3
Thiết lập IP Add, trong hướng dẫn này, VLAN 192.168.98.0/24 sẽ ra internet để tải các gói cài đặt.
echo "Setup IP ens32"
nmcli con modify ens32 ipv4.addresses 192.168.98.87/24
nmcli con modify ens32 ipv4.gateway 192.168.98.1
nmcli con modify ens32 ipv4.dns 8.8.8.8
nmcli con modify ens32 ipv4.method manual
nmcli con modify ens32 connection.autoconnect yes
echo "Setup IP ens33"
nmcli con modify ens33 ipv4.addresses 192.168.62.87/24
nmcli con modify ens33 ipv4.method manual
nmcli con modify ens33 connection.autoconnect yes
echo "Setup IP ens34"
nmcli con modify ens34 ipv4.addresses 192.168.63.87/24
nmcli con modify ens34 ipv4.method manual
nmcli con modify ens34 connection.autoconnect yes
Cấu hình chế độ firewall để tiện trong môi trường lab. Trong môi trường production cần bật firewall hoặc iptables hoặc có biện pháp xử lý khác tương ứng để đảm bảo các vấn đề về an toàn.
sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl enable network
sudo systemctl start network
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
Khai báo file /etc/hosts. Việc này rất quan trọng vì CEPH sẽ sử dụng hostname trong các bước tới để cấu hình và kết nối khi thực hiện.
cat << EOF > /etc/hosts
127.0.0.1 `hostname` localhost
192.168.62.84 client1
192.168.62.85 ceph1
192.168.62.86 ceph2
192.168.62.87 ceph3
192.168.98.84 client1
192.168.98.85 ceph1
192.168.98.86 ceph2
192.168.98.87 ceph3
EOF
Cài đặt NTP, trong hướng dẫn này sử dụng chronyd thay cho ntpd. Việc đồng bộ thời gian cũng là quan trọng khi triển khai CEPH. Hãy đảm bảo timezone và thời gian được đồng bộ để đúng với hệ thống của bạn.
yum install -y chrony
systemctl enable chronyd.service
systemctl start chronyd.service
systemctl restart chronyd.service
chronyc sources
Lưu ý: Nếu bạn có hệ thống NTP nội bộ, hãy cấu hình nó hoặc tham khảo ở đây: https://news.cloud365.vn/?s=ntp
Khởi động lại
init 6
Login với các IP đã đặt cho CEPH trước đó.
3.2. Tạo user cài đặt CEPH và khai báo repos
3.2.1. Tạo user để cài đặt CEPH trên cả 03 node CEPH1, CEPH2, CEPH3.
Bước này được thực hiện trên cả 03 node CPEH.
Tạo user là cephuser với mật khẩu là matkhau2019@
useradd cephuser; echo 'matkhau2019@' | passwd cephuser --stdin
Cấp quyền sudo cho user cephuser
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
3.2.2. Khai báo repo cho ceph nautilus
Thực hiện hiện khai báo repo cho ceph nautilus trên tất cả các node CEPH.
cat <<EOF> /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=https://download.ceph.com/rpm-nautilus/el7/x86_64/
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://download.ceph.com/rpm-nautilus/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
EOF
Thực hiện update sau khi khai bao repo
yum update -y
3.3. Cài đặt ceph-deploy và cấu hình
Theo docs của CEPH thì ta có thể cài đặt CEPH theo 03 cách, bao gồm: CEPH manual, ceph-deploy và ceph-ansible. Trong hướng dẫn này sẽ sử dụng ceph-deploy, một công cụ để triển khai CEPH.
3.3.1 Cài đặt ceph-deploy.
Thực hiện việc cài đặt này trên node CEPH1
Trong một số mô hình, node cài đặt ceph-deploy được gọi là node admin. Trong hướng dẫn này, cloud365 sẽ sử dụng node ceph1 chính là node ceph admin. Thực hiện việc này bằng tài khoản root.
Lưu ý: trong hướng dẫn này chỉ cần đứng trên ceph1 thực hiện, một số thao tác trên node CEPH2, CEPH3 sẽ thực hiện từ xa ngay trên CEPH1.
sudo yum install -y epel-release
sudo yum install -y ceph-deploy
Chuyển sang tài khoản cephuser
su - cephuser
Tạo ssh key, sau đó copy sang các node còn lại, nhập mật khẩu của user cephuser ở trên khi được hỏi tại màn hình. Lưu ý không dùng sudo với lệnh ssh-keygen
ssh-keygen
Nhấn Enter để mặc định các tham số, bước này sẽ sinh ra private key và public key cho user cephuser. Sau đó tiến hành các lệnh dưới để copy public key sang các node.
Nhập mật khẩu của user cephuser tạo ở các node trước đó trong bước trên.
ssh-copy-id cephuser@ceph1
ssh-copy-id cephuser@ceph2
ssh-copy-id cephuser@ceph3
Tạo thư mục chứa các file cấu hình khi cài đặt CEPH
cd ~
mkdir my-cluster
cd my-cluster
Khai báo các node ceph trong cluser.
ceph-deploy new ceph1 ceph2 ceph3
Lệnh trên sẽ sinh ra các file cấu hình trong thư mục hiện tại, kiểm tra bằng lệnh ls – alh
cephuser@ceph1:~/my-cluster$ ls -alh
total 188K
drwxrwxr-x 2 cephuser cephuser 75 Sep 6 23:14 .
drwx------ 5 cephuser cephuser 151 Sep 6 23:14 ..
-rw-rw-r-- 1 cephuser cephuser 418 Sep 6 23:15 ceph.conf
-rw-rw-r-- 1 cephuser cephuser 177K Sep 6 23:19 ceph-deploy-ceph.log
-rw------- 1 cephuser cephuser 73 Sep 6 23:14 ceph.mon.keyring
Khai báo thêm các tùy chọn cho việc triển khai, vận hành CEPH vào file ceph.conf này trước khi cài đặt các gói cần thiết cho ceph trên các node. Lưu ý các tham số về network.
Ta sẽ dụng vlan 192.168.62.0/24 cho đường truy cập của các client (Hay gọi là ceph public. Vlan 192.168.63.0/24 cho đường replicate dữ liệu, các dữ liệu sẽ được sao chép & nhân bản qua vlan này.
echo "public network = 192.168.62.0/24" >> ceph.conf
echo "cluster network = 192.168.63.0/24" >> ceph.conf
echo "osd objectstore = bluestore" >> ceph.conf
echo "mon_allow_pool_delete = true" >> ceph.conf
echo "osd pool default size = 3" >> ceph.conf
echo "osd pool default min size = 1" >> ceph.conf
Bắt đầu cài đặt phiên bản CEPH Nautilus lên các node ceph1, ceph2, ceph3. Lệnh dưới sẽ cài đặt lần lượt lên các node.
ceph-deploy install --release nautilus ceph1 ceph2 ceph3
Kết quả của lệnh trên sẽ hiển thị như bên dưới, trong đó có phiên bản của ceph được cài trên các node.
.......
[2019-09-06 23:16:46,139][ceph1][INFO ] Running command: sudo ceph --version
[2019-09-06 23:16:46,262][ceph1][DEBUG ] ceph version 14.2.3 (0f776cf838a1ae3130b2b73dc26be9c95c6ccc39) nautilus (stable)
.......
[2019-09-06 23:18:18,771][ceph2][INFO ] Running command: sudo ceph --version
[2019-09-06 23:18:18,944][ceph2][DEBUG ] ceph version 14.2.3 (0f776cf838a1ae3130b2b73dc26be9c95c6ccc39) nautilus (stable)
.......
[2019-09-06 23:19:46,856][ceph3][INFO ] Running command: sudo ceph --version
[2019-09-06 23:19:47,028][ceph3][DEBUG ] ceph version 14.2.3 (0f776cf838a1ae3130b2b73dc26be9c95c6ccc39) nautilus (stable)
Thiết lập thành phần MON cho CEPH. Trong hướng dẫn này khai báo 03 node đều có thành phần MON của CEPH.
ceph-deploy mon create-initial
Kết quả sinh ra các file trong thư mục hiện tại
cephuser@ceph1:~/my-cluster$ ls -alh
total 348K
drwxrwxr-x 2 cephuser cephuser 244 Sep 6 23:26 .
drwx------ 5 cephuser cephuser 151 Sep 6 23:14 ..
-rw------- 1 cephuser cephuser 113 Sep 6 23:26 ceph.bootstrap-mds.keyring
-rw------- 1 cephuser cephuser 113 Sep 6 23:26 ceph.bootstrap-mgr.keyring
-rw------- 1 cephuser cephuser 113 Sep 6 23:26 ceph.bootstrap-osd.keyring
-rw------- 1 cephuser cephuser 113 Sep 6 23:26 ceph.bootstrap-rgw.keyring
-rw------- 1 cephuser cephuser 151 Sep 6 23:26 ceph.client.admin.keyring
-rw-rw-r-- 1 cephuser cephuser 418 Sep 6 23:15 ceph.conf
-rw-rw-r-- 1 cephuser cephuser 214K Sep 6 23:26 ceph-deploy-ceph.log
-rw------- 1 cephuser cephuser 73 Sep 6 23:14 ceph.mon.keyring
Thực hiện copy file ceph.client.admin.keyring sang các node trong cụm ceph cluster. File này sẽ được copy vào thư mục /etc/ceph/ trên các node.
ceph-deploy admin ceph1 ceph2 ceph3
Kết quả của lệnh trên như sau
cephuser@ceph1:~/my-cluster$ ceph-deploy admin ceph1 ceph2 ceph3
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephuser/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (2.0.1): /bin/ceph-deploy admin ceph1 ceph2 ceph3
[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 0x7f3c031d6248>
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] client : ['ceph1', 'ceph2', 'ceph3']
[ceph_deploy.cli][INFO ] func : <function admin at 0x7f3c03a77230>
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph1
[ceph1][DEBUG ] connection detected need for sudo
[ceph1][DEBUG ] connected to host: ceph1
[ceph1][DEBUG ] detect platform information from remote host
[ceph1][DEBUG ] detect machine type
[ceph1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph2
[ceph2][DEBUG ] connection detected need for sudo
[ceph2][DEBUG ] connected to host: ceph2
[ceph2][DEBUG ] detect platform information from remote host
[ceph2][DEBUG ] detect machine type
[ceph2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph3
[ceph3][DEBUG ] connection detected need for sudo
[ceph3][DEBUG ] connected to host: ceph3
[ceph3][DEBUG ] detect platform information from remote host
[ceph3][DEBUG ] detect machine type
[ceph3][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
Đứng trên node ceph1
phân quyền cho file /etc/ceph/ceph.client.admin.keyring cho cả 03 node.
ssh cephuser@ceph1 'sudo chmod +r /etc/ceph/ceph.client.admin.keyring'
ssh cephuser@ceph2 'sudo chmod +r /etc/ceph/ceph.client.admin.keyring'
ssh cephuser@ceph3 'sudo chmod +r /etc/ceph/ceph.client.admin.keyring'
3.3.2 Khai báo các OSD cho node CEPH.
Đứng trên node ceph1 và thực hiện khai báo các OSD disk. Bước này sẽ thực hiện format các disk trên cả 3 node và join chúng vào làm các OSD (Thành phần chứa dữ liệu của CEPH).
ceph-deploy osd create --data /dev/sdb ceph1
ceph-deploy osd create --data /dev/sdc ceph1
ceph-deploy osd create --data /dev/sdd ceph1
ceph-deploy osd create --data /dev/sdb ceph2
ceph-deploy osd create --data /dev/sdc ceph2
ceph-deploy osd create --data /dev/sdd ceph2
ceph-deploy osd create --data /dev/sdb ceph3
ceph-deploy osd create --data /dev/sdc ceph3
ceph-deploy osd create --data /dev/sdd ceph3
Tới đây các bước cơ bản cấu hình ceph cluser đã hoàn tất. Kiểm tra trạng thái của cụm cluster ceph bằng lệnh ceph -s
Kết quả lệnh ceph -s sẽ như sau
cephuser@ceph1:~/my-cluster$ ceph -s
cluster:
id: 9691b2b5-a858-45b7-a239-4de3e1ff69c6
health: HEALTH_WARN
no active mgr
services:
mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 4m)
mgr: no daemons active
osd: 8 osds: 8 up (since 6s), 8 in (since 6s)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
Ta thấy trạng thái sẽ là HEALTH_WARN
, lý do là vì ceph-mgr chưa được enable. Tiếp theo ta sẽ xử lý để kích hoạt ceph-mgr
3.3.3. Cấu hình manager và dashboad cho ceph cluster
Ceph-dashboard là một thành phần thuộc ceph-mgr
. Trong bản Nautilus thì thành phần dashboard được cả tiến khá lớn. Cung cấp nhiều quyền hạn thao tác với CEPH hơn các bản trước đó (thành phần này được đóng góp chính bởi team SUSE).
Thực hiện trên node ceph1 việc cài đặt này.
Trong bản ceph nautilus 14.2.3 (tính đến ngày 06.09.2019), khi cài ceph dashboard theo các cách cũ gặp một vài vấn đề, cách xử lý như sau.
Cài thêm các gói bổ trợ trước khi cài
sudo yum install -y python-jwt python-routes
Tải ceph-dashboad ceph-mgr-dashboard-14.2.3-0.el7.noarch.rpm
và ceph-grafana-dashboards-14.2.3-0.el7.noarch.rpm
. Lưu ý nên đúng phiên bản với ceph ở trên.
sudo rpm -Uvh http://download.ceph.com/rpm-nautilus/el7/noarch/ceph-grafana-dashboards-14.2.3-0.el7.noarch.rpm
sudo rpm -Uvh http://download.ceph.com/rpm-nautilus/el7/noarch/ceph-mgr-dashboard-14.2.3-0.el7.noarch.rpm
Thực hiện kích hoạt ceph-mgr và ceph-dashboard
ceph-deploy mgr create ceph1 ceph2 ceph3
ceph mgr module enable dashboard --force
ceph mgr module ls
Kết quả
{
"enabled_modules": [
"dashboard",
"iostat",
"restful"
],
"disabled_modules": []
}
Tạo cert cho ceph-dashboad
sudo ceph dashboard create-self-signed-cert
Kết quả trả về dòng Self-signed certificate created là thành công.
Tạo tài khoản cho ceph-dashboard, trong hướng dẫn này tạo tài khoản tên là cephadmin và mật khẩu là matkhau2019@
ceph dashboard ac-user-create cephadmin matkhau2019@ administrator
Kết quả trả về là
{"username": "cephadmin", "lastUpdate": 1567415960, "name": null, "roles": ["administrator"], "password": "$2b$12$QhFs2Yo9KTICIqT8v5xLC.kRCjzuLyXqyzBQVQ4MwQhDbSLKni6pC", "email": null}
Kiểm tra xem ceph-dashboard đã được cài đặt thành công hay chưa
ceph mgr services
Kết quả trả về sẽ là dòng bên dưới.
{
"dashboard": "https://0.0.0.0:8443/"
}
Trước khi tiến hành đăng nhập vào web, có thể kiểm tra trạng thái cluser bằng lệnh ceph -s
. Ta sẽ có kết quả trạng thái là OK.
Kết quả sẽ là địa chỉ truy cập ceph-dashboad, ta có thể vào bằng địa chỉ IP thay vì hostname, https://Dia_Chi_IP_CEPH1:8443
Ta có một số màn hình đăng nhập
3.3.4. Cấu hình object storage và khai báo sử dụng trên ceph-dashboard
Trong hướng dẫn này sử dụng node ceph2 để cài đặt thành phần Radosgw để cung cấp object storage.
Đứng trên ceph1 tiếp tục thực hiện lệnh dưới để triển khai thành phần radosgw. Lưu ý, lúc này vẫn đang dùng tài khoản cephuser
và đứng ở thư mục my-cluster
ceph-deploy install --rgw ceph2
ceph-deploy rgw create ceph2
Kết quả lệnh sẽ là:
.....
[ceph_deploy.rgw][INFO ] Distro info: CentOS Linux 7.6.1810 Core
[ceph_deploy.rgw][DEBUG ] remote host will use systemd
[ceph_deploy.rgw][DEBUG ] deploying rgw bootstrap to ceph2
[ceph2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph2][WARNIN] rgw keyring does not exist yet, creating one
[ceph2][DEBUG ] create a keyring file
[ceph2][DEBUG ] create path recursively if it doesn't exist
[ceph2][INFO ] Running command: sudo ceph --cluster ceph --name client.bootstrap-rgw --keyring /var/lib/ceph/bootstrap-rgw/ceph.keyring auth get-or-create client.rgw.ceph2 osd allow rwx mon allow rw -o /var/lib/ceph/radosgw/ceph-rgw.ceph2/keyring
[ceph2][INFO ] Running command: sudo systemctl enable ceph-radosgw@rgw.ceph2
[ceph2][WARNIN] Created symlink from /etc/systemd/system/ceph-radosgw.target.wants/ceph-radosgw@rgw.ceph2.service to /usr/lib/systemd/system/ceph-radosgw@.service.
[ceph2][INFO ] Running command: sudo systemctl start ceph-radosgw@rgw.ceph2
[ceph2][INFO ] Running command: sudo systemctl enable ceph.target
[ceph_deploy.rgw][INFO ] The Ceph Object Gateway (RGW) is now running on host ceph2 and default port 7480
Thực hiện khai báo user để có thể sử dụng được dashboard để quản lý object storage, ta sẽ có tùy chọn “–system“
radosgw-admin user create --uid=cloud365admin --display-name=Cloud365 --system
Kết quả trả về sẽ là thông tin về access_key và secret_key của user nhanhoadmin, lưu lại thông tin này để dùng cho lệnh khai báo tích hợp với dashboad
"keys": [
{
"user": "cloud365admin",
"access_key": "CQF41G7RFFSXV37NXE82",
"secret_key": "S7SC3kGkdT22Okw6cbwThYIxerPH40J3UZgLk44C"
}
],
Thực hiện khai báo access_key
và secret_key
tích hợp với dashboard của ceph. Lưu ý phải dùng chuỗi đối với kết quả của bạn nhé.
ceph dashboard set-rgw-api-access-key CQF41G7RFFSXV37NXE82
ceph dashboard set-rgw-api-secret-key S7SC3kGkdT22Okw6cbwThYIxerPH40J3UZgLk44C
ceph dashboard set-rgw-api-ssl-verify False
Tới đây, ta chuyển sang bước login vào dashboard của CEPH để xem các thành phần của object storage
vừa khai báo, cụ thể như sau
Kết thúc phần 1
Tới đây, phần 1 của chuỗi bài LAB đã kết thúc, trong các phần tiếp theo cloud365 sẽ hướng dẫn cấu hình để tạo ra các pool cung cấp block storage, object storage để cung cấp cho các client sử dụng.
Rất vui khi được góp ý và chia sẻ tài liệu này cùng các bạn.
Trân trọng cám ơn
Hay và chi tiết lắm. Mình mới tìm hiểu openstack đã dựng lab mà chưa biết cái này. Cái này team có hướng dẫn trên ubuntu ko?
Hi Lê Hậu
OpenStack & CEPH là một cặp tuyệt vời để dựng public hoặc private cloud hiện nay (bằng sản phẩm nguồn mở)
Theo kinh nghiệm từ team thì nên tìm hiểu về CEPH và kiểm soát trước khi sang OpenStack (nếu team ít người, còn nhiều người chia 2 team làm song song).
Về tài liệu này cho Ubuntu thì team mình chưa docs nhưng từng làm rồi. Các bước chính giống nhau, thay lại các lệnh với Ubuntu là ok.
Nắm vững các khai niệm, đấu nối đúng thì 02 distro này như nhau.
Cám ơn bạn đã comment và cùng trao đổi.
Dear Công Tô,
Rất hay, mình cũng đã setup thử CEPH lumious, quá trình cài đặt không có lỗi, tuy nhiên khi thực hiện cấp lun dạng file system cho CEPH client thì báo lỗi :
[ceph-deploy@redmine ~]$ ceph-fuse -n client.admin -m 172.29.13.200:6789 /mnt/mycephfs
ceph-fuse[1772]: starting ceph client
2019-09-04 10:15:08.108941 7fb82d21ff00 -1 init, newargv = 0x55dcca340900 newargc=11
ceph-fuse[1772]: probably no MDS server is up?
ceph-fuse[1772]: ceph mount failed with (4) Interrupted system call
ceph-fuse[1770]: mount failed: (4) Interrupted system call
Qua kiểm tra MDS vẫn start
[ceph-deploy@ceph1 ~]$ ceph mds stat
cephfs-0/0/1 up
Nếu được bạn có thể post sớm giúp phần cấp lun cho ceph client nhé, cám ơn bạn.
Chào Dũng Phạm
Hiện thực tế mình chưa cung cấp dạng File Storage cho product. Hiện đang làm chủ yếu với Block Storage để cung cấp storage cho VM.
Dự kiến trong tháng này sẽ ra loạt bài về Object Stroage trước, sau đó lựa tình hình để tìm hiểu sớm sang File Storage, có docs sẽ update với bạn và ae.
Cám ơn sự quan tâm và ủng hộ từ ae.
Công TÔ
Dear dungpham
Bạn có thêm thông tin về cụm Lab của bạn không. VD: Mô hình kết nối, phiên bản sử dụng,…
Dear Dungpham,
Kết quả check lệnh ceph mds stat có như bên dưới không?
fs_01:3 {0=sdslab05=up:active,1=sdslab04=up:active,2=sdslab03=up:active} 2 up:standby
hi công tô,
bài viết rất chi tiết, mình cũng đang tìm hiểu về ceph, nếu bạn có document về ceph full thì share giúp mình dc ko , build trên centos và ubutu lun càng tốt
Chào Hậu
Full nhất thì chỉ có docs, còn tài liệu team mình thì đang trong quá trình hoàn thành nhé. Nếu bạn có nhu cầu tìm hiểu thì cùng lab với ae. Làm trên ubuntu chẳng hạn.
Thank guy. You save my life !
Em làm đến đoạn này thì fail anh Công ơi: http://prntscr.com/sgguix
Hi bạn,
Qua ảnh thì có thể bạn đang gặp vấn đề với việc cài ceph dashboard.
Bản Nautilus hiện tại đã ổn định khi cài dashboard trực tiếp từ repository. Bạn có thể tham khảo một số câu lệnh sau:
yum install ceph-mgr-dashboard -y
ceph mgr module enable dashboard
ceph dashboard create-self-signed-cert
ceph dashboard set-login-credentials (username) (password)
Tham khảo thêm theo docs: https://docs.ceph.com/docs/nautilus/mgr/dashboard/
Xin cảm ơn.
Lỗi đó do thiếu lib, mình cài xong quên ko save lại.
Để mình test lại rồi gửi anh em.
sudo pip uninstall requests
pip install –upgrade pip
sudo pip uninstall urllib3
sudo yum remove python-urllib3
rpm -qa | grep requests
pip freeze | grep requests
sudo yum install python-urllib3 -y
sudo yum install python-requests
Một số lỗi thì dựng dashboard do thiếu lib ở đây nhé ae.
thanks bạn,
tài liệu rất cụ thể, dễ hiểu, nhưng mình ko hiểu sao khác dải mà lại đặt cùng tên trong file /etc/hosts nhỉ?
Nguyen Anh Duc
Thanks&Brg!
Có IP cùng range là được mà, bạn xem lại chút về cơ chế của file /etc/hosts nhé.
Việc đó là bình thường mà bạn, file hosts đó có thể khai báo IP nào cũng được, nó thay thế cơ chế DNS ấy. Bạn đọc kỹ lại chỗ đó chút nhé.
Mình làm đến > ceph-deploy mon create-initial thì báo lỗi
“[ceph_deploy][ERROR ] KeyNotFoundError: Could not find keyring file: /etc/ceph/ceph.client.admin.keyring on host ceph1, /etc/ceph/ceph.client.admin.keyring on host ceph2, /etc/ceph/ceph.client.admin.keyring on host ceph3”