• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI SISTEM

N/A
N/A
Protected

Academic year: 2022

Membagikan "BAB IV IMPLEMENTASI SISTEM"

Copied!
25
0
0

Teks penuh

(1)

23

Universitas Kristen Petra

BAB IV

IMPLEMENTASI SISTEM

4.1 Penempatan Komputer di Laboratorium Komputer Multimedia OpenStack membutuhkan beberapa node dengan peran yang berbeda, diantaranya adalah controller node, compute node dan storage node. Sesuai dengan rancangan yang telah dijelaskan, maka jumlah controller node adalah satu.

Sedangkan untuk node-node dengan jumlah fleksibel seperti compute node dan storage node dirancang dengan jumlah minimal satu.

Komputer pada laboratorium yang digunakan dimulai dengan MM-14 hingga MM-20 dengan jumlah 6 buah komputer. Peran MM-14 adalah contoller node, dimana komputer ini adalah node kedua dalam network. Selanjutnya dengan jumlah 3 komputer adalah storage node, peran tersebut dijalankan oleh MM-15, MM-16 dan MM-17. Node terakhir adalah MM-07 sebagai proxy server node, dan satu komputer berperan sebagai client.

4.2 Network

Setiap node termasuk controller node membutuhkan 2 buah network yang terhubung sehingga selain dilakukan pengaturan, ditambahkan juga virtual interface. Pemberian IP address berurutan sesuai dengan nomor komputer di laboratorium. Interface utama diberikan IP address dimulai dengan 192.168.38.1 untuk komputer pertama yang merupakan pengaturan yang sudah ada di laboratorium. Sehingga pengaturan network pada MM-14 adalah sebagai berikut:

auto p2p1

interface p2p1 inet static address 192.168.11.2

netmask 255.255.255.0 gateway 192.168.11.1

dns-nameservers 203.189.120.4 203.189.120.7

(2)

24

Universitas Kristen Petra

4.3 Mendaftarkan Host

Untuk setiap node dapat mengenali node lain dalam network dan menggunakan network yang tepat maka setiap node harus di masukan dapat daftar IP address – Hostname pair dalam file /etc/hosts pada setiap node. Berikut adalah IP address – Hostname pair tersebut:

192.168.11.2 cloudserver 192.168.11.3 proxyserver 192.168.11.4 storage1 192.168.11.5 storage2 192.168.11.6 storage3

Untuk memastikan bahwa komunikasi antar node, dilakukan ping dari setiap node ke node lain. Ping akan menggunakan hostname bukan IP address, sehingga diketahui bahwa IP address – Hostname pair telah terbaca oleh sistem operasi. Sebuah node harus melakukan ping ke semua node termasuk dirinya sendiri. Berikut sebagai contoh perintah ping yang dijalankan:

# ping proxyserver -c 4

PING proxyserver (192.168.11.3) 56(84) bytes of data.

64 bytes from proxyserver (192.168.11.3): icmp_seq=1 ttl=64 time=0.028 ms

64 bytes from proxyserver (192.168.11.3): icmp_seq=2 ttl=64 time=0.030 ms

64 bytes from proxyserver (192.168.11.3): icmp_seq=3 ttl=64 time=0.030 ms

64 bytes from proxyserver (192.168.11.3): icmp_seq=4 ttl=64 time=0.033 ms

--- compute1 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.028/0.030/0.033/0.004 ms

Dengan melakukan ping dapat memastikan 2 hal. Hal pertama adalah bahwa management network dalam pengaturan sebelumnya telah berfungsi dan bahwa lookup atas hostname dalam pengaturan ini telah berfungsi.

(3)

25

Universitas Kristen Petra

4.4 Instalasi Openstack Packages

Instalasi ini dilakukan pada semua node. Sebelum instalasi sebaiknya dilakukan update dengan perintah “apt-get update”. Selanjutnya untuk melakukan instalasi Openstack Packages, perintah yang dijalankan adalah sebagai berikut:

# apt-get install software-properties-common

# add-apt-repository cloud-archive:pike

Jika telah dipastikan, maka dapat dijalankan perintah untuk mengunduh Openstack Packages. Perintah tersebut adalah sebagai berikut:

# apt-get update && apt-get dist-upgrade

Dengan perintah “apt-get dist-upgrade”, terdapat kemungkinan terdapat perubahan pada sistem operasi. Oleh karena itu, setelah perintah tersebut dijalankan, disarankan untuk melakukan reboot pada setiap node.

4.5 Network Time Protocol (NTP)

Pada pengaturan NTP, komputer yang berperan controller node diatur untuk bertindak sebagai server sedangkan node-node lainnya sebagai client.

Semua komputer yang berperan dalam node sistem perlu menginstal software NTP terlebih dahulu. Perintah yang dijalankan untuk menginstal NTP adalah:

# apt-get install ntp

Pengaturan pada komputer controller yang dilakukan adalah menambahkan dirinya sendiri sebagai penyedia waktu atau NTP server.

Selanjutnya untuk menerima koneksi dari node lain, nopeer dan noquery pada baris yang diawali dengan restrict dihapus. Berikut adalah file /etc/ntp.conf di node controller:

...

server 127.127.1.0 iburst fudge 127.127.1.0 stratum 10 ...

restrict -4 default kod notrap nomodify restrict -6 default kod notrap nomodify ...

(4)

26

Universitas Kristen Petra

Sedangkan pada node-node lain dilakukan pengaturan untuk menggunakan controller node sebagai server. Pada pengaturan pada node-node tersebut, semua server bawaan akan di-disable dan ditambahkan MM-03 sebagai server satu- satunya. Berikut adalah perubahan pada file /etc/ntp.conf di node-node tersebut:

