Fakultas Ilmu Komputer
6861
Implementasi
Cluster Message Broker
Sebagai Solusi Skalabilitas
Middleware
Berbasis Arsitektur
Publish-Subscribe
pada
Internet of Things
(IoT)
Jessy Ratna Wulandari1, Eko Sakti Pramukantoro2, Heru Nurwarsito3
Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Brawijaya Email: 1[email protected], 2[email protected], 3[email protected]
Abstrak
Pada middleware IoT yang yang digunakan untuk mengatasi permasalahan syntactical interoperability, ditemui permasalahan terbatasnya jumlah data yang mampu ditampung oleh sejumlah
memory karena menggunakan redis yang memanfaatkan memory RAM sebagai buffer data. Permasalahan tersebut dapat diatasi dengan penambahan clustermessagebroker yang berfungsi untuk membagi data ke dalam beberapa redis. Tujuan dari penelitian ini adalah membangun clustermessage broker dari beberapa redis yang telah dikonfigurasikan ke dalam mode cluster, di mana cluster tersebut akan berfungsi membagi data atau topik ke dalam beberapa redis secara acak. Selain itu juga ditambahkan Ioredis pada middleware yang berfungsi untuk mengintegrasikan cluster dengan
middleware. Pengujian dilakukan untuk menguji kemampuan berjalannya node sensor sebagai
publisher, middleware yang telah menerapkan cluster message broker, dan subscriber serta untuk menguji pembagian data atau topik dibeberapa redis. Berdasarkan pengujian yang dilakukan data yang dikirimkan oleh publisher dapat diterima oleh middleware dan middleware dapat mengirimkan data dari
publisher ke subscriber. Selain itu data atau topik yang diterima oleh middleware dapat didistribusikan ke beberapa redis yang ada didalam cluster.
Kata kunci: cluster, redis, skalabilitas, Middleware, Internet of Things (IoT)
Abstract
IoT middleware that used to solve syntactical interoperability, face a limited storage resource due to Redis implementation which used RAM as a data buffer. This problem can be solved by adding a cluster message broker to distributing data to several Redis. The goal of this research is to develop a cluster message broker from several Redis that already configured into cluster mode, in order to randomly distribute data or topic into several Redis. Besides that, Ioredis also added the middleware to integrate cluster with the middleware. Testing was done to test the capability of the sensor node as a publisher, cluster message broker in the middleware, and subscriber also to test the distributed data or topic in several Redis. The results show that data sent from the publisher can be received by middleware and middleware can send data from the publisher to the subscriber. Besides that, data or topic received by middleware can be distributed to the several Redis in the cluster.
Keywords: cluster, redis, scalability, Middleware, Internet of Things (IoT)
1. PENDAHULUAN
Pada penelitian sebelumnya oleh Anwari telah dibangun sebuah Middleware yang berfungsi untuk mengatasi permasalahan
syntactical interoperability protokol komunikasi CoAP, MQTT, dan Websocket dengan cara menerapkan gateway multi-protokol. Gateway
yang dibuat untuk masing-masing protokol komunikasi dihubungkan dengan sebuah broker
yaitu Redis. Dalam implementasinya, penelitian
tersebut dilanjutkan oleh Rozi yang melakukan pengujian performansi dan skalabilitas untuk mengetahui kinerja Middleware. Berdasarkan hasil pengujian yang telah dilakukan, arsitektur
middleware dan penggunaan redis sebagai
broker dapat mempengarui kinerja middleware
yang menghasilkan nilai delay yang tinggi. Kinerja redis bergantung pada space memory
yang tersedia untuk redis tersebut, oleh karena itu akan terjadi permasalahan skalabilitas di mana data yang mampu ditangani oleh sejumlah
Dalam mengatasi permasalahan skalabilitas tersebut dibutuhkan sebuah metode yang mampu mendukung skalabilitas. Beberapa metode telah dilakukan dalam berbagai penerapan. (Son et al. 2015) mengatasi skalabiltas pada Smart Home
dengan cara membangun sebuah Middleware
terdistribusi yang dapat membuat perangkat cerdas dapat mempelajari perilaku pengguna dan bertindak secara otomatis dengan berkerja sama dengan perangkat lain melalui gateway. (Jutadhamakorn et al. 2017) membangun MQTT
broker yang bersifat scalable dengan metode
clustering dalam menangani sejumlah besar perangkat IoT. (Li, Jiang, and Shi 2017) membuat teknologi cluster web server berbasis redis yang berfungsi untuk menjaga konsistensi
session dan meningkatkan kemampuan ekspansi. (Thomas, Alexander, and Pm 2017) membangun sistem menggunakan metode berbasis cluster menggunakan redis yang memiliki performa tinggi dalam menyimpan, memproses, dan mengambil data geospasial dinamis untuk mengatasi masalah tracking
lokasi kendaraan pada lingkungan SmartCity. Berdasarkan pembahasan diatas, maka dilakukan pengembangan pada penelitian sebelumnya dengan mengusulkan cluster message broker yang digunakan untuk mengatasi permasalahan skalabilitas pada IoT
Middleware. Cluster berfungsi untuk membagi data atau topik ke dalam beberapa redis. Cluster message broker tersebut dibangun dengan menggabungkan beberapa redis. Selain itu dilakukan penambahan Ioredis yang berfungsi untuk mengintegrasikan cluster dengan
middleware.
2. KAJIAN PUSTAKA
Penelitian
(Anwari, Pramukantoro, and
Hanafi, 2017)
membangun Middleware yang memiliki tiga komponen utama yaitu sensorgateway, serviceunit, dan applicationgateway. Sensor gateway difungsikan sebagai interface
bagi sensor yang mengirimkan data suhu dan kelembapan melalui CoAP dan MQTT. Service unit difungsikan sebagai interface bagi sensor
gateway dan application gateway untuk mengakses broker. Redis berada pada sisi service unit yang difungsikan sebagai broker.
Application gateway difungsikan sebagai
interface bagi aplikasi untuk membaca data dari
Middleware melalui Websocket. Pengujian yang dilakukan
berkaitan dengan integrasi sistem
antara sensor sebagai
publisher
yang
menggunakan protokol
CoAP dan MQTT,
middleware,
serta
subscriber
yang
menggunakan protokol Websocket.
Penelitian (Li, Jiang, and Shi 2017) membangun teknologi clusterweb berbasis redis dalam menjaga konsistensi session web server
dan meningkatkan ekspansi. Redis cluster
tersebut berfungsi untuk menyimpan session. Hasil pengujian menunjukkan redis cluster
menyediakan kecepatan read-write data dan memiliki tingkat availability yang tinggi dalam pengunaannya.
3. DESKRIPSI UMUM SISTEM
Penelitian ini merupakan implementasi pengembangan lanjut dari penelitian sebelumnya oleh
(Anwari, Pramukantoro, and
Hanafi, 2017)
. Penelitian ini akan berfokus pada bagian Redis yang berfungsi sebagaibroker. Sistem yang dibangun terdiri dari dua perangkat sensor yang mengirimkan data suhu dan kelembapan melalui protokol CoAP dan MQTT. Data tersebut akan diterima oleh
Middleware yang menerapkan cluster message broker dan kemudian akan dibagi secara acak ke beberapa redis yang ada di cluster untuk disimpan dalam bentuk topik/key. Kemudian data akan dikirimkan ke subscriber yang telah melakukan subscribe dengan topik/key tertentu.
4. PERANCANGAN
4.1 Perancangan lingkungan sistem
Dalam penelitian ini menggunakan lingkungan IoT pada penelitian sebelumnya. Terdapat tiga komponen yang berinteraksi yaitu sensor suhu dan kelempaban, Middleware, dan
subscriber. Sensor berfungsi sebagai publisher
yang mengirimkan data ke Middleware. Kemudian subscriber yang akan menerima data dari Middleware.
Pada gambar 1 sensor suhu dan kelembapan yang menggunakan module dht 11/22 akan mengirimkan data melalui protokol CoAP dengan topik home/kitchen dan MQTT dengan topik home/garage ke Middleware. Selanjutnya Middleware akan menyimpan data tersebut ke Redis yang tersedia di cluster ke dalam bentuk topik/key. Apabila subscriber
telah melakukan subscribe ke Middleware
dengan topik/key tertentu maka Middleware
akan mengirimkan data dengan topik/key
Gambar 1 Lingkungan sistem
4.2 Perancangan Cluster
Dalam penelitian ini cluster berfungsi dalam pembagian data yang disimpan dalam bentuk topik/key. Cluster dibangun dengan menggunakan beberapa redis yang dikonfigurasikan ke dalam mode cluster.
Cluster menggunakan enam Redis yang ditanam pada tiga Raspberry pi. Setiap redis tersebut berperan sebagai master atau
slave. Slave berfungsi untuk menggantikan kerja master jika master mengalami kegagalan sistem. Selama redis berperan sebagai slave maka slave tersebut hanya diberikan ijin untuk Read sehingga tidak bisa mengubah data yang disimpan pada
master. Cluster menggunakan topologi
mesh TCP connection di mana setiap node
yang terhubung mampu saling berkomunikasi.
Pada gambar 2 merupakan gambar topologi mesh yang digunakan pada
cluster. Redis terdiri dari port 6379, 6380, 6381, 6382, 6382, dan 6384. Port tersebut berguna untuk mengidentifikasi node redis dalam penyimpanan data.
Gambar 2 Perancangan cluster 4.3 Perancangan Payload Data sensor
Payload berisi informasi data yang
dikirimkan sensor ke Middleware. Data yang dikirimkan berupa format JSON menggunakan protokol CoAP dan MQTT. Pada tabel 1 menunjukkan Payload data berupa nama protokol, timestamp, topik, tipe sensor, index sensor, IP sensor, modul yang digunakan (dht11/22), dan nilai suhu dan kelembapan yang dicatat oleh sensor.
Tabel 1 Payload data Var payload = {
protocol: string, //nama protokol yang digunakan
timestamp: string, //time server
topic: string, //nama topik yang digunakan
sensor: {
tipe: string, //tipe sensor
index: string, //index sensor
ip: string, //ip yang digunakan untuk sensor
module: string, //modul yang digunakan dht11/22
}
humadity: {
value: number, // nilai humadity
unit: string, //satuan humadity
}
temperature: {
value: number, //nilai temperature
unit: string, //satuan temperature
}
}
5. IMPELEMENTASI
5.1 Implementasi Cluster
Cluster dibangun dari beberapa Redis yang dikonfigurasikan kedalam mode cluster. Redis tersebut diimplementasikan pada tiga
Redis master_3 dengan port 6379 dan slave_3 dengan port 6384 terletak pada Raspberry pi
dengan IP 192.168.42.28. Redis master_1 dengan port 6380 dan slave_1 dengan port 6381 terletak pada Raspberry pi dengan IP 192.168.42.100. Redis master_2 dengan port
6382 dan dan slave_2 dengan port 6383 terletak pada Raspberry pi dengan IP 192.168.42.41.
Masing-masing Redis tersebut memiliki
file konfigurasi sendiri yang terletak di
/etc/redis. Tabel 2 berikut ini merupakan beberapa hal yang ada pada file konfigurasi redis agar redis berjalan pada mode cluster:
Tabel 2 File konfigurasi redis port 6379
cluster-enabled yes
clusterconfigfile node -6379.conf
cluster-node -timeout 5000
appendonly yes
Setelah dilakukan konfigurasi pada masing-masing file redis, selanjutnya dilakukan pengecekan status redis tersebut dengan perinta
sudo service [namafileservice] status. Jika status sudah active (running) maka redis sudah dapat digunakan.
Selanjutnya membuat Cluster dengan menggunakan redis-trib yang disediakan oleh redis. Perintah yang digunakan yaitu
./redis-trib.rb create. Perintah redis-trib
juga akan mengkonfigurasi
key slot secara
otomatis untuk ketiga Redis tersebut. Pada
gambar 3 menunjukkan perintah
redis-tribuntuk membuat
cluster dengan
IP 192.168.42.28 dengan port 6379, IP 192.168.42.42 dengan port 6382, dan IP 192.168.42.100 dengan port 6381. Ketiga Redis tersebut akan memiliki peran sebagai masterpada Cluster.
Gambar 3 Implementasi Cluster
Selanjutnya setiap node master akan diberikan satu slave yang berfungsi untuk menggantikan master jika master mengalami kegagalan sistem.
Pada penelitian ini
Redis
yang berperan sebagai
slave yang dibuat
memiliki
port 6380, 6383, dan 6384.
Node
Redis
slave akan ditambahkan sebagai
anggota
Cluster dengan perintah ./
redis-trib add-node –slave –master-id[id-node -master] IP-slave:port-slave
IP-master:port-master
.
Pada
gambar
4
menunjukkan
perintah dalam menambahkan
slave pada
masing-masing
master
menggunakan
redis-trib.rb add-node –slave
Gambar 4 Penambahan node slave pada Cluster
5.2 Implementasi Middleware
Penelitian ini menggunakan Middleware
pada penelitian sebelumnya. Setelah cluster
redis sudah terbentuk maka perlu di integrasikan dengan Middleware tersebut. Redis pada
Middleware terletak pada sisi serviceunit yang berfungsi sebagai broker dan sekaligus melakukan penyimpanan data secara persistent.
Middleware terletak pada Raspberry pi dengan IP 192.168.42.100.
Integrasi yang dilakukan adalah dengan menambahkan library Ioredis. Selain itu juga dilakukan inisialisasi semua port dan IP host redis yang ada pada cluster. Hal tersebut dilakukan agar Middleware mengetahui redis mana saja yang ada pada daftar node cluster.
Port dan IP host redis terdiri dari node dengan IP 192.168.42.100 dengan port redis 6380 dan 6381, node dengan IP 192.168.42.41 dengan
port 6382 dan 6383, dan node dengan IP 192.168.42.28 dengan port 6379 dan 6384.
5.3 Implementasi Sensor
di Raspberry pi. Perbedaan dari pengiriman data menggunakan protokol CoAP dan MQTT adalah ketika menggunakan CoAP data yang telah di baca oleh sensor akan langsung dikirim ke
middleware, sedangkan ketika menggunakan MQTT sensor harus terhubung dahulu ke
Middleware sebelum mengirimkan data yang telah berhasil terbaca oleh sensor.
Tabel 3 merupakan Pseudocode program sensor yang mengirimkan data suhu dan kelembapan melalui protokol CoAP ke
Middleware dengan IP 192.168.42.100 dan port
5683. Pada proses ini data akan langsung dikirimkan ke Middleware tanpa sensor harus terhubung ke Middleware terlebih dahulu.
Tabel 3
Pseudocode
program sensor
dengan protokol CoAP
SET sensorlib = require node -dht-sensor
Tabel 4 Pseudocode sensor dengan
protokol MQTT
SET async = require async SET MQTT = require mqtt
SET payload = payload data and read humidity and temperature from sensor
program sensor yang mengirimkan data suhu dan kelembapan melalui protokol MQTT ke
Middleware dengan IP 192.168.42.100 dan port
1883. Proses ini akan mengirimkan data sensor setelah sensor melakukan koneksi dan terhubung ke MQTT Gateway pada middleware. Pada program ini juga ditentukan menggunakan QoS 1 pada MQTT.
6. PENGUJIAN DAN HASIL PENGUJIAN
Pengujian fungsional dilakukan untuk mengetahui apakah sensor sebagai publisher,
middleware yang menerapkan cluster message broker serta subscriber sudah dapat saling berkomunikasi dan apakah data yang diterima oleh middleware mampu dibagi ke dalam beberapa redis. Pengujian dilakukan berdasarkan prosedur pengujian yang telah ditentukan. Pada pengujian akan dilakukan pengiriman data suhu dan kelembapan dari sensor dengan IP 192.168.42.41 untuk CoAP dan sensor dengan IP 192.168.42.12 untuk mengirim data suhu dan kelembapan melalui MQTT ke Middleware
dengan IP 192.168.42.100.
6.1 Middleware mampu menerima data melalui protokol CoAP
Gambar 5 Pm2 logs middleware dari CoAP Gambar 5.3 menunjukkan tampilan pm2
logs pada middleware. Hasil pengujian menunjukkan bahwa middleware dengan mode
cluster mampu menerima data suhu dan kelembapan melalui protocol CoAP untuk topik
home/kitchen dari klien publisher dengan IP 192.168.42.41. Berdasarkan hasil pengujian PF_001 disimpulkan bahwa integarasi
middleware yang mengimplementasikan cluster message Broker dengan node sensor berhasil dilakukan.
6.2 Middleware mampu menerima data melalui protokol MQTT
Gambar 6 Pm2 logs middleware dari MQTT Gambar 6 menunjukkan tampilan pm2 logs pada middleware. Hasil pengujian menunjukkan bahwa middleware dengan mode
cluster mampu menerima data suhu dan kelembapan melalui protocol MQTT untuk topik
PF_002 disimpulkan bahwa integarasi
middleware yang mengimplementasikan cluster message Broker dengan node sensor berhasil dilakukan.
6.3 Middleware mampu menerima data melalui protokol CoAP dan MQTT
Gambar 7 Pm2 logs middleware CoAP dan MQTT
Pada Gambar 7 menunjukkan tampilan
pm2 logs pada middleware. Hasil pengujian menunjukkan bahwa middleware dengan mode
cluster mampu menerima data suhu dan kelembapan melalui protocol CoAP untuk topik
home/kitchen dari klien publisher dengan IP 192.168.42.41 dan melalui protokol MQTT untuk topik home/garage dari klien publisher
mqtjs_a2830b21. Berdasarkan hasil pengujian PF_003 disimpulkan bahwa integarasi
middleware yang mengimplementasikan cluster message Broker dengan node sensor berhasil dilakukan.
6.4 Cluster mampu membagi data yang diterima oleh Middleware
Gambar 8 pm2 logs pembagian data/topik Pada Gambar 8 merupakan tampilan yang menunjukkan hasil perintah redis-cli -h [IP] -p [port]–scan. Perintah tersebut berfungsi untuk melihat topik apa saja yang ada pada suatu
redis. Hasil pengujian menunjukkan pada redis
dengan IP 192.168.42.41 dan port 6382 menyimpan topik home/garage, sedangkan redis
dengan IP 192.168.42.100 dan port 6380 menyimpan topik home/kitchen yang berarti bahwa middleware dengan mode cluster mampu membagi data yang diterima ke dalam beberapa redis yang terdapat pada cluster.
6.5 Middleware mampu mengirimkan data dengan protokol CoAP ke subscriber melalui protokol Websocket
Gambar 9 Pm2 logs CoAP dan Websocket Pada Gambar 9 menunjukkan sebuah tampilan payload data yang diterima oleh
subscriber. Payload data yang berisi data suhu yang bernilai 30oC dan kelembapan yang
bernilai 20% tersebut dikirimkan oleh publisher
dengan IP 192.168.42.41 melaluiprotokol CoAP dengan topik home/kitchen menggunakan
module dht11. Berdasarkan hasil pengujian PF_005 disimpulkan bahwa integrasi
middleware yang mengimplementasikan cluster message Broker dengan subscriber berhasil dilakukan.
6.6 Middleware mampu mengirimkan data dengan protokol MQTT ke subscriber melalui protokol Websocket
Gambar 10 Pm2 logs MQTT dan Websocket Pada Gambar 10 menunjukkan sebuah tampilan payload data yang diterima oleh
subscriber. Payload data yang berisi data suhu yang bernilai 30oC dan kelembapan yang
bernilai 20% tersebut dikirimkan oleh publisher
dengan IP 192.168.42.41 melalui protokol MQTT dengan topik home/garage. Berdasarkan hasil pengujian PF_006 disimpulkan bahwa integrasi middleware yang mengimplementasikan cluster message Broker
dengan subscriber berhasil dilakukan.
6.7 Redis dapat saling terhubung satu sama lain
Gambar 11 Pm2 logs akses data redis Pada Gambar 11 menunjukkan topik dht/A1 ada di redis dengan port 6382 dan IP 192.168.42.41 sedangkan topik dht/A4 ada di
redis dengan port 6379 dan IP 192.168.42.79. Kemudian redis dengan port 6381 dengan IP 192.168.42.100 mencoba mengakses topik-topik tersebut dengan melakukan perintah MGET [nama_topik]. Hasilnya dapat dilihat pada gambar bahwa redis dengan port 6380 dapat mengakses data di redis dengan port 6382 dan 6379. Hal tersebut ditunjukkan dengan keterangan “Redirected” yang berarti redis port
6380 dialihkan ke port 6382 dengan lokasi data untuk topik dht/A1 di slot 7738, dan redis port
6380 juga dialihkan ke port 6379 dengan lokasi datauntuk topik dht/A2 berada di slot 3743. Data yang ditampilkan berupa Buffer.
7. KESIMPULAN
menggunakan Redis dapat diimplementasikan pada Middleware IoT. Dengan penambahan Ioredis maka cluster dapat diintegrasikan dengan
middleware. IoT middleware yang telah menerapkan cluster message broker dapat berkomunikasi dengan sensor melalui protokol CoAP dan MQTT serta dapat berkomunikasi dengan subscriber melalui protokol Websocket. Selain itu data yang terima oleh middleware
dapat dibagi ke dalam beberapa redis dalam bentuk topik/key.
8. DAFTAR PUSTAKA
Anwari, H, Pramukantoro, Eko Sakti, and Hanafi, Hanats. 2017. “Pengembangan Iot
Middleware Berbasis Event-Based Dengan Protokol” 1 (12): 1560–67. Jutadhamakorn, Pongnapat, Tinnapat Pillavas,
Vasaka Visoottiviseth, Ryousei Takano, Jason Haga, and Dylan Kobayashi. 2017. “A Scalable and Low-Cost MQTT Broker
Clustering System.”
Li, Songhuan, Hong Jiang, and Mingkang Shi. 2017. “Redis-Based Web Server Cluster Session Maintaining Technology.” 2017 13th International Conference on Natural Computation, Fuzzy Systems and
Knowledge Discovery (ICNC-FSKD), 3065–69.
Pramukantoro, Eko Sakti, Widhi Yahya, and Fariz Andri Bakhtiar. 2017. “Perform Evaluation of IoT Middleware for
Syntactical Interoperability.” International Conference on Advanced Computer Science and Information Systems (ICACSIS) 00.
https://doi.org/10.1109/ICACSIS.2017.83 55008.
Rozi, Mohammad Fahrur, Eko Sakti
Pramukantoro, and Kasyful Amron. 2017. “Analisis Performansi Dan Skalabilitas Pada Event-Based IoT Middleware” 1 (7):
593–601.
Son, Heesuk, Bjorn Tegelund, Taehun Kim, Dongman Lee, Soon J. Hyun, Junsung Lim, and Hyunseok Lee. 2015. “A
Distributed Middleware for a Smart Home with Autonomous Appliances.”
Proceedings - International Computer Software and Applications Conference 2: 23–32.
https://doi.org/10.1109/COMPSAC.2015. 101.
Thomas, George, G Alexander, and Sasi Pm.
2017. “Design of High