Configurer Elasticsearch Cluster 8.x

Publié le 28/02/2023

« Voir toutes les conférences Contactez-nous
Setup Elasticsearch Cluster 8.x

Introduction

Code sur Github: Cluster Elasticsearch

Nous allons configurer un cluster Elasticsearch avec 5 nœuds différents. Nous intégrerons Kibana. Nous utiliserons des certificats auto-signés pour le protocole de transport Elasticsearch. Nous utiliserons des certificats Let's Encrypt signés publiquement pour l'API REST Elasticsearch.

Nous supposons que vous avez déjà créé des certificats SSL signés publiquement (par exemple, Let's Encrypt). Si vous n'en possédez pas encore,suivez ces instructions pour générer des certificats SSL Let's Encrypt gratuits.

Exigences

Cette vidéo utilisera six instances de machines virtuelles différentes d'un fournisseur de services cloud. Pour varier les plaisirs, certaines machines utiliseront Ubuntu 20.04, tandis que d'autres utiliseront Ubuntu 22.04.

Nous avons cartographié les domaines node1.evermight.net, node2.evermight.net, node3.evermight.net, node4.evermight.net, node5.evermight.net et kibana.evermight.net à chacune des 6 machines.

Mesures

Étape 1 - Mettre à jour Ubuntu [03:35]

Toutes les installations d'Ubuntu sont neuves. Nous mettons à jour la distribution et installons certains outils que nous utilisons habituellement sur toutes les machines.

apt-get update && apt dist-upgrade -y && apt-get install -y vim curl gnupg gpg

Étape 2 - Installer Elasticsearch [05:10]

Installer Elasticsearch sur node1 à node5 en exécutant ces commandes sur chacun d'eux.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; apt-get update; apt-get install -y apt-transport-https; apt-get install -y elasticsearch;

Étape 3 - Configurer node1.evermight.net [07:10]

Aller à node1.evermight.net.

Copier les certificats SSL :

mkdir -p /etc/elasticsearch/certs/node1.evermight.net/

Téléchargez vos certificats dans le répertoire.

Modifier elasticsearch.yml

Aller à la /etc/elasticsearch/elasticsearch.yml fichier. Modifiez les champs suivants :

cluster.name: es-demo node.name: node1 network.host: node1.evermight.net http.port: 9200 cluster.initial_master_nodes: ["node1"]

Elasticsearch.yml terminé disponible sur github

Note- Nous le faisons PAS utiliser le SSL signé publiquement pour http encore sur node1.evermight.net. Nous devons conserver les certificats auto-signés afin d'utiliser les outils de ligne de commande pour générer les jetons d'inscription que nos nœuds utiliseront pour rejoindre le cluster. Nous remplacerons les certificats auto-signés par les certificats publics lors de la dernière étape. Si nous devons à nouveau utiliser les outils de ligne de commande, nous devrons revenir aux certificats auto-signés.

Changer de propriétaire

chown -R elasticsearch:elasticsearch /etc/elasticsearch

Étape 4 - Démarrer node1.evermight.net [13:45]

Démarrez elasticsearch avec ces commandes :

systemctl enable elasticsearch; systemctl daemon-reload; systemctl start elasticsearch;

Réinitialiser le mot de passe élastique

Réinitialisez le mot de passe de l'utilisateur Elastic avec cette commande :

/usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u elastic

Saisissez un mot de passe lorsque vous y êtes invité.

Confirmez qu'Elasticsearch fonctionne avec cette commande :

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cluster/health?pretty

Et vous devriez voir quelque chose comme ceci :

Confirm Elasticsearch Node 1 Success

Autres commandes utiles

Les commandes suivantes peuvent également être utiles pour les vérifications d’état et les enquêtes :

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cat/nodes?pretty curl -k -u elastic:<password> https://node1.evermight.net:9200/_cat/master?pretty

Étape 5 - Configurer node2.evermight.net [16:10]

Rejoignez-nous avec un jeton d'inscription

Aller à node1.evermight.net et exécutez cette commande pour créer un jeton d'inscription :

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

Aller à node2.evermight.net et exécutez cette commande pour accepter le jeton d'inscription :

/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <paste the token>

Confirmer que le /etc/elasticsearch/elasticsearch.yml de node2.evermight.net a un discovery.seed_hosts qui mentionne l'adresse IP de node1.evermight.net.

Copier les certificats SSL :

mkdir -p /etc/elasticsearch/certs/node2.evermight.net/

Téléchargez vos certificats dans le répertoire.

Modifier elasticsearch.yml

Vous devez maintenant apporter quelques modifications finales au /etc/elasticsearch/elasticsearch.yml de node2.evermight.net. Modifiez ces champs :

cluster.name: es-demo node.name: node2 network.host: node2.evermight.net http.port: 9200 transport.host: 0.0.0.0 xpack.security.http.ssl: enabled: true key: certs/node2.evermight.net/privkey1.pem certificate: certs/node2.evermight.net/fullchain1.pem

Elasticsearch.yml terminé disponible sur github

Changer de propriétaire

chown -R elasticsearch:elasticsearch /etc/elasticsearch

Étape 6 - Démarrer node2.evermight.net [26:00]

Démarrez elasticsearch avec ces commandes :

systemctl enable elasticsearch; systemctl daemon-reload; systemctl start elasticsearch;

Confirmez qu'Elasticsearch fonctionne avec cette commande :

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cluster/health?pretty

Confirmez qu'il y a deux nœuds dans le cluster avec cette commande :

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cat/nodes?pretty

Vous pouvez également envoyer un ping node2.evermight.net pour des résultats similaires.

Étape 7 - Configurer et démarrer node3, node4 et node5 [27:26]

Vous pouvez répéter les étapes 5 et 6 pour node3.evermight.net, node4.evermight.net, node5.evermight.net.

Étape 8 - Nettoyer node1.evermight.net - initialmaîtrenœuds et SSL signé publiquement [30:10]

Retour à node1.evermight.net et éditer le /etc/elasticsearch/elasticsearch.yml d'utiliser le SSL signé public. xpack.security.http.ssl: enabled: true key: certs/node1.evermight.net/privkey1.pem certificate: certs/node1.evermight.net/fullchain1.pem

Commentez également le cluster.initial_master_nodes car cela devrait être entièrement déterminé par le cluster à chaque redémarrage.

Voici le elasticsearch.yml pour les redémarrages ultérieurs de node1.evermight.net.

Puis redémarrez node1.evermight.net

systemctl restart elasticsearch.service

Étape 9 - Mettre à jour les hôtes Seed [32:15]

Dans le /etc/elasticsearch/elasticsearch.yml de tous les nœuds, mettre à jour le discovery.seed_hosts pour référencer chaque nœud :

// replace with actual ip addresses discovery.seed_hosts: - 1.1.1.1 - 1.1.1.2 - 1.1.1.3 - 1.1.1.4 - 1.1.1.5

De cette façon, tout nœud qui quitte le cluster saura comment rejoindre le cluster en recherchant le discovery.seed_hosts.

Étape 10 - Installer Kibana [42:30]

Exécutez cette commande sur le kibana.evermight.net machine pour installer Kibana :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; apt-get install -y apt-transport-https; apt-get install -y kibana;

Étape 11 - Configurer Kibana [43:30]

Copier les certificats SSL :

Allez à votre kibana.evermight.net serveur et exécutez cette commande :

mkdir /etc/kibana/certs/kibana.evermight.net

Copiez ensuite vos certificats SSL dans le /etc/kibana/cert/kibana.evermight.net.

Modifier kibana.yml

Aller à la /etc/kibana/kibana.yml fichier. Modifiez les champs suivants :

server.port: 5601 server.host: 0.0.0.0 server.publicBaseUrl: "https://kibana.evermight.net:5601" server.ssl.enabled: true server.ssl.key: /etc/kibana/certs/kibana.evermight.net/priv1.key server.ssl.certificate: /etc/kibana/certs/kibana.evermight.net/fullchain1.pem elasticsearch.hosts: ["https://node1.evermight.net:9200"] elasticsearch.ssl.verificationMode: full

Note- Ajoutez uniquement les hôtes qui ont le /etc/elasticsearch/service_tokens au elasticsearch.hosts. Hôtes sans le service_tokens le fichier ne pourra pas authentifier Kibana.

Créer un jeton de service

Exécutez cette commande à partir de n’importe quel serveur :

curl -X POST -u elastic:<password> https://node1.evermight.net:9200/_security/service/elastic/kibana/credential/token/kibana_token

Copiez le jeton que vous voyez.

Exécutez cette commande sur le serveur Kibana : /usr/share/kibana/bin/kibana-keystore add elasticsearch.serviceAccountToken Collez le jeton après l’invite.

Étape 12 - Démarrer Kibana [52:30]

systemctl enable kibana; systemctl start kibana;

Vous pouvez désormais visiter https://kibana.evermight.net:5601/ et connectez-vous avec elastic et le mot de passe de l'étape 4.