een Elasticsearch cluster met 3 Nodes opzetten op Ubuntu
Elasticsearch is een no-sql databank. Het is de gedistribueerde zoek- en analyse-engine, die alle soorten gegevens in real time doorzoekt en analyseert. Elasticsearch kan elke soort gegevens efficiënt opslaan, of het nu gestructureerde of ongestructureerde tekst is, of numerieke gegevens, en ze indexeren op een manier die snelle zoekacties ondersteunt. Elasticsearch biedt een eenvoudige REST API voor het beheer van de cluster en het indexeren/schrijven en doorzoeken van de gegevens.
Elasticsearch is gebouwd met Java en bevat een gebundelde versie van OpenJDK.
Om Elasticsearch meer in detail te begrijpen, raadpleeg je de officiële documentatieervan .
In dit artikel richten we ons alleen op het opzetten van een cluster van 3 Nodes.
Vereisten
- Ubuntu 18.04 LTS
Wat we zullen doen
- Download Elasticsearch
- Installeer Java 1.8
- Installeer en configureer Elasticsearch
- Test de Cluster
Elasticsearch downloaden
Voor linux kan de huidige versie 7.4.2, vanaf nu, van Elasticsearch gedownload worden met het volgende commando op je linux systemen.
Download op elke knooppunt (Mapnaam kan verschillen)
mkdir elastic1
cd elastic1/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
Als je een specifieke versie zoekt, kun je altijd door de archieven bladeren op de Elasticsearch site. Het is altijd goed om de nieuwste versie te nemen, want die bevat alle oplossingen voor de problemen in de vorige versies.
Installeer Java
Elasticsearch heeft Java nodig om op het systeem beschikbaar te zijn.
Om OpenJDK 8 te installeren, gebruik je de volgende commando’s op je Ubuntu 18.04 Server
Op elke Node
sudo apt update
sudo apt install openjdk-8-jdk
java --version
Installeer en configureer Elasticsearch
Nu is het tijd om Elasticsearch uit het archief te installeren.
Pak het pakket dat we net in de vorige stap gedownload hebben uit met het volgende commando.
Installeer Elasticsearch op elke node
tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
Configureer Elasticsearch
Voordat de dienst gestart wordt, moet Elasticsearch ingesteld worden om in Clustermodus te werken.
Hier hebben we 3 servers
es-node-1: 10.11.10.62 (initiële master)
es-node-2: 10.11.14.248
es-node-3: 10.11.13.158
Open het bestand config/elasticsearch.yml en voeg er het volgende aan toe. (Controleer je IP’s)
vim config/elasticsearch.yml
Voeg op master es-node-1 toe inconfig/elasticsearch.yml
#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-1"
#define node 1 as master-eligible:
node.master: true
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.10.62
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]
cluster.initial_master_nodes:
- 10.11.10.62
Voeg aanes-node-2 toe in config/elasticsearch.yml (Deze node bevat niet: cluster.initial_master_nodes)
#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-2"
#define node 1 as master-eligible:
node.master: true
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.14.248
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]
Add On es-node-3 in config/elasticsearch.yml (Deze node bevat niet: cluster.initial_master_nodes)
#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-3"
#define node 1 as master-eligible:
node.master: true
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.13.158
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]
Start en test de Cluster
Start de Cluster
Op elke Node (start eerst Master es-node1)
Gebruik het volgende commando om Elasticsearch in de voorgrond te starten
bin/elasticsearch
Opmerking:
Elasticsearch gebruikt een mmapfs map standaard om zijn indexen op te slaan. De standaard limieten van het besturingssysteem op het aantal mmapfs is waarschijnlijk te laag, wat de volgende ‘out of memory’ uitzonderingen tot gevolg kan hebben.
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Op Ubuntu 18.04 kunnen we kunnen de limieten verhogen door het volgende commando uit te voeren als root/sudo:
sudo sysctl -w vm.max_map_count=262144
Voeg -d toe aan startom Elasticsearch op de achtergrond te starten
bin/elasticsearch -d
Zodra het cluster start, zie je logs als volgt op es-node-1. Merk op hoe knooppunten aan es-node-1 worden toegevoegd als ze gestart worden.
[2019-11-30T08:43:05,766][INFO ][o.e.c.s.ClusterApplierService] [es-node-1] added {{es-node-2}{V9-rBKeJRe2S8UPW96_XzA}{65Bu-WtmTj-Hce_lFAK-ng}{10.11.14.248}{10.11.14.248:9300}{dilm}{ml.machine_memory=4135120896, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 18, reason: Publication{term=1, version=18}
[2019-11-30T08:43:30,317][INFO ][o.e.c.s.MasterService ] [es-node-1] node-join[{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true} join existing leader], term: 1, version: 19, reason: added {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}
[2019-11-30T08:43:30,820][INFO ][o.e.c.s.ClusterApplierService] [es-node-1] added {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 19, reason: Publication{term=1, version=19
Test het cluster
Open een nieuwe terminal van waaruit het cluster bereikbaar is en probeer de volgende commando’s
curl http://10.11.10.62:9200/_cluster/stats?pretty
curl http://10.11.10.62:9200/_nodes/process?pretty
curl http://10.11.10.62:9200/_cluster/stats?pretty
Conclusie
In dit artikel zagen we de stappen om de nieuwste versie van elasticsearch te downloaden, Java 8 te installeren, Elasticsearch te configureren, het cluster te starten en te testen.