...

# server 0.ubuntu.pool.ntp.org

# server 1.ubuntu.pool.ntp.org

# server 2.ubuntu.pool.ntp.org

# server 3.ubuntu.pool.ntp.org

# Use Ubuntu's ntp server as a fallback.

# server ntp.ubuntu.com server mm-14 iburst ...

Setelah proses konfigurasi selesai, maka perlu melakukan restart pada ntp yang bersangkutan dengan perintah sebagai berikut

# systemctl restart ntp

4.6 Database (MariaDB)

Dalam melakukan instalasi database, dibutuhkan juga database-client yang merupakan modul python yaitu “python-mysqldb”. MariaDB adalah binary drop dari MySQL dan hanya perlu diperlakukan selayaknya MySQL (MariaDB Corporation Ab, 2015).

Instalasi database dilakukan pada node yang berperan sebagai controller yaitu MM-03. Berikut perintah untuk instalasi MariaDB:

# apt-get install mariadb-server

Selanjutnya mengedit file /etc/mysql/mariadb.conf.d/50-server.cnf untuk memberikan akses dari node dalam management network dan mengaktifkan penggunaan format UTF-8. Berikut perubahan pada file tersebut:

...

[mysqld]

...

bind-address = 0.0.0.0

(5)

27

Universitas Kristen Petra ...

character-set-server = utf8

# collation-server = utf8mb4_general_ci...

Setelah instalasi, MariaDB perlu di-restart agar perubahan pengaturan berdampak. Berikut perintah yang dijalankan untuk melakukan restart:

# systemctl restart mysql

Bila diperlukan MariaDB maka pengamanan database dapat dilakukan dengan perintah “mysql_secure_installation”. Penggantian password untuk root dilakukan melalui perintah tersebut. Dalam perintah tersebut, seluruh pertanyaan keamanan yang ada dapat diisi sesuai kebutuhan. Sesuai standar, maka masing- masing pertanyaan dijawab “y” untuk menyediakan secure yang baik.

Sesuai dengan komponen OpenStack yang dirancang maka database yang perlu dibuat adalah keystone, glance, nova dan cinder. Untuk mengakses database service dapat menggunakan perintah berikut:

# mysql –u root –p

MariaDB [(none)]> select user,host,password from mysql.user;

+---+---+---+

| user | host | password | +---+---+---+

| root | localhost | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | +---+---+---+

1 row in set (0.00 sec)

# show database list

MariaDB [(none)]> show databases;

+---+

| Database | +---+

| information_schema |

| mysql |

| performance_schema | +---+

3 rows in set (0.00 sec)

4.7 Messaging Server (RabbitMQ)

Instalasi RabbitMQ dilakukan di controller node, dalam perancangan ini node MM-03. Berikut perintah untuk menginstal RabbitMQ:

# apt-get install rabbitmq-server memcached python-pymysql

(6)

28

Universitas Kristen Petra

Setelah instalasi selesai, perlu dilakukan pengubahan password pada RabbitMQ. Pada awalnya RabbitMQ sudah memiliki pengaturan user dan password berupa “guest”. Password tersebut akan diubah menjadi “admin”

dengan perintah berikut:

# rabbitmqctl add_user openstack password

Setelah mengkonfigurasi password pada rabbitmqctl, perlu dilakukan restart dengan menggunakan perintah berikut

# systemctl restart rabbitmq-server

Selain rabbitmqctl, perlu dilakukan konfigurasi pada fitur memcached dengan mengakses file /etc/memcached.conf. Pada file ini lakukan perubahan sebagai berikut

# Memcached default config file ....

# -l 127.0.0.1 -l 0.0.0.0

Setelah berhasil mengganti file tersebut, lakukan restart pada memcached yang ada untuk mengimplementasikan perubahan yang ada

# systemctl restart memcached

4.8 Identity Service (Keystone)

Identity service diinstal pada controller node. Untuk instalasi keystone, perintah yang dijalankan adalah:

# apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi python-oauth2client

Selanjutnya, melakukan adding keystone ke dalam database yang telah diinstal sebelumnya. Untuk membuat database tersebut maka diperlukan query perintah SQL. Perintah-perintah tersebut adalah sebagai berikut:

MariaDB [(none)]> CREATE DATABASE keystone;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'admin';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'admin';

(7)

29

Universitas Kristen Petra

Setelah selesai, kemudian dilanjutkan dengan melakukan konfigurasi keystone dengan mengedit file /etc/keystone/keystone.conf. Berikut perubahan yang dilakukan pada file tersebut:

[DEFAULT]

...

admin_token = admintoken ...

[database]

...

connection = mysql+pymysql://keystone:[email protected]/keystone ...

[Memcached]

...

memcache_servers = 192.168.11.3:11211 ...

[token]

...

provider = fernet driver = memcache ...

Selanjutnya adalah mengisi database “keystone”. Untuk melakukan ini, dijalankan perintah berikut:

# su -s /bin/sh -c "keystone-manage db_sync"

# keystone-manage fernet_setup --keystone-user keystone –- keystone-group keystone

# keystone-manage credential_setup --keystone-user keystone -- keystone-group keystone

# keystone-manage bootstrap --bootstrap-password admin \ --bootstrap-admin-url http://$cloudserver:35357/v3/ \ --bootstrap-internal-url http://$cloudserver:5000/v3/ \ --bootstrap-public-url http://$cloudserver:5000/v3/ \

(8)

30

