Dalam artikel hari ini, kita akan mengatur replikasi CouchDB di Ubuntu 16.04. CouchDB adalah database NoSQL yang sangat mirip dengan cassandra. Alih-alih Java Cassandra, CouchDB ditulis Erlang dan merupakan proyek Apache Software Foundation sejak 2008. Basis data ini berorientasi pada dokumen, tidak seperti MongoDB. Untuk tutorial ini, Anda memerlukan dua node yang menjalankan Ubuntu 16.04 Server. Saya akan menggunakan instance KVM di laptop saya, Anda dapat menggunakan VM atau mesin fisik. Jadi mari kita mulai.
Menginstal dan CouchDB pada node Ubuntu
Mari kita perbarui daftar sumber terlebih dahulu
sudo apt update
Selanjutnya kita install package software-properties-common yang memungkinkan kita untuk menambahkan repositori PPA. Ini mungkin disertakan secara default, tetapi jika tidak, Anda perlu menjalankan perintah ini
sudo apt install software-properties-common
Selanjutnya kita tambahkan repositori untuk couchdb dari mana kita akan menginstal software database
sudo add-apt-repository ppa:couchdb/stable
Kemudian kita dapat menginstal couchdb dengan perintah sederhana:
sudo apt-get install couchdb
Setelah perintah ini dijalankan, couchdb diinstal dan kita akan berjalan di port 5984 apakah kita bisa menggunakan curl untuk mendapatkan info tentang database
curl localhost:5984
Seperti yang kita lihat, ini sudah berjalan.
Cara membuat dan menghapus basis data
Couchdb dimanipulasi melalui permintaan http. Saat Anda ingin sesuatu dilakukan, Anda membuat permintaan di localhost pada port default tempat CouchDB berjalan. Itu adalah port 5984. Untuk alasan keamanan, Anda hanya dapat melakukan ini di localhost, di mesin tempat couchdb dijalankan.
Mari tambahkan database:
miki@ubuntu-1:~$ curl -X PUT localhost:5984/new_database
{"ok":true}
Sekarang mari kita daftar semua database pada sistem:
miki@ubuntu-1:~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users","new_database"]
Dua yang pertama ada di sana secara default, database_baru adalah apa yang kami buat. Mari kita menghapusnya. Penghapusan database dilakukan dengan perintah berikut
miki@ubuntu-1:~$ curl -X DELETE http://127.0.0.1:5984/new_database
{"ok":true}
Sekarang jalankan perintah kedua lagi
miki@ubuntu-1:~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users"]
Kami melihat bahwa database_baru hilang, saat kami menghapusnya.
Futon - GUI CouchDB
Jika Anda mengunjungi http://localhost:5984/_utils
dengan browser Anda, Anda akan menemukan Futon. Futon adalah front end CouchDB GUI. Tetapi seperti yang disebutkan, CouchDB untuk alasan keamanan hanya memungkinkan administrasi dari localhost, yang berarti dari server Anda menginstal CouchDB. Anda tidak dapat mengetikkan alamat IP server alih-alih localhost. Jadi jika Anda ingin mengelola server Anda dari laptop Anda, kami perlu menggunakan sedikit trik. Kita perlu membuat ssh tunnel ke server, membuat mini VPN dan membuat server Anda berpikir bahwa permintaan itu datang dari localhost. Untuk melakukannya, di komputer lokal Anda, ketik perintah berikut:
miki@ThinkPad-X220T:~$ ssh -L5984:127.0.0.1:5984 [email protected]
Ini akan membuat terowongan yang kita butuhkan, dan selanjutnya Anda dapat menjalankan browser Anda dan menavigasi ke http://localhost:5984/_utils/index.html
Ini akan memberi Anda antarmuka pengguna yang mirip dengan ini
Karena kita akan mereplikasi database di bab berikutnya, kita perlu mengatur database tujuan kita untuk menerima replika dari lokasi selain localhost. Ini dapat diatur dalam parameter bind_address di halaman konfigurasi Futon. Itu perlu disetel ke 0.0.0.0
untuk mendengarkan di semua ip daripada hanya localhost. Sesuatu seperti ini:
Anda dapat melakukan ini di kedua node Anda (Anda perlu membuat terowongan ssh baru untuk node lain) tetapi umumnya hanya menargetkan di mana replika dibuat perlu mendengarkan semua alamat IP. Sumber hanya dapat terus mendengarkan localhost.
Mereplikasi database secara lokal
Mereplikasi database, seperti yang lainnya di CoucdDB, juga dilakukan dengan permintaan HTTP. Anda perlu menentukan sumber dan database tujuan. Tujuan dapat berupa basis data lokal atau jarak jauh. Karena kita sudah menyetel ubuntu-1, dengarkan semua ip, mari buat db yang akan kita tiru di host ubuntu-2.
miki@ubuntu-2:~$ curl -X PUT localhost:5984/db-replica
{"ok":true}
Sekarang mari kita lihat bagaimana kita dapat mereplikasi database ini secara lokal. Di server yang sama
curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://localhost:5984/foo", "create_target": true, "continuous": true} '
{"ok":true,"_local_id":"f8fa7b615b4e951d7ab7254ed58d049d+continuous+create_target"}
Perintah ini harus membuat database foo di host lokal, dan sebagai sumber harus mengambil database db-replica yang sudah kita buat sebelumnya. Kami juga mengaktifkan opsi berkelanjutan, yang berarti bahwa basis data akan disinkronkan secara berkala ketika Anda membuat perubahan sumber basis data, yang dalam hal ini adalah db-replica. Setelah menjalankan perintah ini, mari periksa semua database yang tersedia
miki@ubuntu-2:~$ curl -X GET localhost:5984/_all_dbs
["_replicator","_users","db-replica","foo"]
Basis data foo telah dibuat.
Replikasi jarak jauh
Mari kita coba sekarang untuk melakukannya dari jarak jauh, sumber kita lagi db-replika di server ubuntu-2, dan target kita akan jauh di server ubuntu-1 kita. Ini akan membuat database baru jika tidak ada (parameter create_target) dan akan terus menyinkronkan replika untuk semua perubahan yang terjadi.
miki@ubuntu-2:~$ curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://192.168.122.223:5984/remotefoo", "create_target": true, "continuous": true} '
{"ok":true,"_local_id":"cf7f6399835a893ab48282cb269eb1ab+continuous+create_target"}
Mari kita periksa dbs di server ubuntu-1
miki@ubuntu-1:~$ curl -X GET localhost:5984/_all_dbs
["_replicator","_users","dbtest","remotefoo"]
Kita dapat melihat bagaimana replikasi jarak jauh bekerja. Jika Anda hanya menginginkan replikasi satu kali, Anda perlu mengubah parameter kontinu menjadi false atau cukup menghilangkannya. Jika Anda ingin melihat log couchDB , Anda dapat menemukannya di direktori /var/log/couchdb/couch.log. Anda memerlukan sudo atau hak akses root untuk mengaksesnya, dan jika Anda ingin melihat log secara interaktif, perintah ini akan melakukannya
sudo tail -f /var/log/couchdb/couch.log
Kesimpulan
Kami telah melalui perintah dasar dan penggunaan CouchDB. Pembuatan database baru, penghapusan, replikasi secara lokal atau melalui jaringan semuanya dilakukan dengan permintaan HTTP dan dapat dikodekan ke aplikasi Anda. Memeriksa log dilakukan dengan perintah tail -f normal, dan ketika GUI diperlukan, kami memiliki Futon, yang cukup intuitif untuk membantu Anda melakukan semua tugas yang menurut Anda tidak cukup nyaman untuk dilakukan di baris perintah. Itu saja untuk artikel ini, terima kasih telah membaca dan selamat siang.