Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 8

Assalamualaikum kawan. Pada post sebelumnya saya telah menuliskan bagaimana caranya konfigurasi cinder sebagai block storage. Nah kali ini saya akan menjabarkan untuk instalasi dan konfigurasi Swift sebagai Object Storage.

Saya jelaskan dulu jadi swift itu adalah salah satu komponen dari openstack yang digunakan sebagai object storage. Object storage dan Block Storage bekerja sama dengan menggunakan REST API dalam menjalankan tugasnya. Dan dalam proses kerja block storage membutuhkan keystone untuk mengurutkan prioritas dalam membuat sebuah bagian object storage.

Berikut merupakan komponen yang terdapat dalam swift :

  • Proxy servers (swift-proxy-server) :
    Menerima API dan melakukan permintaan HTTP raw dalam mengunggah files, modifikasi metadata dan juga membuat container. Untuk mempercepat kinerjanya proxy server bisa menggunakan memcache.
  • Account servers (swift-account-server) : Memanage akun yang didefinisikan pada object storage.
  • Container servers (swift-container-server) : Memanage mapping dari container ataupun folder yang berada didalam object storage.
  • Object servers (swift-object-server) : Memanage object seperti file dalam swift node.
  • Various periodic processes : Sebagai pembantu dalam melakukan tugas swift dalam jumlah data yang besar.
  • WSGI middleware : Mengurusi tentang segala hal dalam autentikasi dengan openstack identity (keystone)
  • swift client : Mengaktifkan user agar dapat mengeksekusi perintah berupda REST API didalam command-line. Harus user yang telah diijinkan mengeksekusi perintah seperti admin user, swift user ataupun reseller user.
  • swift-init : script yang dapat digunakan untuk menjalankan komponen dari swift secara serentak ataupun bisa digunakan dalam membuat sebuah file ring.
  • swift-recon :  tool dalam tampilan CLI yang dapat digunakan untuk mendapatkan informasi tentang cluster yang dibuat lengkap dengan telemetry nya.
  • swift-ring-builder : Dapat digunakan untuk membuat sebuah ring builder dan juga utilitas rebalance.

Nah, jika kalian ada yang baru membaca tulisan ini dan belum membaca dari awal serta mempraktekannya dari awal saya sarankan untuk membaca dari Part 1 hehe berikut link nya:

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 1

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 2

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 3

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 4

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 5

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 6

Instalasi & Konfigurasi Openstack Liberty di Ubuntu 14.04 LTS – Part 7

Langsung saja berikut langkah-langkah dalam mengkonfigurasi swift :

LAB 45 – Konfigurasi Host Pada VirtualBox

Bagi yang menggunakan virtualbox silahkan clone vm dari vm yang sudah jadi sebelumnya kemudian tambahkan harddisk baru.

Caranya :

  • Klik kanan pada VM swift kemudian klik setting A60
  • Kemudian pilih storage > add Hard diskA61
  • Klik create new disk dan pilih VDIA62A63
  • Kemudian pilih dynamically allocatedA64
  • Atur nama dan besaran kapasitas disk kemudian klik create A65
  • Ulangi proses menambahkan hard disk hingga kita mempunyai 2 disk. A66
  • Jika sudah selesai klik OK dan jalankan VM, kemudian atur hostname menjadi swift1 dan ubah IP serta hosts juga.A95

LAB 46 – Konfigurasi User, Role dan API endpoint Service Swift

Kita buat terlebih dahulu akses credential dan juga identity untuk swift :

  • Gunakan credential admin untuk membuat user swift :
    $ source admin-openrc.sh
  • Buatlah swift user dengan perintah berikut :
    $ openstack user create --domain default --password-prompt swift

    A48

  • Tambahkan role admin kepada user swift
    $ openstack role add --project service --user swift admin
  • Kemudian tambah service identity dan API endpoint
    $ openstack service create --name swift \
      --description "OpenStack Object Storage" object-store
    $ openstack endpoint create --region RegionOne \
      object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s
    $ openstack endpoint create --region RegionOne \
      object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s
    $ openstack endpoint create --region RegionOne \
      object-store admin http://controller:8080/v1

    A49A50

LAB 47 – Instalasi dan Konfigurasi Swift Pada Node Controller :

Selanjutnya kita install paket-paket yang dibutuhkan :

