티스토리 뷰

Storage/System&Tools

Object Gateway with radosgw

Jacob_baek 2020. 11. 29. 22:32

Ceph의 Object Gateway 기능을 사용하는 방법과 minio mc를 이용한 s3 방식으로 radosgw 연결하는 방법에 대하여 알아보도록 하자.

How to setup and use

먼저, radosgw를 사용하여 ceph의 object storage 서비스를 구성 및 사용하는 방법등을 알아보도록 하자.

radosgw 설정 및 배포

다음 링크를 참고하여 radosgw를 설정 및 배포하자.
아래 명령어들은 실제 수행했던 이력이니 참고바란다.

[cent@kolla-deploy ~]$ cat ceph-ansible/group_vars/rgws.yml
...
radosgw_interface: eth0
...
[cent@kolla-deploy ~]$ cat inventory/hosts.ini
...
[rgws]
kolla-ceph001
...
[cent@kolla-deploy ~]$ cd ceph-ansible
[cent@kolla-deploy ceph-ansible]$ ansible-playbook site.yml --limit=rgws

참고로 radosgw 생성후 다음과 같은 pool이 확인된다.

[root@kolla-deploy ~]# ceph osd pool ls
images
volumes
vms
backups
.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
default.rgw.buckets.index
default.rgw.buckets.data

실제 radosgw 설정 및 배포가 완료되면 다음과 같은 api 호출이 가능함을 확인할 수 있다.

8080 port는 기본 civetweb port로 ceph-ansible내에서 확인이 가능하다.

[root@kolla-deploy ~]# grep radosgw_civetweb_port ceph-ansible/roles/ceph-defaults/defaults/main.yml
radosgw_civetweb_port: 8080
radosgw_frontend_port: "{{ radosgw_civetweb_port if radosgw_frontend_type == 'civetweb' else '8080' }}"

dashboard enable

dashboard를 설정하여 object storage를 사용하기 위한 준비를 하자.

