Menggunakan private cloud dengan Docker, untuk memanipulasi topologi Ada 3 Container yang dibuat dari images Ubuntu.15.04
sudo docker pull ubuntu:15.04
sudo docker run -d -i -p 5052:22 --ulimit nofile=100000:100000 --ulimit memlock=-1:-1 --ulimit nproc=32768:32768 --name="cassandra-server1" ubuntu:15.04 /bin/bash
sudo docker run -d -i -p 5053:23 --ulimit nofile=100000:100000 --ulimit memlock=-1:-1 --ulimit nproc=32768:32768 --name="cassandra-server2" ubuntu:15.04 /bin/bash
sudo docker run -d -i -p 5054:24 --ulimit nofile=100000:100000 --ulimit memlock=-1:-1 --ulimit nproc=32768:32768 --name="cassandra-server3" ubuntu:15.04 /bin/bash
sudo docker exec -ti cassandra-server1 apt-get update
sudo docker exec -ti cassandra-server1 apt-get install iputils-ping telnet bridge-utils wget curl vim
sudo docker exec -ti cassandra-server1 apt-get install libevent-dev aptitude net-tools
docker exec -ti cassandra-server1 bash
root# echo "deb http://www.apache.org/dist/cassandra/debian 38x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
root# curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
root# apt-get update
root# apt-get install cassandra
........
cluster_name: 'Arsip Dokument'
........
# seeds is actually a comma-delimited list of addresses.
# Ex: "<ip1>,<ip2>,<ip3>"
- seeds: "172.17.0.2,172.17.0.3,172.17.0.4" #ini diisi dengan alamat IP semua node yang akan digabungkan kedalam cluster/datacenter node1, node2, node3
........
listen_address: 172.17.0.2 #Awalnya "localhost", diganti IP masing-masing node, node1(172.17.0.2), node2(172.17.0.3), node3(172.17.0.4)
........
rpc_address: 172.17.0.2 #Awalnya "localhost", diganti IP masing-masing node, node1(172.17.0.2), node2(172.17.0.3), node3(172.17.0.4)
root# service cassandra start
root# service cassandra status
* Cassandra is running
root# nodetoatus
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.17.0.3 221.11 KiB 256 ? 24ebee89-7779-4904-82d6-138244006375 rack1
UN 172.17.0.2 449.22 KiB 256 ? 8efa9bcd-83ec-412c-a2dd-a736aacf6956 rack1
UN 172.17.0.4 432.26 KiB 256 ? ec854883-ab41-4f79-b176-b77679e713de rack1
-
Dilakukan sekali saja disembarang node. boleh node1, node2 atau node3
-
Masuk pada cqlsh
root# cqlsh 172.17.0.2
-
Buat Kesypace :
cqlsh> CREATE KEYSPACE project WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
*Catatan replication_factor berjumlah 3 karna menyesuaikan node yang ada untuk melakukan replika dalam mendistribusikan data di dalam node
-
Masuk Pada container "Cassandra-server1" dengan perintah
# cqlsh 172.17.0.2
-
Memilih keyspace
cqlsh> USE project
-
Buat tabel
CREATE TABLE dokumen ( nim varchar, prodi text, tahun int, judul text, kata_kunci text, angkatan int, file1 text, file2 text, file3 text, file4 text, file5 text, intisari text, nama_mhs text, password text, pembimbing text, PRIMARY KEY (prodi,nim ));
CREATE TABLE user_app (
jabatan text,
nip int,
password text,
username text,
PRIMARY KEY (jabatan, nip))
cqlsh:project> use project
cqlsh:project> INSERT INTO user_app(jabatan, nip, password, username) VALUES ('Petugas', 1001, 'admin', 'admin');
perintah pembuatan table hanya dilakukan satu kali saja pada server virtual, bisa dibuat disembarang server virtual bisa di node1, node2 atau node3.
# cqlsh 172.17.0.2
cqlsh:project> use project
cqlsh:project> INSERT INTO dokumen(nim , prodi , tahun , judul , kata_kunci , angkatan , intisari , nama_mhs , pembimbing , password , file1, file2, file3, file4, file5 ) VALUES ( 135410121, 'Sistem Informasi', 2017, 'Big data untuk penjualan ', 'Big data', 2013, 'big data', 'Heru', 'Dr.Bambang PDP', 'aku', 'data', 'data', 'data', 'data', 'data');
INSERT INTO dokumen (nim , prodi , tahun , judul , kata_kunci , angkatan , intisari , nama_mhs , pembimbing , password , file1, file2, file3, file4, file5 ) VALUES ( 135410100, 'Teknik Informatika', 2017, 'Coba pemodelan data 1', 'Coba pemodelan data 1',2013, 'Coba pemodelan data 1', 'Ibnu Masud', 'Dr.Bambang PDP', 'aku', 'data', 'data', 'data', 'data', 'data');
INSERT INTO dokumen (nim , prodi , tahun , judul , kata_kunci , angkatan , intisari , nama_mhs , pembimbing , password , file1, file2, file3, file4, file5 ) VALUES ( 135410122, 'Teknik Informatika', 2017, 'Coba pemodelan data 2', 'Coba pemodelan data 2', 2013, 'Coba pemodelan data 2', 'Usam BIn Afan', 'Dr.Bambang PDP', 'aku', 'data', 'data', 'data', 'data', 'data');
INSERT INTO dokumen (nim , prodi , tahun , judul , kata_kunci , angkatan , intisari , nama_mhs , pembimbing , password , file1, file2, file3, file4, file5 ) VALUES ( 135410333, 'Sistem Informasi', 2017, 'Coba pemodelan data 3', 'Coba pemodelan data 3', 2013, 'Coba pemodelan data 3', 'Abu Hamzah', 'Dr.Bambang PDP', 'aku', 'data', 'data', 'data', 'data', 'data');
Ini diguanakan untuk mengimplementasikan menu pencarian pada table dokumen berdasarkan jundul, dengan ini query LIKE bisa aktif
cqlsh:project> CREATE CUSTOM INDEX cari_judul ON project.dokumen ( judul ) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {
'analyzed' : 'true',
'analyzer_class' : 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer',
'case_sensitive' : 'false',
'mode' : 'CONTAINS'
};
cqlsh:project> SELECT * FROM dokumen WHERE judul LIKE '%cluster%'
-
Dilakukan di komputer host
-
Instal semua keperluan untuk menjalankan framework Flask :-> Sample Ubuntu OS install flask
$ sudo apt-get install python-virtualenv
-
Instal Driver Cassandra
$ pip install cassandra-driver $ apt-get install libev4 libev-dev
-
Pull aplikasi dan masuk pada folder
-
Mengaktifkan environman aplikasi
Web_Flask_Cassandra$ source flask/bin/activate
-
Sampai terlihat ada "(flask)" didepan folder
(flask) Web_Flask_Cassandra$
-
Instal CQLAlchemy
(flask) Web_Flask_Cassandra$ pip install flask-cqlalchemy
-
ketik perintah
(flask) Web_Flask_Cassandra$ python run.py
-
Membuka browser ketik url
127.0.0.1:5000