GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come distribuire Elasticsearch su Kubernetes

Introduzione

Elasticsearch è un motore di ricerca scalabile in tempo reale distribuito in cluster. Se combinato con l'orchestrazione Kubernetes, Elasticsearch è facile da configurare, gestire e scalare.

La distribuzione di un cluster Elasticsearch per impostazione predefinita crea tre pod. Ogni pod svolge tutte e tre le funzioni:master, dati e client. Tuttavia, la best practice sarebbe quella di distribuire manualmente più pod Elasticsearch dedicati per ciascun ruolo.

Questo articolo spiega come distribuire Elasticsearch su Kubernetes su sette pod manualmente e utilizzando un grafico Helm predefinito.

Prerequisiti

  • Un cluster Kubernetes (abbiamo usato Minikube).
  • Il gestore del pacchetto Helm.
  • Lo strumento da riga di comando kubectl.
  • Accesso alla riga di comando o al terminale.

Come distribuire Elasticsearch su Kubernetes manualmente

La best practice consiste nell'utilizzare sette pod nel cluster Elasticsearch:

  • Tre master pod per la gestione del cluster.
  • Due data pod per la memorizzazione dei dati e l'elaborazione delle query.
  • Due pod client (o coordinati) per indirizzare il traffico.

La distribuzione manuale di Elasticsearch su Kubernetes con sette pod dedicati è un processo semplice che richiede l'impostazione dei valori Helm in base al ruolo.

Passaggio 1:configura Kubernetes

1. Il cluster richiede risorse significative. Imposta le CPU Minikube su un minimo di 4 e la memoria su 8192 MB:

minikube config set cpus 4
minikube config set memory 8192

2. Apri il terminale e avvia minikube con i seguenti parametri:

minikube start

L'istanza inizia con la memoria e le CPU configurate.

3. Minikube richiede un values.yaml file per eseguire Elasticsearch. Scarica il file con:

curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml

Il file contiene le informazioni utilizzate nel passaggio successivo per tutte e tre le configurazioni del pod.

Fase 2:imposta i valori in base al ruolo del pod

1. Copia il contenuto di values.yaml file utilizzando il cp comando in tre diversi file di configurazione del pod:

cp values.yaml master.yaml
cp values.yaml data.yaml
cp values.yaml client.yaml

2. Controlla i quattro file YAML usando ls comando:

ls -l *.yaml

3. Apri master.yaml file con un editor di testo e aggiungi la seguente configurazione all'inizio:

# master.yaml
---
clusterName: "elasticsearch"
nodeGroup: "master"
roles:
  master: "true"
  ingest: "false"
  data: "false"
replicas: 3

La configurazione imposta il gruppo di nodi su master nella ricerca elastica cluster e imposta il ruolo principale su "true" . Inoltre, il master.yaml crea tre repliche del nodo principale.

Il master.yaml completo ha il seguente aspetto:

# 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. Salva il file e chiudi.

5. Apri data.yaml file e aggiungi le seguenti informazioni in alto per configurare i data pod:

# data.yaml
---
clusterName: "elasticsearch"
nodeGroup: "data"
roles:
  master: "false"
  ingest: "true"
  data: "true"
replicas: 2

L'installazione crea due repliche di pod di dati. Imposta i ruoli dei dati e di importazione su "true" . Salva il file e chiudi.

6. Apri il client.yaml file e aggiungi le seguenti informazioni di configurazione in alto:

# client.yaml
---
clusterName: "elasticsearch"
nodeGroup: "client"
roles:
  master: "false"
  ingest: "false"
  data: "false"
replicas: 2
service:
  type: "LoadBalancer"

7. Salva il file e chiudi.

Il client ha tutti i ruoli impostati su "false" poiché il cliente gestisce le richieste di servizio. Il tipo di servizio è designato come "LoadBalancer" per bilanciare le richieste di servizio in modo uniforme su tutti i nodi.

