Pendahuluan
Elasticsearch adalah mesin pencari scalable real-time yang digunakan dalam cluster. Saat dikombinasikan dengan orkestrasi Kubernetes, Elasticsearch mudah dikonfigurasi, dikelola, dan diskalakan.
Menyebarkan cluster Elasticsearch secara default membuat tiga pod. Setiap pod melayani ketiga fungsi:master, data, dan klien. Namun, praktik terbaiknya adalah menerapkan beberapa pod Elasticsearch khusus untuk setiap peran secara manual.
Artikel ini menjelaskan cara menerapkan Elasticsearch di Kubernetes pada tujuh pod secara manual dan menggunakan bagan Helm bawaan.
Prasyarat
- Kluster Kubernetes (kami menggunakan Minikube).
- Manajer paket Helm.
- Alat baris perintah kubectl.
- Akses ke baris perintah atau terminal.
Cara Men-deploy Elasticsearch di Kubernetes Secara Manual
Praktik terbaik adalah menggunakan tujuh pod di cluster Elasticsearch:
- Tiga pod master untuk mengelola cluster.
- Dua pod data untuk menyimpan data dan memproses kueri.
- Dua pod klien (atau koordinator) untuk mengarahkan lalu lintas.
Menerapkan Elasticsearch di Kubernetes secara manual dengan tujuh pod khusus adalah proses sederhana yang memerlukan pengaturan nilai Helm berdasarkan peran.
Langkah 1:Siapkan Kubernetes
1. Cluster membutuhkan sumber daya yang signifikan. Setel CPU Minikube ke minimal 4 dan memori ke 8192MB:
minikube config set cpus 4
minikube config set memory 8192
2. Buka terminal dan mulai minikube dengan parameter berikut:
minikube start
Instance dimulai dengan memori dan CPU yang dikonfigurasi.
3. Minikube membutuhkan values.yaml file untuk menjalankan Elasticsearch. Unduh file dengan:
curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
File tersebut berisi informasi yang digunakan pada langkah berikutnya untuk ketiga konfigurasi pod.
Langkah 2:Atur Nilai berdasarkan Peran Pod
1. Salin konten values.yaml file menggunakan cp
perintah ke dalam tiga file konfigurasi pod yang berbeda:
cp values.yaml master.yaml
cp values.yaml data.yaml
cp values.yaml client.yaml
2. Periksa keempat file YAML menggunakan ls
perintah:
ls -l *.yaml
3. Buka master.yaml file dengan editor teks dan tambahkan konfigurasi berikut di awal:
# master.yaml
---
clusterName: "elasticsearch"
nodeGroup: "master"
roles:
master: "true"
ingest: "false"
data: "false"
replicas: 3
Konfigurasi menyetel grup simpul ke master di elasticsearch mengelompokkan dan menyetel peran master ke "true" . Selain itu, master.yaml membuat tiga replika node master.
master.yaml lengkapnya terlihat seperti berikut:
# master.yaml
---
clusterName: "elasticsearch"
nodeGroup: "master"
roles:
master: "true"
ingest: "false"
data: "false"
replicas: 3
# Permit co-located instances for solitary minikube virtual machines.
antiAffinity: "soft
# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"
# Allocate smaller chunks of memory per pod.
resources:
requests:
cpu: "100m"
memory: "512M"
limits:
cpu: "1000m"
memory: "512M"
# Request smaller persistent volumes.
volumeClaimTemplate:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "standard"
resources:
requests:
storage: 100M
4. Simpan file dan tutup.
5. Buka data.yaml file dan tambahkan informasi berikut di bagian atas untuk mengonfigurasi pod data:
# data.yaml
---
clusterName: "elasticsearch"
nodeGroup: "data"
roles:
master: "false"
ingest: "true"
data: "true"
replicas: 2
Penyiapan membuat dua replika pod data. Setel peran data dan penyerapan ke "true" . Simpan file dan tutup.
6. Buka client.yaml file dan tambahkan informasi konfigurasi berikut di bagian atas:
# client.yaml
---
clusterName: "elasticsearch"
nodeGroup: "client"
roles:
master: "false"
ingest: "false"
data: "false"
replicas: 2
service:
type: "LoadBalancer"
7. Simpan file dan tutup.
Klien memiliki semua peran yang disetel ke "false" karena klien menangani permintaan layanan. Jenis layanan ditetapkan sebagai "LoadBalancer" untuk menyeimbangkan permintaan layanan secara merata di semua node.
Langkah 3:Terapkan Pod Elasticsearch berdasarkan Peran
1. Tambahkan repositori Helm:
helm repo add elastic https://helm.elastic.co
2. Gunakan helm install
perintah tiga kali, sekali untuk setiap file YAML khusus yang dibuat pada langkah sebelumnya:
helm install elasticsearch-multi-master elastic/elasticsearch -f ./master.yaml
helm install elasticsearch-multi-data elastic/elasticsearch -f ./data.yaml
helm install elasticsearch-multi-client elastic/elasticsearch -f ./client.yaml
Output mencetak detail penerapan.
3. Tunggu hingga anggota cluster di-deploy. Gunakan perintah berikut untuk memeriksa kemajuan dan mengonfirmasi penyelesaian:
kubectl get pods
Keluaran menunjukkan SIAP kolom dengan nilai 1/1 setelah penerapan selesai untuk ketujuh pod.
Langkah 4:Uji Koneksi
1. Untuk mengakses Elasticsearch secara lokal, teruskan port 9200 menggunakan kubectl
perintah:
kubectl port-forward service/elasticsearch-master
Perintah meneruskan koneksi dan membuatnya tetap terbuka. Biarkan jendela terminal berjalan dan lanjutkan ke langkah berikutnya.
2. Di tab terminal lain, uji koneksi dengan:
curl localhost:9200
Output mencetak informasi penerapan.
Atau, akses localhost:9200 dari browser.
Output menunjukkan detail cluster dalam format JSON, yang menunjukkan bahwa penerapan berhasil.
Cara Men-deploy Elasticsearch dengan Seven Pod Menggunakan Diagram Helm Prebuilt
Bagan Helm bawaan untuk menerapkan Elasticsearch pada tujuh pod khusus tersedia di repositori Bitnami. Menginstal bagan dengan cara ini menghindari pembuatan file konfigurasi secara manual.
Langkah 1:Siapkan Kubernetes
1. Alokasikan setidaknya 4 CPU dan memori 8192MB:
minikube config set cpus 4
minikube config set memory 8192
2. Mulai Minikube:
minikube start
Instance Minikube dimulai dengan konfigurasi yang ditentukan.
Langkah 2:Tambahkan Repositori Bitnami dan Terapkan Bagan Elasticsearch
1. Tambahkan repositori Bitnami Helm dengan:
helm repo add bitnami https://charts.bitnami.com/bitnami
2. Instal grafik dengan menjalankan:
helm install elasticsearch --set master.replicas=3,coordinating.service.type=LoadBalancer bitnami/elasticsearch
Perintah memiliki opsi berikut:
- Pemasangan elasticsearch dengan nama rilis
elasticsearch
. master.replicas=3
menambahkan tiga replika Master ke cluster. Kami menyarankan untuk tetap menggunakan tiga node master.coordinating.service.type=LoadBalancer
menyetel node klien untuk menyeimbangkan permintaan layanan secara merata di semua node.
3. Pantau penerapan dengan:
kubectl get pods
Tujuh pod menunjukkan 1/1 dalam SIAP kolom saat Elasticsearch diterapkan sepenuhnya.
Langkah 3:Uji Koneksi
1. Teruskan koneksi ke port 9200 :
kubectl port-forward svc/elasticsearch-master 9200
Biarkan koneksi terbuka dan lanjutkan ke langkah berikutnya.
2. Di tab terminal lain, periksa koneksi dengan:
curl localhost:9200
Atau, akses alamat yang sama dari browser untuk melihat informasi penerapan dalam format JSON.