Cara Menginstal dan Mengonfigurasi Elasticsearch di Ubuntu 22.04

Langkah 1 — Menginstal dan Mengonfigurasi Elasticsearch

Komponen Elasticsearch tidak tersedia di repositori paket default Ubuntu. Namun, mereka dapat diinstal dengan APT setelah menambahkan daftar sumber paket Elastic.

Semua paket ditandatangani dengan kunci penandatanganan Elasticsearch untuk melindungi sistem Anda dari spoofing paket. Paket yang telah diautentikasi menggunakan kunci akan dianggap dipercaya oleh manajer paket Anda. Pada langkah ini, Anda akan mengimpor kunci GPG publik Elasticsearch dan menambahkan daftar sumber paket Elastic untuk menginstal Elasticsearch.

Untuk memulai, gunakan cURL, alat baris perintah untuk mentransfer data dengan URL, untuk mengimpor kunci GPG publik Elasticsearch ke APT. Perhatikan bahwa kami menggunakan argumen -fsSL untuk membungkam semua kemajuan dan kemungkinan kesalahan (kecuali untuk kegagalan server) dan untuk mengizinkan cURL membuat permintaan di lokasi baru jika dialihkan. Pipa output ke perintah gpg --dearmor, yang mengubah kunci menjadi format yang dapat digunakan untuk memverifikasi paket yang diunduh.

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

Selanjutnya, tambahkan daftar sumber Elastis ke direktori sources.list.d, di mana apt akan mencari sumber baru:

echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Bagian [signed-by=/usr/share/keyrings/elastic.gpg] dari file menginstruksikan untuk menggunakan kunci yang Anda unduh untuk memverifikasi repositori dan informasi file untuk paket Elasticsearch.

Selanjutnya, perbarui daftar paket Anda sehingga APT akan membaca sumber Elastis baru:

sudo apt update

Kemudian instal Elasticsearch dengan perintah ini:

sudo apt install elasticsearch

Tekan Y saat diminta untuk mengonfirmasi pemasangan. Jika Anda diminta untuk memulai ulang layanan apa pun, tekan ENTER untuk menerima default dan melanjutkan. Elasticsearch sekarang terinstal dan siap untuk dikonfigurasi.


Langkah 2 — Mengonfigurasi Elasticsearch

Untuk mengkonfigurasi Elasticsearch, kita akan mengedit file konfigurasi utamanya elasticsearch.yml di mana sebagian besar opsi konfigurasinya disimpan. File ini terletak di direktori /etc/elasticsearch.

Gunakan editor teks pilihan Anda untuk mengedit file konfigurasi Elasticsearch. Di sini, kita akan menggunakan nano:

sudo nano /etc/elasticsearch/elasticsearch.yml

File elasticsearch.yml menyediakan opsi konfigurasi untuk cluster, node, jalur, memori, jaringan, penemuan, dan gateway Anda. Sebagian besar opsi ini telah dikonfigurasikan sebelumnya dalam file tetapi Anda dapat mengubahnya sesuai dengan kebutuhan Anda. Untuk keperluan demonstrasi konfigurasi server tunggal, kami hanya akan menyesuaikan pengaturan untuk host jaringan.

