Menambahkan layanan swift object storage pada openstack yang dideploy dengan kolla ansible pada postingan openstack for lab

Persiapan

openstack swift membutuhkan block storage untuk media penyimpanan.Tambahkan 1 hardisk pada tiap node untuk di khususkan sebagai storage swift.

Node NameIp AddressSwift VolumeDisk
openstack-controller10.79.0.1010GB/dev/sdb
openstack-compute0110.79.0.1110GB/dev/sdb
openstack-compute0210.79.0.1210GB/dev/sdb

jalankan pada semua node

1
2
3
4
5
6
7
# <WARNING ALL DATA ON DISK will be LOST!>
index=0
for disk in sdb; do
    sudo parted /dev/${disk} -s -- mklabel gpt mkpart KOLLA_SWIFT_DATA 1 -1
    sudo mkfs.xfs -f -L d${index} /dev/${disk}1
    (( index++ ))
done

Verifikasi block storage yang sudah di format

1
lsblk -f

Sebelum menjalankan layanan openstack swift, kita perlu membuat Object Ring, Account ring, dan Container Ring yang berfungsi untuk memberi tahu berbagai layanan Swift di mana data berada di kluster.

 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
nano ~/swift-rings.sh
#!/usr/bin/bash
STORAGE_NODES=(10.79.0.10 10.79.0.11 10.79.0.12)
KOLLA_SWIFT_BASE_IMAGE="kolla/centos-source-swift-base:4.0.0"

mkdir -p /etc/kolla/config/swift

# Object ring
docker run \
  --rm \
  -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
  $KOLLA_SWIFT_BASE_IMAGE \
  swift-ring-builder \
    /etc/kolla/config/swift/object.builder create 10 3 1

for node in ${STORAGE_NODES[@]}; do
    for i in {0..2}; do
      docker run \
        --rm \
        -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
        $KOLLA_SWIFT_BASE_IMAGE \
        swift-ring-builder \
          /etc/kolla/config/swift/object.builder add r1z1-${node}:6000/d${i} 1;
    done
done

# Account ring
docker run \
  --rm \
  -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
  $KOLLA_SWIFT_BASE_IMAGE \
  swift-ring-builder \
    /etc/kolla/config/swift/account.builder create 10 3 1

for node in ${STORAGE_NODES[@]}; do
    for i in {0..2}; do
      docker run \
        --rm \
        -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
        $KOLLA_SWIFT_BASE_IMAGE \
        swift-ring-builder \
          /etc/kolla/config/swift/account.builder add r1z1-${node}:6001/d${i} 1;
    done
done

# Container ring
docker run \
  --rm \
  -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
  $KOLLA_SWIFT_BASE_IMAGE \
  swift-ring-builder \
    /etc/kolla/config/swift/container.builder create 10 3 1

for node in ${STORAGE_NODES[@]}; do
    for i in {0..2}; do
      docker run \
        --rm \
        -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
        $KOLLA_SWIFT_BASE_IMAGE \
        swift-ring-builder \
          /etc/kolla/config/swift/container.builder add r1z1-${node}:6002/d${i} 1;
    done
done

for ring in object account container; do
  docker run \
    --rm \
    -v /etc/kolla/config/swift/:/etc/kolla/config/swift/ \
    $KOLLA_SWIFT_BASE_IMAGE \
    swift-ring-builder \
      /etc/kolla/config/swift/${ring}.builder rebalance;
done

tambahkan permission exec pada file ~/swift-rings.sh dan jalankan dengan user sudo

1
2
chown +x ~/swift-rings.sh
sudo ~/swift-rings.sh

Deploy openstack Swift

Aktivasi kolla python virtual environment

1
source ~/kolla/bin/activate

Lalu edit konfigurasi nano /etc/kolla/globals.yml

1
2
3
4
5
enable_swift: "yes"
enable_swift_s3api: "yes"
glance_backend_file: "yes"
glance_backend_swift: "no"
swift_devices_name: "KOLLA_SWIFT_DATA"

Selanjutnya deploy layanan swift dengan perintah:

1
kolla-ansible -i ~/multinode deploy

Setelah selesai semua deactivate kolla python virtual environment lalu install swift cli client

1
sudo apt instll -y python3-swiftclient

Verifikasi hasil pemasangan layanan openstack swift

Membuat bucket

1
2
3
4
5
6
openstack container create swiftbucket
+---------------------------------------+-------------+------------------------------------+
| account                               | container   | x-trans-id                         |
+---------------------------------------+-------------+------------------------------------+
| AUTH_0f7a4e704061426881f33429923f99a9 | swiftbucket | txb4b14cf2042646d5b9e1a-0063953f60 |
+---------------------------------------+-------------+------------------------------------+

Mengupload file object ke bucket

1
2
3
4
5
6
openstack object create swiftbucket ansible.log 
+-------------+-------------+----------------------------------+
| object      | container   | etag                             |
+-------------+-------------+----------------------------------+
| ansible.log | swiftbucket | a462184e9f31307bee7d91a48ad46d54 |
+-------------+-------------+----------------------------------+

Mendeskripsikan bucket

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
openstack container show swiftbucket          
+----------------+---------------------------------------+
| Field          | Value                                 |
+----------------+---------------------------------------+
| account        | AUTH_0f7a4e704061426881f33429923f99a9 |
| bytes_used     | 1012373                               |
| container      | swiftbucket                           |
| object_count   | 1                                     |
| storage_policy | Policy-0                              |
+----------------+---------------------------------------+

Sumber Referensi