# apt-get install swift swift-proxy python-swiftclient \
  python-keystoneclient python-keystonemiddleware \
  memcached

Kemudian buat folder /etc/swift

# mkdir /etc/swift

Kemudian download file konfigurasi proxy server dari Repository Object Storage

# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/liberty

Setelah itu editlah file /etc/swift/proxy-server.conf dan ubah sesuai perintah dibawah ini :

  • Pada bagian [DEFAULT], kita atur port, user dan directory swift
    [DEFAULT]
    ...
    bind_port = 8080
    user = swift
    swift_dir = /etc/swift

    A51

  • Pada bagian [pipeline:main], kita aktifkan modul-modul yang digunakan untuk menjalankan swift proxy server ini
    [pipeline:main]
    pipeline = catch_errors gatekeeper healthcheck proxy-logging cache
    container_sync bulk ratelimit authtoken keystoneauth container-quotas
    account-quotas slo dlo versioned_writes proxy-logging proxy-server
  • Dan pada bagian [app:proxy-server], tambahkan perintah pembuatan akun secara otomatis
    [app:proxy-server]
    use = egg:swift#proxy
    ...
    account_autocreate = true

    A52

  • Pada bagian [filter:keystoneauth], kita tambahkan role yang dapat menjalankan swift. Kalo dipunya saya yaitu admin dan user
    [filter:keystoneauth]
    use = egg:swift#keystoneauth
    ...
    operator_roles = admin,user

    A53

  • Pada bagian [filter:authtoken], atur pula akses identity dari service object storage
    [filter:authtoken]
    paste.filter_factory = keystonemiddleware.auth_token:filter_factory
    ...
    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    auth_plugin = password
    project_domain_id = default
    user_domain_id = default
    project_name = service
    username = swift
    password = SWIFT_PASS
    delay_auth_decision = true

    Jangan lupa untuk mengganti SWIFT_PASS dengan password swift anda sendiri A54

  • Terakhir pada bagian [filter:cache], tambahkan memcached server dan jika telah selesai silahkan simpan dan keluar dari teks editor.
    [filter:cache]
    use = egg:swift#memcache
    ...
    memcache_servers = 127.0.0.1:11211

    A55

LAB 48 – Instalasi dan Konfigurasi Swift Pada Node Object Storage

Konfigurasi selanjutnya yaitu konfigurasi object storage pada node swift.

Kita install dulu paket utility nya :

# apt-get install xfsprogs rsync

Jika sudah kita format dulu disk /dev/sdb dan /dev/sdc yang baru kita tambahkan tadi dan akan kita format menjadi XFS

# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc

A67A68

Kita buat dulu directory untuk mount point disk kita tadi

# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc

Setelah itu edit file /etc/fstab dan tambahkan perintah seperti dibawah ini:

/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

B0

Jika sudah, silahkan simpan dan keluar selanjutnya kita mount disk nya :

# mount /srv/node/sdb
# mount /srv/node/sdc

Edit file /etc/rsyncd.conf dan tambahkan perintah dibawah ini :

uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = MANAGEMENT_IP_ADDRESS

[account]
max connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/account.lock

[container]
max connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/container.lock

[object]
max connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/object.lock

Ubahlah MANAGEMENT_IP_ADDRESS dengan ip address kalian masing-masing yang digunakan untuk management di node storage.

B1B2

Nah, selanjutnya kita edit file /etc/default/rsync agar nanti ketika node storage melakukan restart maka disk otomatis tersinkronisasi. Tambahkan perintah dibawah ini

RSYNC_ENABLE=true

B3

Silahkan simpan dan keluar. Kemudian kita jalankan service rsync

# service rsync start

Kita install paket-paket swift terlebih dahulu

# apt-get install swift swift-account swift-container swift-object

Setelah itu kita download file konfigurasi Account server, Container server dan Object server pada repository Object Storage :

# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/liberty
# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/liberty
# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/liberty

