Ubuntu 24.04
Sponsored Link

Ceph Squid : Ceph ऑब्जेक्ट गेटवे2024/05/03

 
Amazon S3 या OpenStack Swift संगत एपीआई के माध्यम से Ceph क्लस्टर स्टोरेज तक पहुंचने के लिए Ceph ऑब्जेक्ट गेटवे (RADOSGW) को सक्षम करें।
यह उदाहरण निम्न प्रकार से पर्यावरण पर आधारित है।
                                         |
        +--------------------+           |           +----------------------+
        |   [dlp.srv.world]  |10.0.0.30  |  10.0.0.31|    [www.srv.world]   |
        |     Ceph Client    +-----------+-----------+        RADOSGW       |
        |                    |           |           |                      |
        +--------------------+           |           +----------------------+
            +----------------------------+----------------------------+
            |                            |                            |
            |10.0.0.51                   |10.0.0.52                   |10.0.0.53 
+-----------+-----------+    +-----------+-----------+    +-----------+-----------+
|   [node01.srv.world]  |    |   [node02.srv.world]  |    |   [node03.srv.world]  |
|     Object Storage    +----+     Object Storage    +----+     Object Storage    |
|     Monitor Daemon    |    |                       |    |                       |
|     Manager Daemon    |    |                       |    |                       |
+-----------------------+    +-----------------------+    +-----------------------+

[1] आवश्यक फ़ाइलों को RADOSGW नोड में स्थानांतरित करें और इसे व्यवस्थापक नोड से कॉन्फ़िगर करें।
# सार्वजनिक कुंजी स्थानांतरित करें

root@node01:~#
ssh-copy-id www

# आवश्यक पैकेज स्थापित करें

root@node01:~#
ssh www "apt -y install radosgw"
root@node01:~#
vi /etc/ceph/ceph.conf
# अंत में जोड़ें
# client.rgw.(नोड नाम)
[client.rgw.www]
# नोड का आईपी पता
host = 10.0.0.31
# DNS नाम
rgw dns name = www.srv.world
keyring = /var/lib/ceph/radosgw/ceph-rgw.www/keyring
log file = /var/log/ceph/radosgw.gateway.log

# फ़ाइलें स्थानांतरित करें

root@node01:~#
scp /etc/ceph/ceph.conf www:/etc/ceph/

ceph.conf                                     100%  435   179.5KB/s   00:00
root@node01:~#
scp /etc/ceph/ceph.client.admin.keyring www:/etc/ceph/

ceph.client.admin.keyring                     100%  151    84.2KB/s   00:00

# RADOSGW कॉन्फ़िगर करें

root@node01:~# ssh www \
"mkdir -p /var/lib/ceph/radosgw/ceph-rgw.www; \
ceph auth get-or-create client.rgw.www osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/ceph-rgw.www/keyring; \
chown ceph:ceph /etc/ceph/ceph.*; \
chown -R ceph:ceph /var/lib/ceph/radosgw; \
systemctl enable --now ceph-radosgw@rgw.www"

# स्थिति सत्यापित करें
# यदि निम्नलिखित उत्तर दिखाए जाएं तो यह ठीक है

root@node01:~#
curl www.srv.world:7480

<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
[2] ऑब्जेक्ट गेटवे नोड पर, एक S3 संगत उपयोगकर्ता बनाएं जो ऑब्जेक्ट गेटवे को प्रमाणित कर सके।
# उदाहरण के लिए, [serverworld] उपयोगकर्ता बनाएं

root@www:~#
radosgw-admin user create --uid=serverworld --display-name="Server World" --email=admin@srv.world

{
    "user_id": "serverworld",
    "display_name": "Server World",
    "email": "admin@srv.world",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "serverworld",
            "access_key": "VY21Z3Q08GRPIK5G9607",
            "secret_key": "pV0jd8gxzA9LT9vHr762iehINEKXCpmrKRatiRAe"
        }
    ],
    "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": []
}

# उपयोगकर्ता सूची दिखाएँ

root@www:~#
radosgw-admin user list

[
    "serverworld"
]

root@www:~#
radosgw-admin user info --uid=serverworld

{
    "user_id": "serverworld",
    "display_name": "Server World",
    "email": "admin@srv.world",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "serverworld",
            "access_key": "VY21Z3Q08GRPIK5G9607",
            "secret_key": "pV0jd8gxzA9LT9vHr762iehINEKXCpmrKRatiRAe"
        }
.....
.....
[3] कंप्यूटर पर पायथन टेस्ट स्क्रिप्ट बनाने के लिए S3 इंटरफ़ेस के साथ एक्सेस को सत्यापित करें।
root@dlp:~#
apt -y install python3-boto3
root@dlp:~#
vi s3_test.py
import sys
import boto3
from botocore.config import Config

# उपयोगकर्ता की एक्सेस-कुंजी और गुप्त-कुंजी जिसे आपने [2] अनुभाग में जोड़ा है
session = boto3.session.Session(
    aws_access_key_id = 'VY21Z3Q08GRPIK5G9607',
    aws_secret_access_key = 'pV0jd8gxzA9LT9vHr762iehINEKXCpmrKRatiRAe'
)

# ऑब्जेक्ट गेटवे URL
s3client = session.client(
    's3',
    endpoint_url = 'http://10.0.0.31:7480',
    config = Config()
)

# [my-new-bucket] बनाएँ
bucket = s3client.create_bucket(Bucket = 'my-new-bucket')

# सूची Buckets
print(s3client.list_buckets())

# [my-new-bucket] हटाओ
s3client.delete_bucket(Bucket = 'my-new-bucket')

root@dlp:~#
python3 s3_test.py

{'ResponseMetadata': {'RequestId': 'tx00000dd8511122036da8f-0066333427-34139-default', 'HostId': '', 'HTTPStatusCode': 200, 'HTTPHeaders': {'transfer-encoding': 'chunked', 'x-amz-request-id': 'tx00000dd8511122036da8f-0066333427-34139-default', 'content-type': 'application/xml', 'server': 'Ceph Object Gateway (squid)', 'date': 'Thu, 02 May 2024 06:35:19 GMT', 'connection': 'Keep-Alive'}, 'RetryAttempts': 0}, 'Buckets': [{'Name': 'my-new-bucket', 'CreationDate': datetime.datetime(2024, 5, 2, 6, 35, 16, 831000, tzinfo=tzlocal())}], 'Owner': {'DisplayName': 'Server World', 'ID': 'serverworld'}}
मिलान सामग्री