[root@kolla-ceph001 ~]# ceph mgr module ls | grep -A1 -B1 dashboard 
    "enabled_modules": [
        "dashboard",
        "prometheus"
[root@kolla-ceph001 ~]# ceph dashboard create-self-signed-cert
Self-signed certificate created
[root@kolla-ceph001 ~]# ceph dashboard ac-user-create admin password administrator
{"username": "admin", "lastUpdate": 1606727577, "name": null, "roles": ["administrator"], "password": "$2b$12$IdpOcPAUm5Z3TO8fq0b4m.M4mTOxbdhUGLG8KMoZf3tC4LrQRwwwG", "email": null}
[root@kolla-ceph001 ~]# ceph mgr services
{
    "dashboard": "https://kolla-ceph001:8443/",
    "prometheus": "http://kolla-ceph001:9283/"
}

위에 설정한 것과 같이 dashboard를 8443 포트로 접근해보자.

dashboard가 동작되는것은 확인되지만 안타깝게도 아직 아래와 같이 object gateway의 메뉴상에 보여지는것은 없다.

radosgw enable

이제 radosgw를 사용하기 위한 과정을 알아보자. 먼저 사용자를 생성하자.

[root@kolla-ceph001 ~]# radosgw-admin user create --uid=testuser --display-name="test user" --email=testuser@openlab.io
{
    "user_id": "testuser",
    "display_name": "test user",
    "email": "testuser@openlab.io",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "testuser",
            "access_key": "CONXORS2J1W4ND7AV7WW",
            "secret_key": "YzuaJeMRbmyWvhQPhDUsyNNDO6EYtbCAyinA4xt6"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

이제 user를 확인해보자.

[root@kolla-ceph001 ~]# radosgw-admin user list
[
    "testuser"
]

아래와 같이 access/secret key를 확인할수 있다.

[root@kolla-ceph001 ~]# radosgw-admin user info --uid=testuser
{
    "user_id": "testuser",
    "display_name": "test user",
    "email": "testuser@openlab.io",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "testuser",
            "access_key": "CONXORS2J1W4ND7AV7WW",
            "secret_key": "YzuaJeMRbmyWvhQPhDUsyNNDO6EYtbCAyinA4xt6"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

How to use radosgw with mc(Minio)

이제 AWS s3와 같은 object storage를 사용할 준비가 되었다.
이를 사용하기 위해 minio의 mc command를 사용해 보도록 하자.

참고로 mc command 사용법은 아래와 같다.

mc command를 다운로드 받아 사용이 가능한 환경이라 가정하고 아래와 같은 명령을 통해 ceph radosgw를 등록해보자.

[root@kolla-deploy ~]# mc config host add ceph http://172.16.100.130:8080 CONXORS2J1W4ND7AV7WW YzuaJeMRbmyWvhQPhDUsyNNDO6EYtbCAyinA4xt6
Added `ceph` successfully.

이후 아래와 같이 ceph config가 확인되어진다.

[root@kolla-deploy ~]# mc config host ls
ceph 
  URL       : http://172.16.100.130:8080
  AccessKey : CONXORS2J1W4ND7AV7WW
  SecretKey : YzuaJeMRbmyWvhQPhDUsyNNDO6EYtbCAyinA4xt6
  API       : s3v4
  Path      : auto

이제 bucket을 생성해보자.

[root@kolla-deploy ~]# mc mb ceph/testbucket
Bucket created successfully `ceph/testbucket`.
[root@kolla-deploy ~]# mc ls ceph/
[2020-11-30 09:49:04 UTC]     0B testbucket/

생성된 bucket에 파일을 복사해보자.

[root@kolla-deploy ~]# mc cp testfile.txt ceph/testbucket
testfile.txt:   12 B / 12 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 2 B/s 5s[root@kolla-deploy ~]# 

아래와 같이 복사한 파일이 확인된다.

[root@kolla-deploy ~]# mc ls ceph/testbucket
[2020-11-30 09:50:40 UTC]    12B testfile.txt

추가적인 radosgw 관련 명령어들은 다음 링크에서 확인하도록 하자.

dashboard를 이용한 object gateway 기능 사용하기

system user 생성하자.

[root@deploy kollaplay]#  radosgw-admin user create --uid=adminuser --display-name="admin user" --email=adminuser@openlab.io --system
{
    "user_id": "adminuser",
    "display_name": "admin user",
    "email": "adminuser@openlab.io",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "adminuser",
            "access_key": "3SDF4G75Z4A5BQ8P99L2",
            "secret_key": "7UOPqw1OSUzOlwpX4aauHrD2JAkwTYIaiW1xXBkf"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "system": "true",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

이제 생성된 system user에 맞는 access/secret key를 등록하고 host와 port를 설정하자.

[root@deploy kollaplay]# ceph dashboard set-rgw-api-access-key 3SDF4G75Z4A5BQ8P99L2
Option RGW_API_ACCESS_KEY updated
[root@deploy kollaplay]# ceph dashboard set-rgw-api-secret-key 7UOPqw1OSUzOlwpX4aauHrD2JAkwTYIaiW1xXBkf
Option RGW_API_SECRET_KEY updated
[root@deploy kollaplay]# ceph dashboard set-rgw-api-host 172.16.100.130
Option RGW_API_HOST updated
[root@deploy kollaplay]# ceph dashboard set-rgw-api-port 8080
Option RGW_API_PORT updated
[root@deploy kollaplay]# ceph dashboard set-rgw-api-ssl-verify false
Option RGW_API_SSL_VERIFY updated

참고된 명령들은 아래 Red Hat 문서에 있다.

이제 다시 dashboard의 object gateway로 접속해보면 다음과 같이 생성했던 adminuser와 testuser가 확인되어진다.

추가로 생성했던 bucket도 확인할 수 있다.

참고사이트

'Storage > System&Tools' 카테고리의 다른 글

Ceph benchmark Test  (0) 2020.10.13
Ceph-csi  (0) 2020.04.21
Ceph  (0) 2017.03.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함