Kita edit file /etc/swift/account-server.conf dan lakukan pengubahan seperti dibawah ini :

  • Pada bagian [DEFAULT], aturlah bind IP address, bind port, user, directory konfigurasi,dan juga directory mount pointnya :
    [DEFAULT]
    ...
    bind_ip = MANAGEMENT_IP_ADDRESS
    bind_port = 6002
    user = swift
    swift_dir = /etc/swift
    devices = /srv/node
    mount_check = true

    Ubahlah MANAGEMENT_IP_ADDRESS dengan ip address kalian masing-masing yang digunakan untuk management di node storage.B7

  • Pada bagian [pipeline:main], aktifkan module yang dibutuhkan :
    [pipeline:main]
    pipeline = healthcheck recon account-server

    B8

  • Pada bagian [filter:recon], aturlah directory cache dari recon. Jika sudah selesai silahkan simpan dan keluar :
    [filter:recon]
    use = egg:swift#recon
    ...
    recon_cache_path = /var/cache/swift

    B9

Selanjutnya kita konfigurasikan file /etc/swift/container-server.conf, silahkan buka dan edit kemudian lakukan pengubahan perintah seperti dibawah ini :

  • Pada bagian [DEFAULT], aturlah bind IP address, bind port, user, directory konfigurasi,dan juga directory mount pointnya :
    [DEFAULT]
    ...
    bind_ip = MANAGEMENT_IP_ADDRESS
    bind_port = 6001
    user = swift
    swift_dir = /etc/swift
    devices = /srv/node
    mount_check = true

    Ubahlah MANAGEMENT_IP_ADDRESS dengan ip address kalian masing-masing yang digunakan untuk management di node storage.

    B10

  • Pada bagian [pipeline:main], aktifkan module yang dibutuhkan :
    [pipeline:main]
    pipeline = healthcheck recon container-server

    B11

  • Pada bagian [filter:recon], aturlah directory cache dari recon. Jika sudah selesai silahkan simpan dan keluar :
    [filter:recon]
    use = egg:swift#recon
    ...
    recon_cache_path = /var/cache/swift

    B12

Selanjutnya kita konfigurasikan file /etc/swift/object-server.conf, silahkan buka dan edit kemudian lakukan pengubahan perintah seperti dibawah ini :

  • Pada bagian [DEFAULT], aturlah bind IP address, bind port, user, directory konfigurasi,dan juga directory mount pointnya :
    [DEFAULT]
    ...
    bind_ip = MANAGEMENT_IP_ADDRESS
    bind_port = 6000
    user = swift
    swift_dir = /etc/swift
    devices = /srv/node
    mount_check = true

    Ubahlah MANAGEMENT_IP_ADDRESS dengan ip address kalian masing-masing yang digunakan untuk management di node storage.B13

  • Pada bagian [pipeline:main], aktifkan module yang dibutuhkan :
    [pipeline:main]
    pipeline = healthcheck recon object-server

    B14

  • Pada bagian [filter:recon], aturlah directory cache dari recon. Jika sudah selesai silahkan simpan dan keluar :
    [filter:recon]
    use = egg:swift#recon
    ...
    recon_cache_path = /var/cache/swift

    B15

Kemudian kita ubah kepemilikan directory mount point menjadi milik swift :

# chown -R swift:swift /srv/node

Terakhir kita buat directory untuk recon dan ubah pula kepemilikan directory tersebut :

# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift

Konfigurasi selanjutnya adalah Pembuatan dan pendistribusian initial ring. Lakukan konfigurasi ini pada node Controller :

LAB 48 – Membuat dan Mendistribusikan Initial Rings

Sebelum menjalankan service swift, kita harus membuat initial account, container dan juga object rings. Ring Builder nantinya akan membuat konfigurasi file untuk digunakan pada setiap node dalam menciptakan sebuah arsitektur storage.

Kita buat terlebih dahulu account ring untuk account server. Langkah pertama kita pindah dulu kedalam directory /etc/swift dan selanjutnya kita buat file base account.builder :

# cd /etc/swift
# swift-ring-builder account.builder create 10 3 1

Kita tambahkan setiap node storage yang akan digunakan kedalam akun ring yang tadi sudah kita buat dan konfigurasi sebelumnya pada node storage. Ketikkan perintah dibawah ini :

# swift-ring-builder account.builder \
  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_IP_ADDRESS --port 6002 \
  --device DEVICE_NAME --weight DEVICE_WEIGHT

Ubahlah STORAGE_NODE_MANAGEMENT_IP_ADDRESS dengan IP address yang digunakan storage node sebagai management dan ubah pula DEVICE_NAME dengan disk yang tadi sebelumnya telah kita buat. Contoh sebagai berikut :A107

 swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 10.0.0.40 --port 6002 --device sdb --weight 100

