1. Tổng quan.
Ceph.conf
là file cấu hình chính của Ceph, được sử dụng để định cấu hình toàn bộ hệ thống Ceph cluster. Nó chứa thông tin về các thành phần khác nhau của cluster, cách chúng tương tác với nhau và các thiết lập an ninh và mạng.
Hãy xem ví dụ dưới đây để có một cái nhìn tổng quan về cách ceph.conf
hoạt động và vai trò của nó:
[global]
auth_client_required = cephx
auth_cluster_required = cephx
auth_service_required = cephx
cluster_network = fc00::/126
fsid = c83fa570-ef43-4d9a-aaf4-51aeed96aa15
mon_allow_pool_delete = true
mon_host = fc00::3 fc00::1 fc00::2
ms_bind_ipv4 = false
ms_bind_ipv6 = true
osd_pool_default_min_size = 2
osd_pool_default_size = 3
public_network = fc00::/126
[client]
keyring = /etc/pve/priv/$cluster.$name.keyring
[mon.pve1]
public_addr = fc00::1
[mon.pve2]
public_addr = fc00::2
[mon.pve3]
public_addr = fc00::3
2. Thiết lập Chung ([global]
):
Cấu hình global
xác định các thông số cơ bản cho việc xác thực, giao tiếp nội bộ và bên ngoài, cũng như cách mà các OSDs và MDSs liên kết với địa chỉ IP trong Ceph cluster.
Ví dụ:
auth_client_required = cephx
auth_cluster_required = cephx
auth_service_required = cephx
cluster_network = fc00::/126
fsid = c83fa570-ef43-4d9a-aaf4-51aeed96aa15
mon_allow_pool_delete = true
mon_host = fc00::3 fc00::1 fc00::2
ms_bind_ipv4 = false
ms_bind_ipv6 = true
osd_pool_default_min_size = 2
osd_pool_default_size = 3
public_network = fc00::/126
auth_client_required = cephx
,auth_cluster_required = cephx
,auth_service_required = cephx
:- Xác định cách xác thực được yêu cầu cho client, cluster và service là thông qua giao thức xác thực CephX.
cluster_network = fc00::/126
:- Đặt địa chỉ mạng sử dụng cho giao tiếp nội bộ giữa các thành phần trong Ceph cluster. Trong trường hợp này, là
fc00::/126
.
- Đặt địa chỉ mạng sử dụng cho giao tiếp nội bộ giữa các thành phần trong Ceph cluster. Trong trường hợp này, là
fsid = c83fa570-ef43-4d9a-aaf4-51aeed96aa15
:- Là UUID định danh duy nhất của cluster. Được sử dụng để đảm bảo mỗi cluster có một định danh duy nhất.
mon_allow_pool_delete = true
:- Cho phép xoá pool trong quá trình runtime của Monitor. Nếu được đặt là
true
, bạn có thể xoá pool mà không cần restart các Monitor.
- Cho phép xoá pool trong quá trình runtime của Monitor. Nếu được đặt là
mon_host = fc00::3 fc00::1 fc00::2
:- Địa chỉ IPv6 của các Monitor trong cluster. Điều này là quan trọng để các thành phần khác biết cách kết nối với các Monitor.
ms_bind_ipv4 = false
,ms_bind_ipv6 = true
:- Điều chỉnh cách OSDs và MDSs liên kết với địa chỉ IP. Trong trường hợp này, OSDs liên kết với địa chỉ IPv6 (
ms_bind_ipv6 = true
) và không liên kết với IPv4 (ms_bind_ipv4 = false
).
- Điều chỉnh cách OSDs và MDSs liên kết với địa chỉ IP. Trong trường hợp này, OSDs liên kết với địa chỉ IPv6 (
Hai tham số
osd_pool_default_min_size
vàosd_pool_default_size
quy định cách mà dữ liệu được phân phối và đảm bảo sẽ có bao nhiêu bản sao của dữ liệu (replicas) được lưu trữ trong hệ thống.osd_pool_default_min_size
:- Mặc định: 2 (tức là cần ít nhất 2 OSD để lưu mỗi đối tượng).
- Mỗi đối tượng cần ít nhất 2 OSD để lưu trữ. Điều này không đồng nghĩa với việc mỗi đối tượng sẽ được lưu trữ trên 2 OSD. Thay vào đó, đối tượng sẽ có ít nhất 2 bản sao, và các bản sao này sẽ được phân phối trên ít nhất 2 OSD khác nhau để đảm bảo sự an toàn.
osd_pool_default_size
:- Mặc định: 3 (tức là mỗi đối tượng sẽ có 3 bản sao được lưu trữ).
- Mỗi đối tượng sẽ có tổng cộng 3 bản sao. Các bản sao này sẽ được phân phối trên ít nhất 3 OSD khác nhau. Có thể có một OSD chứa 2 bản sao, và hai OSD còn lại mỗi OSD chứa 1 bản sao khác nhau.
- Cấu hình này đảm bảo mỗi đối tượng sẽ có ít nhất 2 bản sao và mặc định có tổng cộng 3 bản sao, và chúng sẽ được phân phối trên ít nhất 2 hoặc 3 OSD khác nhau tùy thuộc vào mức độ sẵn sàng và đồng đều của hệ thống.
- Việc này giúp tăng tính sẵn sàng và độ tin cậy của hệ thống, vì nó cho phép hệ thống tiếp tục hoạt động ngay cả khi một số OSD hoặc thiết bị lưu trữ gặp sự cố. Tuy nhiên, cũng cần lưu ý rằng việc tăng số lượng bản sao cũng tăng nhu cầu về lưu trữ và băng thông mạng.
public_network = fc00::/126
:- Địa chỉ mạng sử dụng cho giao tiếp bên ngoài và giữa các thành phần trong Ceph cluster. Trong trường hợp này là
fc00::/126
.
- Địa chỉ mạng sử dụng cho giao tiếp bên ngoài và giữa các thành phần trong Ceph cluster. Trong trường hợp này là
3. Thiết lập Client ([client]
):
Chứa thông tin xác thực cho các client kết nối đến Ceph cluster. Bao gồm đường dẫn đến file keyring, chứa các thông tin xác thực cần thiết.
Ví dụ.
[client]
keyring = /etc/pve/priv/$cluster.$name.keyring
Trong phần cấu hình của [client]
:
keyring = /etc/pve/priv/$cluster.$name.keyring
:- Đây là đường dẫn đến file keyring cho client. Keyring chứa thông tin xác thực cần thiết để client có thể kết nối với Ceph cluster. Trong đường dẫn này,
$cluster
và$name
là các biến thay thế được sử dụng để tạo ra tên file keyring dựa trên tên của cluster và tên của client. $cluster
: Được thay thế bằng tên của cluster.$name
: Được thay thế bằng tên của client.
/etc/pve/priv/ceph_cluster.client1.keyring
.File keyring chứa thông tin mật khẩu và khóa xác thực cần thiết để client có thể truy cập và tương tác với Ceph cluster một cách an toàn và bảo mật. Điều này bao gồm các quyền truy cập và chữ ký để xác nhận danh tính của client khi truy cập dữ liệu trong cluster.- Đây là đường dẫn đến file keyring cho client. Keyring chứa thông tin xác thực cần thiết để client có thể kết nối với Ceph cluster. Trong đường dẫn này,
3. Thiết lập Monitors ([mon.*]
):
Mỗi Monitor trong cluster có một phần cấu hình riêng.
Bao gồm địa chỉ public của Monitor để các thành phần khác biết cách kết nối với nó.
Ví dụ:
[mon.pve1]
public_addr = fc00::1
[mon.pve2]
public_addr = fc00::2
[mon.pve3]
public_addr = fc00::3
Phần cấu hình cho các Monitor trong [mon.pve1]
, [mon.pve2]
và [mon.pve3]
xác định địa chỉ public của từng Monitor trong Ceph cluster. Dưới đây là giải thích chi tiết:
[mon.pve1]
:public_addr = fc00::1
:- Đây là địa chỉ IPv6 public của Monitor có tên
pve1
trong cluster. Điều này là địa chỉ mà các thành phần khác trong cluster sẽ sử dụng để kết nối đến Monitorpve1
. Các OSD và MDS cũng sẽ biết đến địa chỉ này để gửi bản sao và truy vấn trạng thái.
- Đây là địa chỉ IPv6 public của Monitor có tên
[mon.pve2]
:public_addr = fc00::2
:- Tương tự như trên, đây là địa chỉ IPv6 public của Monitor
pve2
.
- Tương tự như trên, đây là địa chỉ IPv6 public của Monitor
[mon.pve3]
:public_addr = fc00::3
:- Đây là địa chỉ IPv6 public của Monitor
pve3
.
- Đây là địa chỉ IPv6 public của Monitor
Thông qua việc xác định địa chỉ public của từng Monitor, Ceph cluster có thể duy trì sự nhất quán và tương tác hiệu quả giữa các thành phần khác nhau trong hệ thống. Các thành phần khác, như OSDs và MDSs sẽ sử dụng thông tin này để kết nối và truyền thông giữa các Monitor, đảm bảo rằng hệ thống hoạt động đúng cách và duy trì trạng thái của các OSD và dữ liệu trong cluster.
4. Cấu hình OSD và MDS (nếu có):
Các thiết lập cụ thể cho OSDs (Object Storage Daemons) và MDSs (Metadata Servers) có thể được đặt trong file này, nhưng chúng thường được quản lý thông qua cách cấu hình khác.
Dưới đây là một ví dụ về phần cấu hình OSD và MDS trong file ceph.conf
:
[osd.0]
host = osd-node-1
public_addr = 192.168.1.1
osd_journal_size = 1024
[osd.1]
host = osd-node-2
public_addr = 192.168.1.2
osd_journal_size = 1024
[osd.2]
host = osd-node-3
public_addr = 192.168.1.3
osd_journal_size = 1024
[mds.myfilesystem]
host = mds-node
Trong đó:
- OSDs:
- Trong ví dụ này, có ba OSD (osd.0, osd.1, osd.2).
- Mỗi OSD được định cấu hình trên một máy chủ khác nhau (
host
) và có địa chỉ public (public_addr
) tương ứng. osd_journal_size
là kích thước của journal của OSD, trong trường hợp này là 1024 MB.
- MDS:
- Nếu hệ thống có Metadata Server (MDS), bạn sẽ có phần cấu hình cho MDS. Trong ví dụ, có một MDS với tên là
myfilesystem
và nó được đặt trên máy chủmds-node
.
- Nếu hệ thống có Metadata Server (MDS), bạn sẽ có phần cấu hình cho MDS. Trong ví dụ, có một MDS với tên là
Lưu ý rằng cấu hình OSD và MDS có thể phụ thuộc vào cụm Ceph cluster của bạn và cách bạn triển khai nó. Các thông số cụ thể và chi tiết cấu hình sẽ phụ thuộc vào nhu cầu cụ thể của hệ thống và cấu hình hardware của bạn.
Kết Luận:
ceph.conf
là trái tim của cấu hình Ceph, chứa thông tin chi tiết về cách các thành phần tương tác với nhau.- Nó đảm bảo sự nhất quán giữa các thành phần của cluster, giúp định rõ cách dữ liệu được lưu trữ, đồng bộ và bảo mật.
- Cấu hình đúng đắn giúp đảm bảo hiệu suất và sẵn sàng cao cho hệ thống Ceph cluster.