Universitas Kristen Petra --bootstrap-region-id RegionOne

Setelah database telah terbentuk, maka service keystone perlu di-restart untuk melakukan apply perubahan yang dilakukan.

# service keystone restart

Setelah melakukan installasi apache2 melalui command apt-get install apache2 di langkah sebelumnya, maka user perlu melakukan perubahan di file apache2.conf yang ada. File tersebut dapat ditemukan pada /etc/apache2/apache2.conf. Penambahan yang dilakukan adalah

# This is the main Apache server configuration file ...

ServerName cloudserver

Untuk menghapus database yang terdapat pada sistem lama tersebut, maka perlu dijalankan perintah berikut

# rm -f /var/lib/keystone/keystone.db

Setelah melakukan seluruh konfigurasi perubahan pada apache2, maka perlu dilakukan restart untuk mengimplementasikan ke dalam sistem

# systemctl restart apache2

Sebuah controller node membutuhan dasar dari environment variables untuk menunjang sistem yang berjalan. Beberapa environment variables dikonfigurasi pada ~/keystonerc dengan menuliskan beberapa hal berikut

export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin

export OS_USERNAME=admin export OS_PASSWORD=admin

export OS_AUTH_URL=http://192.168.11.2:35357/v3 export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2 export PS1='\u@\h \W(keystone)\$'

Untuk mengatur hak akses atau permission terhadap direktori keystonerc, maka digunakan perintah chmod sebagai berikut

# chmod 600 ~/keystonerc

(9)

31

Universitas Kristen Petra

Setelah berhasil melakukan perintah chmod, gunakan direktori keystonerc sebagai source untuk konfigurasi. Source tersebut nantinya juga perlu dimasukkan dalam profile pada sistem. Adapun perintah yang digunakan adalah

# source ~/keystonerc

~(keystone)# echo "source ~/keystonerc" >> ~/.bash_profile

Setelah berhasil masuk kedalam source, langkah selanjutnya adalah membuat project dari keystone tersebut. Adapun perintah untuk membuat project tersebut sebagai berikut

~(keystone)# openstack project create --domain default \ --description "Service Project" service

Command atau perintah project yang berhasil dijalankan akan menghasilkan output list tabel yang berisikan

+---+---+

| Field | Value | +---+---+

| description | Service Project |

| domain_id | default |

| enabled | True |

| id | 721d4a288cde4d3cb80e43d4b016d5bc |

| is_domain | False |

| name | service |

| parent_id | default | +---+---+

Untuk memastikan sebuah project berhasil ditambahkan dalam service keystone, dapat dilakukan pengecekan dengan menggunakan command project list. Perintah tersebut menampilkan list tabel berisi project yang telah dibuat dalam service yang ada.

~(keystone)# openstack project list

+---+---+

| ID | Name | +---+---+

| 721d4a288cde4d3cb80e43d4b016d5bc | service |

| 859896d22f074d16bc67fe7eef6f36db | admin | +---+---+

4.9 Swift Controller Node

Sebuah controller node memiliki beberapa komponen untuk dikonfigurasi, meliputi keystone, MariaDB, memcached, RabbitMQ, serta httpd (apache2).

(10)

32

Universitas Kristen Petra

Langkah selanjutnya adalah melakukan konfigurasi swift service untuk controller node. Dalam hal ini controller node hanya menyimpan user, role, serta endpoint.

Pertama yang dilakukan adalah konfigurasi user untuk swift service berikut

~(keystone)# openstack user create --domain default –project \ service --password servicepassword swift

Apabila create user berhasil, maka menampilkan output berikut

+---+---+

| Field | Value | +---+---+

| default_project_id | 4df8606b39ed49ce9a79bbf28e438f0e |

| domain_id | default |

| enabled | True |

| id | 0ec9824eaa5c4cc9883d7112343e35ff |

| name | swift |

| options | {} |

| password_expires_at | None | +---+---+

Setelah proses membuat user berhasil dijalankan, langkah selanjutnya adalah membuat role untuk user tertentu. Role ini sendiri merupakan tindakan atau akses yang bisa dilakukan oleh user tersebut. Perintah dalam membuat Role untuk user adalah

~(keystone)# openstack role add --project service --user swift \ admin

Perintah role yang dijalankan tidak memberikan hasil output apapun.

Berikutnya adalah membuat service untuk diidentifikasi dalam keystone. Service ini sendiri berupa Object Storage, sehingga dijalankan perintah berikut

~(keystone)# openstack service create --name swift --description \

"OpenStack Object Storage" object-store

Apabila perintah generate service berhasil dijalankan dalam Keystone, maka output yang dihasilkan seperti berikut

+---+---+

| Field | Value | +---+---+

| description | OpenStack Object Storage |

| enabled | True |

| id | 78ad39c883cc408baf6fe67e6c7c32df |

| name | swift |

| type | object-store | +---+---+

(11)

33

Universitas Kristen Petra

Setelah proses generate service OpenStack berhasil, langkah ketiga dan terakhir adalah membuat endpoint dari service yang ada. Endpoint ini bertujuan sebagai URL bagi user agar dapat mengakses layanan OpenStack yang tersedia.

Ada tiga macam endpoint yang diinstallasi dalam keystone¸ yakni public, internal, serta admin. Untuk public endpoint dapat dikonfigurasi dengan perintah

~(keystone)# openstack endpoint create --region RegionOne object- store public http://192.168.11.2:8080/v1/AUTH_%\(tenant_id\)s

Apabila perintah public endpoint berhasil dijalankan dalam Keystone, maka output yang dihasilkan seperti berikut

+---+---+

