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
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.
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 ...
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
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
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';
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/ \
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
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).
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 | +---+---+
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 | +---+---+
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
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
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
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
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
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.
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
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
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
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
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
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
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
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.