Fase 3:distribuisci i pod Elasticsearch in base al ruolo

1. Aggiungi il repository Helm:

helm repo add elastic https://helm.elastic.co

2. Usa helm install comando tre volte, una per ogni file YAML personalizzato creato nel passaggio precedente:

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

L'output stampa i dettagli della distribuzione.

3. Attendere la distribuzione dei membri del cluster. Utilizzare il comando seguente per controllare lo stato di avanzamento e confermare il completamento:

kubectl get pods

L'output mostra PRONTO colonna con valori 1/1 una volta completata la distribuzione per tutti e sette i pod.

Fase 4:verifica della connessione

1. Per accedere a Elasticsearch in locale, inoltra la porta 9200 utilizzando il kubectl comando:

kubectl port-forward service/elasticsearch-master

Il comando inoltra la connessione e la mantiene aperta. Lascia aperta la finestra del terminale e procedi al passaggio successivo.

2. In un'altra scheda del terminale, verifica la connessione con:

curl localhost:9200

L'output stampa le informazioni sulla distribuzione.

In alternativa, accedi a localhost:9200 dal browser.

L'output mostra i dettagli del cluster in formato JSON, a indicare che la distribuzione è riuscita.

Come distribuire Elasticsearch con sette pod utilizzando un grafico Helm predefinito

Un grafico Helm predefinito per la distribuzione di Elasticsearch su sette pod dedicati è disponibile nel repository Bitnami. L'installazione del grafico in questo modo evita di creare file di configurazione manualmente.

Passaggio 1:configura Kubernetes

1. Assegna almeno 4 CPU e 8192 MB di memoria:

minikube config set cpus 4
minikube config set memory 8192

2. Avvia Minikube:

minikube start

L'istanza Minikube inizia con la configurazione specificata.

Fase 2:aggiungi il repository Bitnami e distribuisci il grafico Elasticsearch

1. Aggiungi il repository Bitnami Helm con:

helm repo add bitnami https://charts.bitnami.com/bitnami

2. Installa il grafico eseguendo:

helm install elasticsearch --set master.replicas=3,coordinating.service.type=LoadBalancer bitnami/elasticsearch

Il comando ha le seguenti opzioni:

  • Elasticsearch viene installato con il nome della versione elasticsearch .
  • master.replicas=3 aggiunge tre repliche master al cluster. Ti consigliamo di restare con tre nodi master.
  • coordinating.service.type=LoadBalancer imposta i nodi client per bilanciare le richieste di servizio in modo uniforme su tutti i nodi.

3. Monitora la distribuzione con:

kubectl get pods

I sette pod mostrano 1/1 nel PRONTO colonna quando Elasticsearch viene distribuito completamente.

Fase 3:verifica la connessione

1. Inoltra la connessione alla porta 9200 :

kubectl port-forward svc/elasticsearch-master 9200

Lascia la connessione aperta e procedi al passaggio successivo.

2. In un'altra scheda del terminale, verifica la connessione con:

curl localhost:9200

In alternativa, accedi allo stesso indirizzo dal browser per visualizzare le informazioni sulla distribuzione in formato JSON.


Ubuntu
  1. Come eseguire le implementazioni Canary su Kubernetes

  2. Come distribuire un'istanza di WordPress su Kubernetes

  3. Come distribuire il cluster Redis su Kubernetes

  4. Come distribuire Nginx Load Balancing su Kubernetes Cluster su Ubuntu 18.04 LTS

  5. Come distribuire il tuo primo pod su un cluster Kubernetes

Come distribuire applicazioni su Kubernetes usando Helm

Come installare Kubernetes su Ubuntu 20.04

Come distribuire il cluster Kubernetes su AWS con Amazon EKS

Come distribuire Mattermost su Ubuntu 20.04

Come distribuire Kubernetes a nodo singolo con Microk8s su Ubuntu 20.04

Come distribuire Docker Compose Stack su Kubernetes con Kompose