| Field | Value | +---+---+

| enabled | True |

| id | 804a8511ebbd4121bbf39c20e4207758 |

| interface | public |

| region | RegionOne |

| region_id | RegionOne |

| service_id | 78ad39c883cc408baf6fe67e6c7c32df |

| service_name | swift |

| service_type | object-store |

| url | http://192.168.11.2:8080/v1/AUTH_%(tenant_id)s | +---+---+

Yang kedua adalah melakukan generate pada endpoint secara internal, agar dapat mengakses layanan yang tersedia. Masih menggunakan IP Address dan port yang sama, perintah yang digunakan adalah

~(keystone)# openstack endpoint create --region RegionOne object- store internal http://192.168.11.2:8080/v1/AUTH_%\(tenant_id\)s

Apabila perintah internal endpoint berhasil dijalankan dalam Keystone, maka output yang dihasilkan seperti berikut

+---+---+

| Field | Value | +---+---+

| enabled | True |

| id | 804a8511ebbd4121bbf39c20e4207758 |

| interface | public |

| region | RegionOne |

| region_id | RegionOne |

| service_id | 78ad39c883cc408baf6fe67e6c7c32df |

| service_name | swift |

| service_type | object-store |

| url | http://192.168.11.2:8080/v1/AUTH_%(tenant_id)s | +---+---+

(12)

34

Universitas Kristen Petra

Yang terakhir adalah generate endpoint untuk URL yang digunakan oleh admin dalam menjalankan layanan OpenStack. Dalam IP Address milik controller node serta port yang sama, perintah yang dijalankan adalah

~(keystone)# openstack endpoint create --region RegionOne object- store admin http://192.168.11.2:8080/v1

Apabila perintah admin endpoint berhasil dijalankan dalam Keystone, maka output yang dihasilkan seperti berikut

+---+---+

| Field | Value | +---+---+

| enabled | True |

| id | 8cd827e20fc147be93af79c0f10ff292 |

| interface | admin |

| region | RegionOne |

| region_id | RegionOne |

| service_id | 78ad39c883cc408baf6fe67e6c7c32df |

| service_name | swift |

| service_type | object-store |

| url | http://192.168.11.2:8080/v1 | +---+---+

Dalam hal ini, keystone yang dibuat digunakan untuk menunjang object storage service. Dalam hal ini, perlu dibuat sebuah project untuk agar keystone dapat menerima authentikasi service tersebut. Project yang ada diberi nama swiftservice dengan deskripsi “Swift Service Project”. Command yang diberikan untuk membuat project ini adalah

# openstack project create --domain default --description "Swift Service Project" swiftservice

Proses create project yang berhasil dibuat memberikan output dengan list sebagai berikut

+---+---+

| Field | Value | +---+---+

| description | Swift Service Project |

| domain_id | default |

| enabled | True |

| id | 0138d77a5ca0495c91a7a1af6972553d |

| is_domain | False |

| name | swiftservice |

| parent_id | default | +---+---+

Setelah membuat project untuk object storage service, selanjutnya adalah membuat role untuk mengidentifikasi peran masing-masing user saat

(13)

35

Universitas Kristen Petra

menggunakan service tersebut. Role yang ada dibuat dengan nama SwiftOperator, dibuat dengan perintah

# openstack role create SwiftOperator

Proses create role yang berhasil dibuat memberikan output dengan list sebagai berikut

+---+---+

| Field | Value | +---+---+

| domain_id | None |

| id | 35555129be65420480647aa6ae7c90c6 |

| name | SwiftOperator | +---+---+

Setelah membuat role identifikasi dalam keystone, selanjutnya adalah membuat user untuk mengidentifikasi pihak yang dapat mengakses service dalam sistem. User yang dibuat menggunakan nama user01 dengan password admin.

Sedangkan project yang dipilih adalah swiftservice, yang telah dibuat sebelumnya.

Komponen ini dibuat dengan perintah

# openstack user create --domain default --project swiftservice -- password admin user01

Proses create user yang berhasil dibuat memberikan output dengan list sebagai berikut

+---+---+

| Field | Value | +---+---+

| default_project_id | 0138d77a5ca0495c91a7a1af6972553d |

| domain_id | default |

| enabled | True |

| id | fe7ebfa946f74b27b50f26753f74140b |

| name | user01 |

| options | {} |

| password_expires_at | None | +---+---+

Apabila seluruh proses role, project, serta user berhasil dibuat, langkah selanjutnya adalah menjalankan role yang telah dibuat beserta project yang digunakan serta user yang menjalankan. Perintah yang digunakan adalah

# openstack role add --project swiftservice --user user01 SwiftOperator

(14)

36

Universitas Kristen Petra

4.10 Swift Proxy-Server Node

Dalam swift proxy-server node, melakukan peran dalam inisialisasi proses OpenStack Swift. Proses yang ada di dalamnya disebut sebagai Ring. Di node inilah yang mengatur berbagai proses komunikasi antar storage node, proses transfer maupun replikasi data. Komponen yang diinstall dalam proxy-server node ini adalah swift proxy. Langkah awal adalah instalasi beberapa komponen dengan perintah sebagai berikut

# apt-get -y install swift swift-proxy python-swiftclient python- keystonemiddleware python-memcache

Apabila proses installasi telah selesai dijalankan, maka perlu membuat sebuah direktori yang menyimpan berbagai service serta konfigurasi dari swift tersebut. Direktori yang digunakan adalah /etc/ dengan menggunakan perintah

# mkdir /etc/swift

