Tuesday, May 14, 2024

Kích hoạt và cấu hình truy cập API RESTful trong Ceph Object Storage

-

Giới thiệu.

Ceph Object Storage là một hệ thống lưu trữ phân tán, có khả năng mở rộng lớn và cung cấp hiệu suất cao. API RESTful cho phép các ứng dụng tương tác với Ceph Object Storage thông qua giao thức HTTP, giúp quản lý, tích hợp với các hệ thống khác và giám sát hệ thống.

Đoạn văn này hướng dẫn cách kích hoạt truy cập API RESTful trên Ceph Storage cluster và tạo người dùng cho bất kỳ tích hợp nào bạn cần. Trước khi tiếp tục, bạn cần đảm bảo rằng bạn có một Ceph Storage Cluster đang hoạt động.

Một số chức năng của Ceph REST API.

Một số chức năng của Ceph REST API, một giao diện lập trình ứng dụng cho phép bạn tương tác với Ceph Storage Cluster thông qua các yêu cầu HTTP. Dưới đây là một số chức năng cụ thể:

  • Hiển thị thông tin về Monitors và OSDs (Object Storage Daemons): Monitors và OSDs là hai thành phần quan trọng của một Ceph Storage Cluster. Monitors duy trì thông tin về trạng thái của cụm, trong khi OSDs lưu trữ dữ liệu thực tế.
  • Tạo hoặc chỉnh sửa pools: Pools là nhóm của OSDs. Chúng cho phép bạn tổ chức dữ liệu trong Ceph Storage Cluster theo cách mà bạn muốn.
  • Xem và bắt đầu các quá trình đã lên lịch trên OSDs: Điều này có thể bao gồm các tác vụ như bảo dưỡng hoặc sao lưu dữ liệu.
  • Hiển thị các tùy chọn cấu hình cho cụm, Monitor, và OSDs: Điều này cho phép bạn tùy chỉnh cách hoạt động của Ceph Storage Cluster.
  • Thực hiện nhiều hoạt động khác: Ceph REST API cung cấp nhiều chức năng khác nhau, cho phép bạn quản lý Ceph Storage Cluster của mình một cách hiệu quả.

Hướng dẫn chi tiết về cách kích hoạt và cấu hình API RESTful trong Ceph Object Storage.

Kích hoạt plugin API RESTful MGR.

Đầu tiên, bạn cần đăng nhập vào nút Ceph Cluster của mình và chạy một số lệnh để kích hoạt plugin.

shell> ceph mgr module enable restful
module 'restful' is already enabled

Sau đó, bạn có thể kiểm tra trạng thái của tất cả các module bằng cách sử dụng một lệnh khác.

shell> ceph -s
  cluster:
    id:     37a599e4-599e-4aef-ac0d-ab9e788de377
    health: HEALTH_OK
 
  services:
    mon: 5 daemons, quorum pve01,pve02,pve03,pve04,pvebk (age 9w)
    mgr: pve02(active, since 17h), standbys: pve04, pvebk, pve03, pve01
    osd: 32 osds: 32 up (since 9w), 32 in (since 10w)
 
  data:
    pools:   3 pools, 161 pgs
    objects: 853.25k objects, 3.2 TiB
    usage:   9.7 TiB used, 102 TiB / 112 TiB avail
    pgs:     161 active+clean
 
  io:
    client:   6.3 MiB/s rd, 872 KiB/s wr, 232 op/s rd, 88 op/s wr

Cấu hình chứng chỉ SSL cho API Endpoint.

Module sẽ chấp nhận các yêu cầu HTTPS trên cổng 8003 trên tất cả các địa chỉ IPv4 và IPv6 trên máy chủ nơi mgr đang chạy. Trước khi API Endpoint có sẵn, bạn sẽ cần cấu hình một chứng chỉ SSL. Nếu bạn không có chứng chỉ hợp lệ được ký bởi công ty của mình, bạn có thể tạo một chứng chỉ tự ký bằng cách sử dụng một lệnh cụ thể.

Cert SSL cho API RESTful của Ceph có thể được tạo tự động (tự ký) hoặc bạn có thể mua từ một tổ chức cung cấp chứng chỉ tin cậy.

Nếu bạn tạo một chứng chỉ tự ký, bạn có thể sử dụng lệnh sau:

shell> ceph restful create-self-signed-cert
Restarting RESTful API server...

Tuy nhiên, chứng chỉ tự ký thường chỉ được sử dụng cho mục đích kiểm tra hoặc phát triển vì chúng không được các trình duyệt web tin cậy mặc định.

Nếu bạn muốn chứng chỉ của mình được tin cậy bởi tất cả các trình duyệt và ứng dụng, bạn nên mua một chứng chỉ từ một tổ chức cung cấp chứng chỉ SSL tin cậy. Sau khi bạn nhận được chứng chỉ và khóa tương ứng, bạn có thể áp dụng chúng bằng cách sử dụng các lệnh sau:

ceph config-key set mgr/restful/crt -i restful.crt
ceph config-key set mgr/restful/key -i restful.key

Trong đó restful.crt và restful.key là tên của chứng chỉ và khóa mà bạn đã nhận được từ tổ chức cung cấp chứng chỉ.

Cách mở cổng 8003 trên Firewall nếu bạn sử dụng để đảm bảo rằng daemon ceph-mgr (quản lý Ceph) có thể nhận được các yêu cầu từ bên ngoài.

firewall-cmd --add-port=8003/tcp --permanent
firewall-cmd --reload

Lệnh firewall-cmd --add-port=8003/tcp --permanent được sử dụng để thêm cổng 8003 vào danh sách các cổng được phép trên tường lửa và cấu hình thay đổi này sẽ được giữ nguyên ngay cả sau khi hệ thống khởi động lại.

Lệnh firewall-cmd --reload được sử dụng để tải lại cấu hình tường lửa, áp dụng thay đổi vừa thực hiện.

Kiểm tra API REST đã mở thành công.

Bạn cũng có thể sử dụng lệnh curl để kiểm tra xem cổng 8003 API Endpoint có mở hay không.

shell> curl -k https://192.168.100.202:8003/
{
    "api_version": 1,
    "auth": "Use \"ceph restful create-key <key>\" to create a key pair, pass it as HTTP Basic auth to authenticate",
    "doc": "See /doc endpoint",
    "info": "Ceph Manager RESTful API server"
}

Cách tạo người dùng HTTP xác thực cơ bản HTTP để truy cập API.

Cách tạo một người dùng HTTP và tạo mật khẩu cho xác thực cơ bản HTTP để truy cập API.

Cú pháp lệnh là:

ceph restful create-key <username>

Ví dụ, để tạo một người dùng có tên là cephadmin, bạn sẽ chạy lệnh sau:

shell> ceph restful create-key cephadmin
bc256a0a-7e3b-4252-ac96-c90e9032ae34

Lệnh này sẽ trả về một khóa, ví dụ: 1c4dcb01-587b-4558-8878-1209b525de8c.

Bạn có thể kiểm tra tên người dùng và khóa bằng cách sử dụng lệnh sau:

shell> ceph restful list-keys
{
    "cephadmin": "bc256a0a-7e3b-4252-ac96-c90e9032ae34"
}

Lệnh này sẽ trả về một đối tượng JSON chứa tên người dùng và khóa tương ứng.

Sau khi thông tin xác thực được tạo, bạn có thể sử dụng curl để kiểm tra truy cập API. Cú pháp lệnh là:

https://<username>:<password-key>@<mgr-node>:<APIPort>/<REQUEST>

Trong đó <username> và <password-key> là tên người dùng và khóa bạn đã tạo, <mgr-node> là địa chỉ IP hoặc tên máy chủ của nút quản lý Ceph, <APIPort> là cổng API (thường là 8003), và <REQUEST> là yêu cầu API bạn muốn thực hiện.

Dưới đây là một ví dụ.

shell> curl -k https://cephadmin:bc256a0a-7e3b-4252-ac96-c90e9032ae34@192.168.100.202:8003/server
[
    {
        "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
        "hostname": "pve01",
        "services": [
            {
                "ceph_version": "ceph version 17.2.7 (2dd3854d5b35a35486e86e2616727168e244f470) quincy (stable)",
                "id": "pve01",
                "type": "mgr"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve01",
                "type": "mon"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "0",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "1",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "2",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "3",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "4",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "5",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "6",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "7",
                "type": "osd"
            }
        ]
    },
    {
        "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
        "hostname": "pve02",
        "services": [
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve02",
                "type": "mgr"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve02",
                "type": "mon"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "10",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "11",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "12",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "13",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "14",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "15",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "8",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "9",
                "type": "osd"
            }
        ]
    },
    {
        "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
        "hostname": "pve03",
        "services": [
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve03",
                "type": "mgr"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve03",
                "type": "mon"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "16",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "17",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "18",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "19",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "20",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "21",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "22",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "23",
                "type": "osd"
            }
        ]
    },
    {
        "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
        "hostname": "pve04",
        "services": [
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve04",
                "type": "mgr"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pve04",
                "type": "mon"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "24",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "25",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "26",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "27",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "28",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "29",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "30",
                "type": "osd"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "31",
                "type": "osd"
            }
        ]
    },
    {
        "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
        "hostname": "pvebk",
        "services": [
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pvebk",
                "type": "mgr"
            },
            {
                "ceph_version": "ceph version 17.2.7 (e303afc2e967a4705b40a7e5f76067c10eea0484) quincy (stable)",
                "id": "pvebk",
                "type": "mon"
            }
        ]
    }

Hoặc có thể dùng API để lấy thông tin OSD.

curl -k https://cephadmin:bc256a0a-7e3b-4252-ac96-c90e9032ae34@192.168.100.202:8003/osd

Tham khảo https://computingforgeeks.com/enable-and-configure-rest-api-access-in-ceph-object-storage/

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories