Tin tức, hướng dẫn và chia sẻ về công nghệ

[CEPH] [LAB] [Phần1] Hướng dẫn cài đặt CEPH Nautilus trên CentOS7

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

Mô hình đấu nối (Mô hình vật lý)

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.rpmceph-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

Màn hình login
Màn hình trạng thái tổng thể của CEP cluster
Màn hình thành phần MON của CEPH
Màn hình dung lượng sử dụng của CEPH
Màn hình các Node của CEPH
Màn hình các OSD disk của CEPH

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 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_keytí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

Màn hình quan sát các node đã cài đăt radosgw
Màn hình liệt kê user của object storage
Màn hình tạo user trong object storage

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

17 Comments

  1. Lê Hậu

    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?

    • Công TÔ

      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.

  2. dungpham

    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.

    • Công TÔ

      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Ô

    • Đặng Xuân Cảnh

      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,…

    • tuandung

      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

  3. haukhuu

    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

    • Công 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.

  4. Long

    Thank guy. You save my life !

  5. ThaoPT

    Em làm đến đoạn này thì fail anh Công ơi: http://prntscr.com/sgguix

    • Nguyễn Văn Thao

      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.

      • ThaoPT

        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.

      • ThaoPT

        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.

  6. Nguyen Anh Duc

    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!

    • Cong TO

      Có IP cùng range là được mà, bạn xem lại chút về cơ chế của file /etc/hosts nhé.

    • Công TÔ

      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é.

  7. Minh

    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”

Leave a Reply

Your email address will not be published. Required fields are marked *