Selanjutnya pada direktori /etc/swift, dibuat suatu file proxy-server.conf dengan menggunakan perintah vim /etc/swift/proxy-server.conf. Isi dari file ini adalah sebagai berikut

# create new [DEFAULT]

bind_ip = 0.0.0.0 bind_port = 8080 user = swift

[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

[app:proxy-server]

use = egg:swift#proxy

allow_account_management = true account_autocreate = true

# Keystone auth info [filter:authtoken]

paste.filter_factory =

keystonemiddleware.auth_token:filter_factory auth_uri = http://192.168.11.2:5000

auth_url = http://192.168.11.2:35357 memcached_servers = 192.168.11.2:11211 auth_type = password

project_domain_name = default user_domain_name = default project_name = service

(15)

37

Universitas Kristen Petra username = swift

password = admin

delay_auth_decision = true

[filter:keystoneauth]

use = egg:swift#keystoneauth

operator_roles = admin,SwiftOperator

[filter:healthcheck]

use = egg:swift#healthcheck

[filter:cache]

use = egg:swift#memcache

memcache_servers = 192.168.11.2:11211

[filter:ratelimit]

use = egg:swift#ratelimit

[filter:domain_remap]

use = egg:swift#domain_remap

[filter:catch_errors]

use = egg:swift#catch_errors

[filter:cname_lookup]

use = egg:swift#cname_lookup

[filter:staticweb]

use = egg:swift#staticweb

[filter:tempurl]

use = egg:swift#tempurl

[filter:formpost]

use = egg:swift#formpost

[filter:name_check]

use = egg:swift#name_check

[filter:list-endpoints]

use = egg:swift#list_endpoints

[filter:proxy-logging]

use = egg:swift#proxy_logging

[filter:bulk]

use = egg:swift#bulk

[filter:slo]

use = egg:swift#slo

[filter:dlo]

use = egg:swift#dlo

[filter:container-quotas]

use = egg:swift#container_quotas

(16)

38

Universitas Kristen Petra [filter:account-quotas]

use = egg:swift#account_quotas

[filter:gatekeeper]

use = egg:swift#gatekeeper

[filter:container_sync]

use = egg:swift#container_sync

[filter:xprofile]

use = egg:swift#xprofile

[filter:versioned_writes]

use = egg:swift#versioned_writes

Untuk keystone auth info serta memcache yang terdapat pada proxy- server.conf, merujuk pada keystone dan memcache yang ada di controller node, sehingga IP Address yang digunakan adalah milik controller node, yakni 192.168.11.2, dan terhubung dengan proxy server node.

Apabila konfigurasi proxy-server.conf selesai, di direktori yang sama tambahkan sebuah file dengan nama swift.conf. Isi dari file tersebut adalah

[swift-hash]

swift_hash_path_suffix = swift_shared_path swift_hash_path_prefix = swift_shared_path

Dalam hal ini, swift_shared_path yang tercantum seperti diatas perlu diganti dengan kode hexadecimal. Kode tersebut dapat kita tentukan sendiri isinya atau dengan menggunakan generate nilai random melalui perintah berikut

# openssl rand –hex 10

Dengan ditambahkannya dua file dalam direktori swift, perlu dilakukan pergantian pemilik dari direktori /etc/swift/ agar dapat digunakan sepenuhnya dengan hak akses swift. Perintah yang diberikan adalah

# chown -R swift. /etc/swift

Setelah melakukan konfigurasi pada direktori swift, langkah selanjutnya adalah mengatur proses pengelolaan storage yang ada dalam sistem swift.

Pengelolaan serta proses dalam storage menggunakan suatu bentuk komunikasi yang disebut dengan Ring dalam OpenStack Swift. Konfigurasi Ring dilakukan dengan menjalankan command swift-ring-builder. Langkah pertama adalah dengan menginisialisasi terlebih dahulu melalui perintah sebagai berikut

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

(17)

39

Universitas Kristen Petra

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

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

Sebuah service dalam OpenStack Swift terdiri dari tiga komponen, yakni account, container, serta object. Setelah dibuat dalam sistem Ring yang ada, selanjutnya melakukan inisialisasi IP Address serta port yang ada untuk masing- masing komponen. Konfigurasi account, container, serta object tidak harus dijalankan secara berurutan. Untuk konfigurasi account dijalankan pada port 6002 dengan perintah

# swift-ring-builder /etc/swift/account.builder add r0z0- 192.168.11.4:6002/device0 100

Device d0r0z0-192.168.11.4:6002R192.168.11.4:6002/device0_""

with 100.0 weight got id 0

Setelah konfigurasi account builder selesai dijalankan, maka sistem menghasilkan output seperti diatas. Selanjutnya melakukan konfigurasi container builder pada device yang sama di port 6001. Perintah konfigurasi yang digunakan adalah sebagai berikut

# swift-ring-builder /etc/swift/container.builder add r0z0- 192.168.11.4:6001/device0 100

Device d0r0z0-192.168.11.4:6001R192.168.11.4:6002/device0_""

with 100.0 weight got id 0

Sama halnya dengan account dan container, setelah konfigurasi container builder selesai dijalankan, maka sistem menghasilkan output seperti diatas.

Selanjutnya melakukan konfigurasi object builder pada device yang sama di port 6001. Perintah konfigurasi yang digunakan adalah sebagai berikut

# swift-ring-builder /etc/swift/object.builder add r0z0- 192.168.11.4:6000/device0 100

Device d0r0z0-192.168.11.4:6000R192.168.11.4:6002/device0_""

with 100.0 weight got id 0

Dari konfigurasi ketiga komponen tersebut, menggunakan IP Address sesuai dengan identitas di masing-masing device. Dengan kata lain, IP Address yang ada merupakan milik storage node, sehingga konfigurasi dilakukan dengan sejumlah physical machine yang digunakan dalam sistem Ring OpenStack Swift.

(18)

40

Universitas Kristen Petra

Sebagai contoh, untuk konfigurasi account, container, serta object di komputer lain menjalankan perintah berikut

# swift-ring-builder /etc/swift/account.builder add r1z1- 192.168.11.5:6002/device1 100

Device d1r1z1-192.168.11.5:6002R192.168.11.5:6002/device1_""

with 100.0 weight got id 1

# swift-ring-builder /etc/swift/container.builder add r1z1- 192.168.11.5:6001/device1 100

Device d1r1z1-192.168.11.5:6001R192.168.11.5:6001/device1_""

with 100.0 weight got id 1

# swift-ring-builder /etc/swift/object.builder add r1z1- 192.168.11.5:6000/device1 100

Device d1r1z1-192.168.11.5:6000R192.168.11.5:6000/device1_""

with 100.0 weight got id 1

Apabila masing-masing storage node telah diinisialisasi di dalam proxy server node melalui ring builder, maka perlu dilakukan verifikasi. Verifikasi bertujuan agar masing-masing komponen dalam storage node dapat dikenali oleh proxy server node. Node yang telah dikenali dapat diinisialisasi dalam system swift Ring. Pengecekan dilakukan bedasar masing-masing komponen, yakni account, container, serta object. Perintah yang digunakan untuk pengecekan account builder adalah sebagai berikut

# swift-ring-builder account.builder

Dari perintah yang dijalankan, maka verifikasi keberhasilan account builder akan menampilkan output sebagai berikut

Yang kedua adalah mengecek komponen container dalam proxy server node. Perintah yang digunakan untuk account builder adalah sebagai berikut

# swift-ring-builder container.builder

Dari perintah yang dijalankan, maka verifikasi keberhasilan container builder akan menampilkan output sebagai berikut

Yang terakhir adalah mengecek komponen object dalam proxy server node. Perintah yang digunakan untuk object builder adalah sebagai berikut

# swift-ring-builder object.builder

(19)

41

Universitas Kristen Petra

Dari perintah yang dijalankan, maka verifikasi keberhasilan object builder akan menampilkan output sebagai berikut

Setelah semua komponen telah diverifikasi, langkah selanjutnya adalah melakukan rebalance pada masing-masing komponen tersebut. Proses rebalance bertujuan agar perpindahan partisi disk sesedikit mungkin untuk meminimalkan pertukaran data antar satu node dengan node yang lain. Rebalance ini dilakukan ke masing-masing komponen, yakni account, container, serta object. Perintah yang dilakukan untuk rebalance account, serta output yang ditampilkan adalah

# swift-ring-builder /etc/swift/account.builder rebalance Reassigned 4096 (100.00%) partitions. Balance is now 0.00.

Proses rebalance selanjutnya adalah container builder. Perintah yang dilakukan untuk rebalance container serta output yang ditampilkan adalah

# swift-ring-builder /etc/swift/container.builder rebalance Reassigned 4096 (100.00%) partitions. Balance is now 0.00.

Proses rebalance yang terakhir adalah object builder. Perintah yang dilakukan untuk rebalance object serta output yang ditampilkan adalah

# swift-ring-builder /etc/swift/object.builder rebalance Reassigned 4096 (100.00%) partitions. Balance is now 0.00.

Untuk setiap komponen yang dilakukan rebalance, maka harus menghasilkan nilai balance 0.00, supaya proses pengelolaan storage berjalan optimal. Nilai balance yang tidak 0.00 dapat berarti terdapat beberapa device atau port yang tidak terintegrasi. Setelah proses rebalance selesai, langkah selanjutnya adalah melakukan pergantian pemilik dari direktori /etc/swift/ agar dapat digunakan sepenuhnya dengan hak akses swift. Perintah yang diberikan adalah

# chown swift. /etc/swift/*.gz

Setelah konfigurasi berhasil, langkah terakhir adalah melakukan restart pada swift proxy dengan menggunakan perintah

# systemctl restart swift-proxy

4.11 Storage Node

Storage node berperan dalam penyedia storage yang digunakan untuk menyimpan beberapa file dalam sistem swift. Konfigurasi yang terdapat dalam

(20)

42

Universitas Kristen Petra

storage node dilakukan ke seluruh physical machine yang berperan sebagai node tersebut. Dalam node ini terdiri dari tiga komponen utama, yakni account, container, serta object. Langkah pertama yang perlu dilakukan adalah installasi komponen swift storage node yang ada. Konfigurasi yang dilakukan adalah

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

Setelah proses installasi komponen berhasil, langkah berikutnya adalah melakukan partisi disk untuk digunakan dalam swift storage. Partisi yang dilakukan bisa dua hal, yakni pada saat booting operating system awal, atau partisi melalui terminal. Disk yang digunakan berformat xfs dengan mount point /srv/, maka perintah yang dijalankan adalah sebagai berikut

# mkfs.xfs -i size=1024 -s size=4096 /dev/sda7

Apabila proses partisi berhasil dijalankan, maka perlu dibuat sebuah direktori untuk menyimpan berbagai konfigurasi dan proses sistem dalam storage node. Command yang digunakan adalah

# mkdir -p /srv/node/device0

Direktori yang telah selesai dibuat, kemudian dilakukan proses mounting pada direktori yang terkait. Perintah mounting yang dilakukan adalah

# mount -o noatime,nodiratime,nobarrier /dev/sda7 /srv/node/device0

Dalam perintah mounting yang dilakukan, terdapat noatime, nodiratime, dan nobarrier yang digunakan untuk meningkatkan performa disk yang dilakukan mounting. Selanjutnya mengganti pemilik direktori yang telah dibuat dengan menggunakan command sebagai berikut

# chown -R swift. /srv/node

Selanjutnya adalah mengakses file fstab, dengan menggunakan perintah vim /etc/fstab. Perubahan yang dilakukan adalah dengan menambahkan komponen berikut di bagian akhir dalam file ini

/dev/sda7 /srv/node/device0 xfs noatime,nodiratime,nobarrier 0 0

Nilai dalam device serta disk partition diganti dengan kesesuaian dari masing-masing storage node. Setelah penambahan komponen dalam file berhasil

(21)

43

Universitas Kristen Petra

dilakukan, maka perlu melakukan copy file bertipe gz dari proxy node. Proses copy file dijalankan sebagai berikut

# scp /etc/swift/*.gz 10.0.0.71:/etc/swift/

Proses copy file yang dilakukan dengan melakukan command scp, yakni pemindahan data melalui port ssh. Data yang berhasil dipindah dapat dilakukan pengecekan pada direktori /etc/swift dengan perintah ls –al. Setelah copy file berhasil dilakukan, dilakukan penggantian pemilik direktori swift pada storage node dengan menjalankan perintah berikut

# chown swift. /etc/swift/*.gz

Selanjutnya adalah membuat suatu file baru dalam direktori etc/swift berupa swift.conf. Dengan command vim /etc/swift/swift.conf untuk membentuk suatu file baru, dengan isi file berikut

[swift-hash]

swift_hash_path_suffix = swift_shared_path swift_hash_path_prefix = swift_shared_path

Swift_shared_path diisikan dengan nilai hexadecimal sesuai yang ada pada proxy server node, sehingga nilai path_suffix dan path_prefix semua storage node sama dengan proxy server node mereka. Setelah penambahan berhasil dilakukan, langkah selanjutnya adalah melakukan pengecekan pada masing-masing komponen dalam storage node, meliputi account server, container server, serta object server. Pertama dilakukan pengecekan terhadap bind ip serta port pada account server.conf, dengan command sebagai berikut

# vim /etc/swift/account-server.conf

bind_ip = 0.0.0.0 bind_port = 6002

Apabila nilai bind_ip serta bind_port yang ada sudah sesuai dengan nilai konfigurasi account-server pada proxy server node, maka konfigurasi yang dilakukan sudah sesuai. Langkah selanjutnya adalah melakukan pengecekan terhadap bind ip serta port pada container server.conf, dengan perintah

# vim /etc/swift/container-server.conf

bind_ip = 0.0.0.0

(22)

44

Universitas Kristen Petra bind_port = 6001

Apabila nilai bind_ip serta bind_port yang ada sudah sesuai dengan nilai konfigurasi container-server pada proxy server node, maka konfigurasi yang dilakukan sudah sesuai. Yang terakhir adalah melakukan pengecekan terhadap bind ip serta port pada object server.conf, dengan perintah

# vim /etc/swift/object-server.conf

bind_ip = 0.0.0.0 bind_port = 6000

Apabila nilai bind_ip serta bind_port yang ada sudah sesuai dengan nilai konfigurasi object-server pada proxy server node, maka konfigurasi yang dilakukan sudah sesuai. Setelah ketiga komponen telah diverifikasi kesesuaiannya dengan proxy server node, dibuat suatu file baru dengan nama rsyncd.conf dengan menggunakan perintah vim /etc/rsyncd.conf. Isi dari file tersebut adalah

# create new

pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log uid = swift

gid = swift

address = 192.168.11.4

[account]

path = /srv/node read only = false write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 25

lock file = /var/lock/account.lock

[container]

path = /srv/node read only = false write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 25

lock file = /var/lock/container.lock

[object]

path = /srv/node read only = false write only = no list = yes

(23)

45

Universitas Kristen Petra incoming chmod = 0644

outgoing chmod = 0644 max connections = 25

lock file = /var/lock/object.lock

[swift_server]

path = /etc/swift read only = true

write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 5

lock file = /var/lock/swift_server.lock

Dalam file tersebut, ip address yang digunakan adalah ip address milik masing-masing storage node. Setelah konfigurasi terhadap file rsyncd.conf selesai dilakukan, berikutnya adalah memastikan bahwa rsync yang ada dapat di enable dalam satu sistem storage node. Untuk mengubah rsync_enable dilakukan pada file rysnc yang terdapat dalam direktori /etc/default/rsync. Perintah yang dijalankan adalah

# vi /etc/default/rsync ...

RSYNC_ENABLE=true

Setelah konfigurasi rsync telah selesai dilakukan, maka rsync tersebut dijalankan di masing-masing storage node. Command yang digunakan adalah

# systemctl start rsync

Rsync yang berhasil di start kemudian dilakukan enable agar dapat dikenali dalam distributed system. Command yang digunakan adalah

# systemctl enable rsync

Rsync yang telah berhasil dikonfigurasi, maka statusnya dalam sistem berubah menjadi enable. Pengecekan status dapat dilihat melalui command systemctl status rsync. Kemudian, masing-masing komponen dalam storage node meliputi account, container, serta object perlu di enable agar dapat berjalan dalam sistem. Perintah yang digunakan adalah

# for ringtype in account container object; do systemctl start swift-$ringtype

systemctl enable swift-$ringtype

for service in replicator updater auditor; do

if [ $ringtype != 'account' ] || [ $service != 'updater' ]; then

(24)

46

Universitas Kristen Petra systemctl start swift-$ringtype-$service

systemctl enable swift-$ringtype-$service fi

done done

Setelah command berhasil dijalankan, maka masing-masing komponen swift dalam storage node telah berjalan dalam sistem. Untuk melakukan pengecekan, menggunakan perintah systemctl status dan dilanjutkan dengan komponen yang hendak dicek. Apabila komponen tersebut berjalan, maka tulisan yang ada adalah enable atau running.

4.12 Client

Client dalam sistem Object Storage service berperan dalam proses menyimpan, serta mengambil data dari storage. Dalam hal ini, client akan dioperasikan oleh user sebagai pemilik file atau data. Pertama, client perlu melakukan installasi beberapa komponen melalui perintah berikut

# apt-get -y install python-keystoneclient python-swiftclient

Keystoneclient bertujuan untuk memberikan layanan client dalam proses authentikasi untuk mengakses Openstack. Sedangkan swiftclient bertujuan agar user dapat menggunakan service yang dimiliki oleh swift. Setelah installasi beberapa komponen berhasil dijalankan, langkah selanjutnya adalah menambah beberapa atribut dalam file keystonerc_swift. Dengan menggunakan perintah vim

~/keystonerc_swift, atribut yang ditambahkan antara lain

# vim ~/keystonerc_swift

export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=swiftservice export OS_USERNAME=user01

export OS_PASSWORD=admin

export OS_AUTH_URL=http://192.168.11.2:35357/v3 export OS_IDENTITY_API_VERSION=3

export PS1='[\u@\h \W(swift)]\$'

Dari komponen yang ditambahkan, OS_Project_Name diisikan dengan nama project yang telah dibuat dalam controller node, yakni swiftservice. Yang terakhir, untuk OS_AUTH_URL diisikan dengan IP Address milik controller

(25)

47

Universitas Kristen Petra

node, beserta port yang sesuai, yakni 192.18.11.2:35357/v3 dengan API Version 3. Selain tiga komponen tersebut, komponen lainnya diisikan default dari openstack itu sendiri. Selanjutnya, direktori yang telah dibuat perlu dilakukan perubahan hak akses, agar user dapat melakukan manage dengan baik. Command yang digunakan adalah

# chmod 600 ~/keystonerc_swift

Setelah chmod berhasil, selanjutnya mengganti akses command ke dalam direktori keystonerc_swift. Perintah yang digunakan adalah

# source ~/keystonerc_swift

Melalui perintah command tersebut, saat ini command yang ada dapat dijalankan dalam direktori keystonerc_swift. Agar selalu mengakses direktori keystonerc saat menjalankan terminal, maka perlu memasukkan command source keystonerc_swift kedalam bash_profile melalui command berikut

~(swift)# echo "source ~/keystonerc_swift " >> ~/.bash_profile

Setelah source keystonerc_swift berhasil dimasukkan dalam profile, langkah selanjutnya adalah melakukan pengecekan status service dalam swift tersebut. Perintah yang dijalankan adalah sebagai berikut

~(swift)# swift stat

Apabila sistem dari swift terintegrasi dengan baik, maka output yang dihasilkan dari perintah tersebut adalah

Account: AUTH_105ab8b539864cadb5542cc430f7f92b Containers: 0

Objects: 0 Bytes: 0

X-Put-Timestamp: 1482478249.62236 X-Timestamp: 1482478249.62236

X-Trans-Id: txbfbc638a5bbd4fce9c3d4-00585cd2a9 Content-Type: text/plain; charset=utf-8

Melalui output tersebut, menunjukkan bahwa sistem dari swift telah berjalan dengan baik, dimana client yang mengakses sistem akan memanggil controller untuk authentikasi keystone. Melalui proses authentikasi keystone yang diterima dengan project serta role yang sesuai, controller akan mengakses proxyserver node untuk mengelola data client. Data ini yang nantinya disebarkan dalam storage node yang ada.

Referensi

Dokumen terkait

Hasil penelitian menunjukkan bahwa (1) terdapat hubungan yang positif dan signifikan antara kreativitas dengan hasil belajar prakarya dan kewirausahaan sebesar

didapatkan hasil dari simulasi dan dapat di analisa dalam bentuk grafik perbandingan perubahan kecepatan sudut rotor antara sistem yang menggunakan PSS

Pendekatan atau metode layanan menggunakan model instruksional secara klasikal, seperti ekspositori, diskusi kelompok, permainan simulasi, bermain peran, dan sebagainya;

sedangkan angket tertutup adalah angket yang disajikan dalam bentuk sedemikian rupa sehingga responden diminta untuk memilih satu jawaban yang sesuai dengan cara

Mengingat pada lebam mayat darah terdapat di dalam pembuluh darah, maka keadaan ini digunakan untuk membedakannya dengan resapan...darah akibat trauma (eks-travasasi). Bila

Berdasarkan hasil penelitian yang sudah diuji terhadap variabel bebas yang Latihan di Ekstrakurikuler (X1), yang latihan di Klub (X2) dan yang Latihan mandiri (X3)

Keterangan khusus pada Efek kronis pada Manusia : Dapat mempengaruhi bahan genetik dan menyebabkan efek reproduksi yang merugikan. Hal tersebut dapat

Seperti yang sudah dijabarkan pada Bab III mengenai Budaya Kese­ hatan Ibu dan Anak, masyarakat Dayak Siang­Murung dapat dikatakan masih dominan melakukan upaya kesehatan