|
| 1 | +# Triển khai Radosgw trên Ceph Cluster |
| 2 | +--- |
| 3 | +## Chuẩn bị |
| 4 | +Đọc các tài liệu |
| 5 | +Sử dụng lab 3 node ceph |
| 6 | + |
| 7 | +## Cài đặt |
| 8 | +### Phần 1: Thiết lập Ceph Radosgw |
| 9 | +#### Bước 1: Thiết lập tại ceph-admin (Node có quyền admin) |
| 10 | +> Thực hiện trên ceph-admin |
| 11 | +
|
| 12 | +Truy cập ceph-admin |
| 13 | +``` |
| 14 | +ssh root@ceph-admin |
| 15 | +``` |
| 16 | + |
| 17 | +Truy cập ceph cluster directory |
| 18 | +``` |
| 19 | +cd cluster/ |
| 20 | +``` |
| 21 | +#### Bước 2: Tạo rados gateway |
| 22 | +Tạo 2 rados gateway: |
| 23 | +- 1 trên ceph-node-1 |
| 24 | +- 1 trên ceph-node-2 |
| 25 | + |
| 26 | +``` |
| 27 | +ceph-deploy rgw create ceph-node-1 ceph-node-2 |
| 28 | +``` |
| 29 | + |
| 30 | +> API gateways chạy trên port 7480. |
| 31 | +
|
| 32 | +> Sử dụng 2 gateway trong trường hợp cần tới HA, load balancing |
| 33 | +
|
| 34 | +__Kết quả__ |
| 35 | + |
| 36 | +pic 1 |
| 37 | + |
| 38 | +### Phần 2: Tạo radosgw user |
| 39 | +#### Tổng quát |
| 40 | +Để có thể sử dụng Ceph object storage, ta cần tạo user truy cập Radosgw. User được định danh bằng access và secret key, sử dụng cho mục đích truy cập, thực hiện các hoạt động trên Ceph object storage. |
| 41 | + |
| 42 | +#### Bước 1: Truy cập node admin |
| 43 | +Truy cập node có quyền admin trong Ceph cluster |
| 44 | +``` |
| 45 | +ssh root@ceph-admin |
| 46 | +``` |
| 47 | +#### Bước 2: Tạo user |
| 48 | + |
| 49 | +``` |
| 50 | +[root@ceph-admin cluster]# radosgw-admin user create --uid=lacoski --display-name="my user lacoski" |
| 51 | +{ |
| 52 | + "user_id": "lacoski", |
| 53 | + "display_name": "my user lacoski", |
| 54 | + "email": "", |
| 55 | + "suspended": 0, |
| 56 | + "max_buckets": 1000, |
| 57 | + "auid": 0, |
| 58 | + "subusers": [], |
| 59 | + "keys": [ |
| 60 | + { |
| 61 | + "user": "lacoski", |
| 62 | + "access_key": "UDW5NH3UZ83CK1W0U2PW", |
| 63 | + "secret_key": "BjPiwiRRdTmgK50SjeDCmgVgfNWjfPgTIRTTr4Zq" |
| 64 | + } |
| 65 | + ], |
| 66 | + "swift_keys": [], |
| 67 | + "caps": [], |
| 68 | + "op_mask": "read, write, delete", |
| 69 | + "default_placement": "", |
| 70 | + "placement_tags": [], |
| 71 | + "bucket_quota": { |
| 72 | + "enabled": false, |
| 73 | + "max_size_kb": -1, |
| 74 | + "max_objects": -1 |
| 75 | + }, |
| 76 | + "user_quota": { |
| 77 | + "enabled": false, |
| 78 | + "max_size_kb": -1, |
| 79 | + "max_objects": -1 |
| 80 | + }, |
| 81 | + "temp_url_keys": [] |
| 82 | +} |
| 83 | +
|
| 84 | +``` |
| 85 | +#### Kiểm tra lại thông tin user |
| 86 | +``` |
| 87 | +[root@ceph-admin cluster]# radosgw-admin user info --uid=lacoski |
| 88 | +{ |
| 89 | + "user_id": "lacoski", |
| 90 | + "display_name": "my user lacoski", |
| 91 | + "email": "", |
| 92 | + "suspended": 0, |
| 93 | + "max_buckets": 1000, |
| 94 | + "auid": 0, |
| 95 | + "subusers": [], |
| 96 | + "keys": [ |
| 97 | + { |
| 98 | + "user": "lacoski", |
| 99 | + "access_key": "UDW5NH3UZ83CK1W0U2PW", |
| 100 | + "secret_key": "BjPiwiRRdTmgK50SjeDCmgVgfNWjfPgTIRTTr4Zq" |
| 101 | + } |
| 102 | + ], |
| 103 | + "swift_keys": [], |
| 104 | + "caps": [], |
| 105 | + "op_mask": "read, write, delete", |
| 106 | + "default_placement": "", |
| 107 | + "placement_tags": [], |
| 108 | + "bucket_quota": { |
| 109 | + "enabled": false, |
| 110 | + "max_size_kb": -1, |
| 111 | + "max_objects": -1 |
| 112 | + }, |
| 113 | + "user_quota": { |
| 114 | + "enabled": false, |
| 115 | + "max_size_kb": -1, |
| 116 | + "max_objects": -1 |
| 117 | + }, |
| 118 | + "temp_url_keys": [] |
| 119 | +} |
| 120 | +``` |
| 121 | +### Phần 3: Kiểm tra user cung cấp bởi Radosgw |
| 122 | +> Thực hiện trên ceph-admin (có thể trên ceph-client) |
| 123 | +
|
| 124 | +__Cài đặt gói__ |
| 125 | +``` |
| 126 | +yum -y install python-boto |
| 127 | +``` |
| 128 | + |
| 129 | +__Tạo python script "/root/cephs3test.py"__ |
| 130 | +``` |
| 131 | +[root@ceph-admin ~]# vim cephs3test.py3 |
| 132 | +
|
| 133 | +# content |
| 134 | +import boto |
| 135 | +import boto.s3.connection |
| 136 | +
|
| 137 | +access_key = 'UDW5NH3UZ83CK1W0U2PW' |
| 138 | +secret_key = 'BjPiwiRRdTmgK50SjeDCmgVgfNWjfPgTIRTTr4Zq' |
| 139 | +conn = boto.connect_s3( |
| 140 | + aws_access_key_id = access_key, |
| 141 | + aws_secret_access_key = secret_key, |
| 142 | + host = 'ceph-node-1', port = 7480,is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),) |
| 143 | +
|
| 144 | +bucket = conn.create_bucket('my-new-bucket') |
| 145 | +for bucket in conn.get_all_buckets(): |
| 146 | + print "{name} {created}".format(name = bucket.name,created = bucket.creation_date,) |
| 147 | +``` |
| 148 | +> Chú ý: 2 key access và secret |
| 149 | +
|
| 150 | +> Chú ý: Host = 'radosgw host' lựa chọn phù hợp |
| 151 | +
|
| 152 | +__Chạy script__ |
| 153 | +``` |
| 154 | +python /root/cephs3test.py |
| 155 | +``` |
| 156 | +__Kết quả (tương tự)__ |
| 157 | +``` |
| 158 | +my-new-bucket 2018-02-27T04:56:33.729Z |
| 159 | +lacoski 2018-02-27T04:48:46.508Z |
| 160 | +``` |
| 161 | + |
| 162 | +__Kiểm tra bằng node ceph-admin__ |
| 163 | +``` |
| 164 | +[root@ceph-admin ~]# radosgw-admin bucket list |
| 165 | +[ |
| 166 | + "my-new-bucket", |
| 167 | + "lacoski" |
| 168 | +] |
| 169 | +``` |
| 170 | + |
| 171 | +__Xóa bucket test__ |
| 172 | +``` |
| 173 | +radosgw-admin bucket rm my-new-bucket |
| 174 | +``` |
| 175 | + |
| 176 | +### Phần 3: Truy cập Ceph object storage |
| 177 | +Ở đây sẽ truy cập Ceph object thông qua S3 API tương thích. |
| 178 | + |
| 179 | +#### |
0 commit comments