No menu items!
No menu items!
More

    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.

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email