Ulangi perintah tersebut hingga semua disk sudah terkonfigurasi

# swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 10.0.0.40 --port 6002 --device sdb --weight 100
Device d0r1z1-10.0.0.40:6002R10.0.0.40:6002/sdb_"" with 100.0 weight got id 0
# swift-ring-builder account.builder add \
  --region 1 --zone 2 --ip 10.0.0.40 --port 6002 --device sdc --weight 100
Device d1r1z2-10.0.0.40:6002R10.0.0.40:6002/sdc_"" with 100.0 weight got id 1
# swift-ring-builder account.builder add \
  --region 1 --zone 3 --ip 10.0.0.41 --port 6002 --device sdb --weight 100
Device d2r1z3-10.0.0.41:6002R10.0.0.41:6002/sdb_"" with 100.0 weight got id 2
# swift-ring-builder account.builder add \
  --region 1 --zone 4 --ip 10.0.0.41 --port 6002 --device sdc --weight 100
Device d3r1z4-10.0.0.41:6002R10.0.0.41:6002/sdc_"" with 100.0 weight got id 3

Selanjutnya lakukan rebalance

# swift-ring-builder account.builder rebalance
Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

Verifikasi apakah disk sudah terkonfigurasi semua dengan perintah ini :

# swift-ring-builder account.builder

A108

LAB 49 – Membuat Container Ring

Selanjutnya kita buat file base container.builder :

# cd /etc/swift
# swift-ring-builder container.builder create 10 3 1

Kita tambahkan setiap node storage yang akan digunakan kedalam container ring yang tadi sudah kita buat dan konfigurasi sebelumnya pada node storage. Ketikkan perintah dibawah ini :A109

# swift-ring-builder container.builder \
  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_IP_ADDRESS --port 6002 \
  --device DEVICE_NAME --weight DEVICE_WEIGHT

Ubahlah STORAGE_NODE_MANAGEMENT_IP_ADDRESS dengan IP address yang digunakan storage node sebagai management dan ubah pula DEVICE_NAME dengan disk yang tadi sebelumnya telah kita buat. Contoh sebagai berikut :

 swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 10.0.0.40 --port 6002 --device sdb --weight 100

Ulangi perintah tersebut hingga semua disk sudah terkonfigurasi

# swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 10.0.0.40 --port 6002 --device sdb --weight 100
Device d0r1z1-10.0.0.40:6002R10.0.0.40:6002/sdb_"" with 100.0 weight got id 0
# swift-ring-builder container.builder add \
  --region 1 --zone 2 --ip 10.0.0.40 --port 6002 --device sdc --weight 100
Device d1r1z2-10.0.0.40:6002R10.0.0.40:6002/sdc_"" with 100.0 weight got id 1
# swift-ring-builder container.builder add \
  --region 1 --zone 3 --ip 10.0.0.41 --port 6002 --device sdb --weight 100
Device d2r1z3-10.0.0.41:6002R10.0.0.41:6002/sdb_"" with 100.0 weight got id 2
# swift-ring-builder container.builder add \
  --region 1 --zone 4 --ip 10.0.0.41 --port 6002 --device sdc --weight 100
Device d3r1z4-10.0.0.41:6002R10.0.0.41:6002/sdc_"" with 100.0 weight got id 3

Selanjutnya lakukan rebalance

# swift-ring-builder container.builder rebalance
Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

Verifikasi apakah disk sudah terkonfigurasi semua dengan perintah ini :

# swift-ring-builder container.builder

A110

LAB 50 – Membuat Object Ring

Selanjutnya kita buat file base object.builder :

# cd /etc/swift
# swift-ring-builder object.builder create 10 3 1

Kita tambahkan setiap node storage yang akan digunakan kedalam container ring yang tadi sudah kita buat dan konfigurasi sebelumnya pada node storage. Ketikkan perintah dibawah ini :A111

# swift-ring-builder object.builder \
  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_IP_ADDRESS --port 6002 \
  --device DEVICE_NAME --weight DEVICE_WEIGHT