Elasticsearch mendengarkan lalu lintas dari mana saja di port 9200. Anda akan ingin membatasi akses luar ke instance Elasticsearch Anda untuk mencegah orang luar membaca data Anda atau mematikan cluster Elasticsearch Anda melalui [REST API] (https://en.wikipedia.org /wiki/Representational_state_transfer). Untuk membatasi akses dan meningkatkan keamanan, temukan baris yang menentukan network.host, batalkan komentar, dan ganti nilainya dengan localhost sehingga berbunyi seperti ini:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

Kami telah menentukan localhost sehingga Elasticsearch mendengarkan semua antarmuka dan IP terikat. Jika Anda ingin mendengarkan hanya pada antarmuka tertentu, Anda dapat menentukan IP-nya sebagai ganti localhost. Simpan dan tutup elasticsearch.yml. Jika Anda menggunakan nano, Anda dapat melakukannya dengan menekan CTRL+X, diikuti oleh Y lalu ENTER .

Ini adalah pengaturan minimum yang dapat Anda mulai untuk menggunakan Elasticsearch. Sekarang Anda dapat memulai Elasticsearch untuk pertama kalinya.

Mulai layanan Elasticsearch dengan systemctl. Beri Elasticsearch beberapa saat untuk memulai. Jika tidak, Anda mungkin mendapatkan kesalahan karena tidak dapat terhubung.

sudo systemctl start elasticsearch

Selanjutnya, jalankan perintah berikut untuk mengaktifkan Elasticsearch untuk memulai setiap kali server Anda boot:

sudo systemctl enable elasticsearch

Dengan Elasticsearch diaktifkan saat startup, mari beralih ke langkah berikutnya untuk membahas keamanan.


Langkah 3 — Mengamankan Elasticsearch

Secara default, Elasticsearch dapat dikontrol oleh siapa saja yang dapat mengakses HTTP API. Ini tidak selalu merupakan risiko keamanan karena Elasticsearch hanya mendengarkan pada antarmuka loopback (yaitu, 127.0.0.1), yang hanya dapat diakses secara lokal. Dengan demikian, tidak ada akses publik yang dimungkinkan dan selama semua pengguna server dipercaya, keamanan mungkin tidak menjadi perhatian utama.

Jika Anda perlu mengizinkan akses jarak jauh ke HTTP API, Anda dapat membatasi eksposur jaringan dengan firewall default Ubuntu, UFW. Firewall ini seharusnya sudah diaktifkan jika Anda mengikuti langkah-langkah di prasyarat Persiapan Server Awal dengan tutorial Ubuntu 22.04.

Kami sekarang akan mengonfigurasi firewall untuk mengizinkan akses ke port API HTTP Elasticsearch default (TCP 9200) untuk host jarak jauh tepercaya, umumnya server yang Anda gunakan dalam pengaturan server tunggal, seperti198.51.100.0. Untuk mengizinkan akses, ketik perintah berikut:

sudo ufw allow from 198.51.100.0 to any port 9200

Setelah selesai, Anda dapat mengaktifkan UFW dengan perintah:

sudo ufw enable

Terakhir, periksa status UFW dengan perintah berikut:

sudo ufw status

Jika Anda telah menentukan aturan dengan benar, Anda akan menerima output seperti ini:

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

UFW sekarang harus diaktifkan dan diatur untuk melindungi port Elasticsearch 9200.Jika Anda ingin berinvestasi dalam perlindungan tambahan, Elasticsearch menawarkan plugin Shield komersial untuk dibeli.


Langkah 4 — Menguji Elasticsearch

Saat ini, Elasticsearch seharusnya sudah berjalan pada port 9200. Anda dapat mengujinya dengan cURL dan permintaan GET.

curl -X GET 'http://localhost:9200'

Anda harus menerima tanggapan berikut:

Output
{ "name" : "elastic-22", "cluster_name" : "elasticsearch", "cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ", "version" : { "number" : "7.17.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a", "build_date" : "2022-02-23T22:20:54.153567231Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Jika Anda menerima respons yang mirip dengan yang di atas,
Elasticsearch berfungsi dengan baik. Jika tidak, pastikan Anda telah mengikuti petunjuk
penginstalan dengan benar dan Anda telah memberikan waktu untuk Elasticsearch untuk
memulai sepenuhnya.

Untuk melakukan pemeriksaan Elasticsearch yang lebih menyeluruh, jalankan perintah berikut:

curl -XGET 'http://localhost:9200/_nodes?pretty'

Dalam output dari perintah di atas, Anda dapat memverifikasi semua pengaturan saat ini untuk node, cluster, jalur aplikasi, modul, dan lainnya.


Langkah 5 — Menggunakan Elasticsearch

Untuk mulai menggunakan Elasticsearch, pertama-tama tambahkan beberapa data. Elasticsearch menggunakan RESTful API, yang merespons perintah CRUD yang biasa: buat, baca, perbarui, dan hapus. Untuk mengatasinya, kita akan menggunakan perintah cURL lagi.

Anda dapat menambahkan entri pertama Anda seperti:

curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Anda harus menerima tanggapan berikut:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

Dengan cURL, kami telah mengirim permintaan HTTP POST ke server Elasticsearch. URI permintaan adalah /tutorial/helloworld/1 dengan beberapa parameter:


- tutorial adalah indeks data di Elasticsearch.

- helloworld adalah tipenya.

- 1 adalah ID entri kami di bawah indeks dan tipe di atas.

Anda dapat mengambil entri pertama ini dengan permintaan HTTP GET.

curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1'

Untuk mengubah entri yang ada, Anda dapat menggunakan permintaan HTTP PUT.

  1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
  2. {
  3. "message": "Hello, People!"
  4. }'

Elasticsearch harus mengakui modifikasi yang berhasil seperti ini:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

Dalam contoh di atas kami telah memodifikasi pesan dari entri pertama menjadi "Halo, Orang-orang!". Dengan itu, nomor versi secara otomatis ditingkatkan menjadi 2.

Anda mungkin telah memperhatikan argumen ekstra cantik dalam permintaan di atas. Ini memungkinkan format yang dapat dibaca manusia sehingga Anda dapat menulis setiap bidang data pada baris baru. Anda juga dapat "mempercantik" hasil Anda saat mengambil data untuk mendapatkan hasil yang lebih mudah dibaca dengan memasukkan perintah berikut:

curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

Sekarang respons akan diformat untuk diuraikan oleh manusia:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

Kami sekarang telah menambahkan dan menanyakan data di Elasticsearch. Untuk mempelajari tentang operasi lain, silakan periksa dokumentasi API.

Komentar