
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 :
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.