Ubahlah STORAGE_NODE_MANAGEMENT_IP_ADDRESS dengan IP address yang digunakan storage node sebagai management dan ubah pula DEVICE_NAME dengan disk yang tadi sebelumnya telah kita buat. Contoh sebagai berikut :

 swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 10.0.0.40 --port 6002 --device sdb --weight 100

Ulangi perintah tersebut hingga semua disk sudah terkonfigurasi

# swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 10.0.0.40 --port 6002 --device sdb --weight 100
Device d0r1z1-10.0.0.40:6002R10.0.0.40:6002/sdb_"" with 100.0 weight got id 0
# swift-ring-builder object.builder add \
  --region 1 --zone 2 --ip 10.0.0.40 --port 6002 --device sdc --weight 100
Device d1r1z2-10.0.0.40:6002R10.0.0.40:6002/sdc_"" with 100.0 weight got id 1
# swift-ring-builder object.builder add \
  --region 1 --zone 3 --ip 10.0.0.41 --port 6002 --device sdb --weight 100
Device d2r1z3-10.0.0.41:6002R10.0.0.41:6002/sdb_"" with 100.0 weight got id 2
# swift-ring-builder object.builder add \
  --region 1 --zone 4 --ip 10.0.0.41 --port 6002 --device sdc --weight 100
Device d3r1z4-10.0.0.41:6002R10.0.0.41:6002/sdc_"" with 100.0 weight got id 3

Selanjutnya lakukan rebalance

# swift-ring-builder object.builder rebalance
Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

Verifikasi apakah disk sudah terkonfigurasi semua dengan perintah ini :

# swift-ring-builder object.builder

A112

Terakhir kita akan melakukan sedikit konfigurasi lagi pada node controller

Langkah awal kita ambil dulu file konfigurasi swift /etc/swift/swift.conf dari Repository Object Storage :

# curl -o /etc/swift/swift.conf \
  https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/liberty

Silahkan buka dan edit file /etc/swift/swift.conf dengan ketentuan dibawah ini :

  • Pada bagian [swift-hash], kita atur hash prefix dan suffix path pada node kita.
    [swift-hash]
    ...
    swift_hash_path_suffix = HASH_PATH_SUFFIX
    swift_hash_path_prefix = HASH_PATH_PREFIX

    Ubahlah bagian HASH_PATH_PREFIX dan HASH_PATH_SUFFIX dengan nilai yang unik dan berbeda.

    B18

  • Pada bagian [storage-policy:0] konfigurasikan default storage policy :
    [storage-policy:0]
    ...
    name = Policy-0
    default = yes

    B19

Kemudian silahkan copy kan file account.ring.gz, container.ring.gz, object.ring.gz, dan swift.conf kesemua node storage yang akan digunakan. Gunakan scp untuk mengcopy

# cd /etc/swift
# scp *.gz swift.conf root@10.0.0.40:/etc/swift

Nah, jangan lupa ubah 10.0.0.40 dengan IP management storage node yang akan digunakan.

A113

Setelah itu pada semua node kita ubah ownership pada folder /etc/swift :

# chown -R root:swift /etc/swift

Restart service swift proxy dan memcached :

# service memcached restart
# service swift-proxy restart

Pada semua node kita jalankan semua service object storage :

# swift-init all start

LAB 51 – Verifikasi Konfigurasi Swift

Kita lakukan verifikasi agar yakin konfigurasi kita telah berhasil :

  • Kita tambahkan autentikasi menggunakan API version 3 pada file admin-openrc.sh dan demo-openrc.sh:
    $ echo "export OS_AUTH_VERSION=3" \
      | tee -a admin-openrc.sh demo-openrc.sh
  • Setelah itu kita gunakan credentials demo :
    $ source demo-openrc.sh
  • Kita lihat service status pada swift :
    $ swift stat

    B20

  • Kita coba untuk upload file :
    $ swift upload container1 FILE

    Ubah sesuaikan dengan nama container dan juga file yang ingin diupload.

  • Kita coba lihat list container :
    $ swift list
  • Terakhir kita coba download file yang telah kita upload tadi :
    $ swift download container1 FILE

    B21

Jika hasil dari setiap proses diatas memunculkan output seperti diatas berarti konfigurasi telah berhasil dan swift berjalan normal.

Itulah konfigurasi kali ini, dan akan kita lanjutkan pada postingan berikutnya.

Terima kasih. Wassalamualaikum Wr. Wb.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s