Saturday, January 18, 2025

Sử dụng Object Gateway trong Ceph

-

1. Tổng quan.

Object Gateway trong Ceph là một phần mềm dùng để triển khai dịch vụ lưu trữ đối tượng (object storage) dựa trên giao thức S3 và Swift. Nó cung cấp khả năng lưu trữ và truy xuất các đối tượng lớn, như hình ảnh, video, tệp tin, dữ liệu không cấu trúc và dữ liệu trực tuyến.

Khi sử dụng Object Gateway trong Ceph, bạn có thể:

  • Lưu trữ đối tượng lớn: Object Gateway cho phép lưu trữ các đối tượng có kích thước lớn, vượt qua giới hạn kích thước tệp của hệ thống tập tin truyền thống.
  • Mở rộng linh hoạt: Object Gateway được thiết kế để có thể mở rộng ngang (scale horizontally), cho phép bạn mở rộng khả năng lưu trữ và xử lý bằng cách thêm nhiều nút (node) vào hệ thống.
  • Đảm bảo tính toàn vẹn và độ tin cậy: Object Gateway sử dụng Ceph RADOS để lưu trữ dữ liệu, đảm bảo tính toàn vẹn và độ tin cậy cao thông qua việc sao lưu và phân tán dữ liệu trên nhiều OSD.
  • Hỗ trợ giao thức S3 và Swift: Object Gateway hỗ trợ cả giao thức S3 (Amazon Simple Storage Service) và giao thức Swift (OpenStack Swift). Điều này cho phép bạn sử dụng các công cụ và ứng dụng hiện có tương thích với giao thức này để tương tác với Object Gateway.

Khi nào sử dụng Object Gateway:

  • Khi bạn cần triển khai một dịch vụ lưu trữ đối tượng linh hoạt, mở rộng và có khả năng chịu lỗi.
  • Khi bạn cần lưu trữ các đối tượng lớn, như dữ liệu đa phương tiện (hình ảnh, video) hoặc dữ liệu không cấu trúc.
  • Khi bạn muốn sử dụng giao thức S3 hoặc Swift để tương tác với dịch vụ lưu trữ đối tượng.
  • Khi bạn muốn tích hợp dịch vụ lưu trữ đối tượng vào hệ thống Ceph hiện có, để tận dụng khả năng phân tán và tính toàn vẹn dữ liệu của Ceph.

2. Thực hành.

Dưới đây là quy trình triển khai Object Gateway trong Ceph.

Cài đặt gói radosgw để cài đặt Ceph rados gateway.

apt -y install radosgw

Kiếm tra lại version của radosgw.

$ radosgw-admin --version
ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)

Copy file cấu hình ceph.conf và file keyring sang radosgw.

scp /etc/ceph/ceph.conf radosgw.hoanghd.com:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring radosgw.hoanghd.com:/etc/ceph/

Phần này hêm cấu hình cho RGW (Ceph rados gateway) vào tệp /etc/ceph/ceph.conf. Cấu hình bao gồm thông tin về máy chủ (host), cổng (port), frontend (rgw_frontends) và tên DNS (rgw_dns_name).
Trong cấu hình RADOS Gateway của Ceph, rgw_frontends là một tùy chọn để xác định giao diện mạng mà RADOS Gateway sử dụng để lắng nghe các yêu cầu HTTP. Trong trường hợp này, giá trị civetweb được cung cấp cho rgw_frontends để chỉ định sử dụng giao diện civetweb. Civetweb là một máy chủ HTTP nhỏ gọn và dễ dùng, nó được tích hợp sẵn trong RADOS Gateway của Ceph. Khi rgw_frontends được đặt thành civetweb, RADOS Gateway sẽ sử dụng civetweb làm giao diện mạng để lắng nghe các yêu cầu HTTP từ client. Civetweb hỗ trợ nhiều tính năng HTTP như xử lý các phương thức HTTP (GET, POST, PUT, DELETE), xử lý SSL/TLS, xác thực, và nhiều tính năng khác. Vì vậy, khi bạn đặt rgw_frontends thành civetweb, RADOS Gateway sẽ sử dụng civetweb làm giao diện mạng để lắng nghe các yêu cầu HTTP từ client.

[client.rgw.radosgw]
host = 192.168.13.201
rgw_frontends = civetweb port=8080
rgw_dns_name = radosgw.hoanghd.com

Phần thứ 2 cần chỉnh sửa trong file ceph.conf là keyring = /etc/pve/priv/$cluster.$name.keyring, lý do là tôi chạy Ceph của Proxmox nên đường dẫn tới keyring nó trỏ tới thư mục/etc/pve/priv/mà bên máy client không có thư mục này. Vì vậy tôi sẽ trỏ keyring theo đường dẫn tuyệt đối là keyring = /etc/ceph/ceph.client.admin.keyring.

Như vậy sau khi thay đổi thì ceph.conf sẽ có nội dung kiểu như vậy.

[global]
         auth_client_required = cephx
         auth_cluster_required = cephx
         auth_service_required = cephx
         cluster_network = 10.0.0.225/24
         fsid = 1d447334-e065-4745-b494-99bc76c7dff8
         mon_allow_pool_delete = true
         mon_host = 192.168.13.226 192.168.13.225 192.168.13.227
         ms_bind_ipv4 = true
         ms_bind_ipv6 = false
         osd_pool_default_min_size = 2
         osd_pool_default_size = 3
         public_network = 192.168.13.225/23

[client]
         keyring = /etc/ceph/ceph.client.admin.keyring

[mon.pve-node1]
         public_addr = 192.168.13.225

[mon.pve-node2]
         public_addr = 192.168.13.226

[mon.pve-node3]
         public_addr = 192.168.13.227

[client.rgw.radosgw]
        host = 192.168.13.201
        rgw_frontends = civetweb port=8080
        rgw_dns_name = radosgw.hoanghd.com

Tạo thư mục /var/lib/ceph/radosgw/client.rgw.radosgw để lưu trữ các tệp khóa cho khách hàng RGW.

mkdir -p /var/lib/ceph/radosgw/client.rgw.radosgw

Tạo khóa xác thực cho khách hàng RGW và lưu trữ trong tệp /var/lib/ceph/radosgw/client.rgw.radosgw/keyring.

Trường client.rgw.radosgw trong câu lệnh ceph auth get-or-create tương ứng với phần cấu hình [client.rgw.radosgw] trong file ceph.conf. Khi bạn chạy lệnh ceph auth get-or-create client.rgw.radosgw, nó sẽ tạo một khóa xác thực mới cho khách hàng RADOS Gateway với tên là client.rgw.radosgw.

Sau khi khóa xác thực được tạo, nó sẽ được lưu trong file keyring tại đường dẫn /var/lib/ceph/radosgw/client.rgw.radosgw/keyring. Trường client.rgw.radosgw trong lệnh ceph auth get-or-create và đường dẫn /var/lib/ceph/radosgw/client.rgw.radosgw/keyring cần được điều chỉnh để phù hợp với cấu hình chính xác trong file ceph.conf.

ceph auth get-or-create client.rgw.radosgw osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/client.rgw.radosgw/keyring

Hiển thị nội dung của tệp /var/lib/ceph/radosgw/pve-radosgw/keyring, chứa khóa xác thực cho khách hàng RGW.

$ cat /var/lib/ceph/radosgw/client.rgw.radosgw/keyring 
[client.rgw.radosgw]
        key = AQDyX39kUD/uHRAAkmpM1Rvtf9ZEXjhiBTBl0g==

Thay đổi chủ sở hữu của các tệp trong /etc/ceph//var/lib/ceph/radosgw/ thành người dùng ceph.

sudo chown -R ceph. /etc/ceph/ceph.*
sudo chown -R ceph. /var/lib/ceph/radosgw/*

Bật và khởi động lại dịch vụ Ceph rados gateway (ceph-radosgw) với tên rgw.radosgw. Lệnh cuối cùng sẽ hiển thị trạng thái hiện tại của dịch vụ.

systemctl enable --now ceph-radosgw@rgw.radosgw
systemctl start --now ceph-radosgw@rgw.radosgw
systemctl status --now ceph-radosgw@rgw.radosgw

Xác nhận lại radosgw đã chạy.

$ systemctl status --now ceph-radosgw@rgw.radosgw
● ceph-radosgw@rgw.radosgw.service - Ceph rados gateway
   Loaded: loaded (/lib/systemd/system/ceph-radosgw@.service; indirect; vendor preset: enabled)
   Active: active (running) since Thu 2023-06-08 06:06:29 UTC; 2ms ago
 Main PID: 380 ((radosgw))
    Tasks: 1
   CGroup: /system.slice/system-ceph\x2dradosgw.slice/ceph-radosgw@rgw.radosgw.service
           └─380 (radosgw)

Jun 08 06:06:29 localhost.localdomain systemd[1]: Started Ceph rados gateway.

Lưu ý: Tên dịch vụ ceph-radosgw được xác định dựa trên cấu hình trong file /etc/ceph/ceph.conf.

Trong file cấu hình Ceph (ceph.conf), bạn cần chỉ định tên dịch vụ RADOS Gateway bên trong phần [client.<tên_dịch_vụ>]. Ví dụ, nếu bạn đặt tên dịch vụ là rgw.radosgw trong file cấu hình, thì tên dịch vụ trong lệnh systemctl restart --now ceph-radosgw@rgw.radosgw sẽ là ceph-radosgw@rgw.radosgw.

Lưu ý rằng tên dịch vụ trong file cấu hình và trong lệnh systemctl restart phải khớp nhau để systemd có thể tìm thấy và quản lý dịch vụ.

Vì vậy, hãy đảm bảo rằng tên dịch vụ bạn đặt trong file cấu hình ceph.conf khớp với tên dịch vụ được sử dụng trong lệnh systemctl restart để khởi động lại RADOS Gateway thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories