N'oubliez pas Centos7.4 pour créer manuellement un cluster Elasticsearch 7.4.0

Groupe d'échange QQ: 64655993 J'espère que cela pourra vous aider! ! !

Site officiel: 

https://www.elastic.co/cn/products/elasticsearch

1. Description de l'environnement de base

1. Description du système

Système: CentOS-7-x86_64-Minimal-1708

lien de téléchargement: 

 http://archive.kernel.org/centos-vault/7.4.1708/isos/x86_64/   

2. Installez la machine virtuelle

Installez 3 machines virtuelles (le nombre de nœuds dans l'environnement de production dépend des exigences métier spécifiques)

Chaque configuration de machine virtuelle: mémoire 3G, processeur à 2 cœurs

Reportez-vous au processus d'installation:

https://blog.csdn.net/llwy1428/article/details/89328381

3. Adresse de téléchargement d'Elasticsearch

https://www.elastic.co/cn/

https://www.elastic.co/cn/start

2. Configuration de l'environnement de base

1. Modifiez le nom d'hôte

Modifiez le nom d'hôte de chaque nœud du cluster (les noms d'hôte des trois nœuds de ce cluster sont node3.cn node4.cn node5.cn)

Prenez node3.cn comme exemple:

[root@localhost~]# hostnamectl set-hostname node3.cn

node4.cn et node5.cn sont omis.

2. Configurez le réseau de la machine virtuelle, chaque machine virtuelle est connectée à Internet (et définissez une adresse IP statique)

La configuration de la carte réseau peut faire référence à:

https://blog.csdn.net/llwy1428/article/details/85058028

Définir une adresse IP statique

Ici, prenez le nœud node3.cn comme exemple (reportez-vous à ce nœud pour la configuration des autres nœuds du cluster, et notez que l'ip est unique):

[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

node3.cn的IP是:   IPADDR=192.168.11.133
node4.cn的IP是:   IPADDR=192.168.11.134
node5.cn的IP是:   IPADDR=192.168.11.135

Remarque: la boîte rouge est la pièce modifiée et ajoutée

Enregistrer et quitter après modification  

 :wq

Redémarrez le service réseau

[root@node3 ~]# service network restart

Peut se référer à:

https://blog.csdn.net/llwy1428/article/details/85058028

La configuration des autres nœuds du cluster fait référence à ce nœud.

3. Installez les outils de base (tous les nœuds doivent être installés)

[root@node3 ~]# yum install -y vim wget lrzsz tree zip unzip net-tools ntp
[root@node3 ~]# yum update -y (可选)

4. (Facultatif) Installez et configurez JDK pour chaque nœud du cluster (es7.x nécessite jdk11 ou supérieur, et openjdk est inclus dans le package d'installation)

JDK doit être installé sur chaque nœud du cluster

Référence des étapes spécifiques:

 https://blog.csdn.net/llwy1428/article/details/85232267

5. Configurer le pare-feu

Désactivez le pare-feu et définissez le démarrage pour interdire le démarrage

关闭防火墙  : systemctl stop firewalld
查看状态    : systemctl status firewalld
开机禁用    : systemctl disable firewalld

6. Configurez le fichier hôte

Voici le nœud node3.cn à titre d'exemple, les autres nœuds du cluster sont les mêmes que node3.cn:

[root@node3 ~]# vim /etc/hosts

7. Configurer la synchronisation de l'heure entre les nœuds

Cet article est basé sur le serveur de temps Aliyun, l'adresse du serveur de temps Aliyun: ntp6.aliyun.com

Remarque: s'il existe un serveur de temps dédié, modifiez le nom d'hôte ou l'adresse IP du serveur de temps. Le nom d'hôte doit être mappé dans le fichier etc / hosts.

Prenez node3.cn comme exemple:

Définir le fuseau horaire du système sur Dongba District (Shanghai Time Zone)

[root@node3 ~]# timedatectl set-timezone Asia/Shanghai

Désactivez le service ntpd (cette étape doit être effectuée, sinon l'heure de synchronisation automatique sera invalide)

[root@node3 ~]# systemctl stop ntpd.service

Définir le service ntpd pour interdire le démarrage

[root@node3 ~]# systemctl disable ntpd

Configurer une tâche planifiée

[root@node3 ~]# crontab -e

Écrivez ce qui suit (synchronisez avec le serveur de temps Alibaba Cloud toutes les 10 minutes):

0-59/10 * * * * /usr/sbin/ntpdate ntp6.aliyun.com

Redémarrez le service de tâches planifiées

[root@node3 ~]# /bin/systemctl restart crond.service

Définir des tâches chronométrées pour démarrer

[root@node3 ~]# vim /etc/rc.local

Après avoir ajouté le contenu suivant, enregistrez et quittez   

 :wq
/bin/systemctl start crond.service

Les autres nœuds du cluster sont les mêmes que le nœud node3.cn.

8. Configurez l'environnement système en UTF8

Prenez node3.cn comme exemple:

[root@node3 ~]# echo "export LANG=zh_CN.UTF-8 " >> ~/.bashrc
[root@node3 ~]# source ~/.bashrc

Les autres nœuds du cluster sont les mêmes que le nœud node3.cn.

9. Modifier le nombre maximum de fichiers ouverts (environnement hors production, aucune configuration requise)

Voici un exemple de node3.cn:

[root@node3 ~]# vim /etc/security/limits.conf
* soft nofile 204800
* hard nofile 204800
* soft nproc 204800
* hard nproc 204800

[root@node3 ~]# vim /etc/security/limits.d/20-nproc.conf
* soft nproc 204800
* hard nproc 204800

[root@node3 ~]# vim /etc/pam.d/login
session    required     pam_limits.so

La configuration des autres nœuds du cluster est la même que node3.cn

10. Désactivez SELinux (facultatif)

Prenez node3.cn comme exemple:

[root@node3 ~]# vim /etc/selinux/config

Après avoir modifié le contenu suivant, enregistrez et quittez    

:wq

La configuration des autres nœuds du cluster est la même que node3.cn.

11. Désactivez les HugePages transparentes (facultatif)

Prenez node3.cn comme exemple:

Vue

[root@node3 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
效果:
[always] madvise never
[root@node3 ~]# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
[root@node3 ~]# chmod +x /etc/rc.d/rc.local

Après le redémarrage du système, il prendra effet de manière permanente.

Vérifiez après le redémarrage du système:

[root@node3 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
效果:   
always madvise [never]

La configuration des autres nœuds du cluster est la même que node3.cn.

12. Configurez la mémoire /etc/sysctl.conf

[root@node3 ~]# vim /etc/sysctl.conf
写入(根据自身硬件条件而定,其它节点于此相同)
vm.max_map_count=262144

Troisièmement, déploiement et configuration du cluster Elasticsearch

1. Créez un dossier / opt / elasticsearch / pour chaque nœud  

[root@node3 ~]# mkdir /opt/elasticsearch/

2. Téléchargez le fichier rz

Téléchargez le package compressé (elasticsearch-7.4.0-linux-x86_64.tar.gz) sur le site officiel sur le site local, puis utilisez rz ou d'autres outils ftp tiers pour télécharger le package d'installation dans le répertoire désigné du nœud 3 (le réseau autorise les conditions Télécharger, vous pouvez également utiliser wget pour télécharger directement)

[root@node3 elasticsearch]# rz

Après le téléchargement, décompressez le package compressé

[root@node3 elasticsearch]# tar zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz

Afficher le dossier décompressé

3. Modifiez le fichier de configuration elasticsearch.yml

[root@node3 ~]# vim /opt/elasticsearch/elasticsearch-7.0.0/config/elasticsearch.yml

Le contenu du fichier est le suivant (voir la fin de l'article pour la description des paramètres spécifiques):

# ---------------------------------- Cluster ---
cluster.name: es-cluster
# ------------------------------------ Node ---
# 注意:每个节点的名字(node.name)不要相同
node.name: node3.cn
node.master: true
node.data: true
# ----------------------------------- Paths ---
path.data: /opt/elasticsearch/elasticsearch-7.4.0/data
path.logs: /opt/elasticsearch/elasticsearch-7.4.0/logs
# ---------------------------------- Network ---
network.host: 0.0.0.0
http.port: 9200
# --------------------------------- Discovery ---
cluster.initial_master_nodes: ["node3.cn", "node4.cn","node5.cn"]
discovery.zen.ping.unicast.hosts: ["192.168.11.133", "192.168.11.134","192.168.11.135"]
discovery.zen.minimum_master_nodes: 2

Modifier le fichier de configuration elasticsearch-env

[root@node3 ~]# vi /opt/elasticsearch/elasticsearch-7.4.0/bin/elasticsearch-env
JAVA_HOME="/opt/elasticsearch/elasticsearch-7.4.0/jdk"

4. Distribuez les fichiers

Envoyez tous les fichiers es qui ont été configurés sur le nœud node3 dans le même répertoire de tous les nœuds du cluster (vous serez invité à entrer le mot de passe de l'utilisateur root du nœud respectif)

[root@node3 ~]# scp -r /opt/elasticsearch/elasticsearch-7.4.0 node4.cn:/opt/elasticsearch/  
[root@node3 ~]# scp -r /opt/elasticsearch/elasticsearch-7.4.0 node5.cn:/opt/elasticsearch/

Editez le fichier elasticsearch.yml sur node4 et node5 respectivement

Modifiez le node.name respectif (faites attention à distinguer le node.name pour vous assurer que le node.name est unique dans le cluster)

[root@node4 ~]# vim /opt/elasticsearch/elasticsearch-7.4.0/config/elasticsearch.yml
[root@node5 ~]# vim /opt/elasticsearch/elasticsearch-7.4.0/config/elasticsearch.yml

Quitter après l'enregistrement: wq

5. Créez des groupes d'utilisateurs et des informations sur les utilisateurs

[root@node3 ~]# groupadd es
[root@node3 ~]# useradd es -g es
[root@node3 ~]# chown -R es:es /opt/elasticsearch/*

Les opérations des autres nœuds du cluster sont les mêmes que pour node3.

6, démarrez le service

Changer d'utilisateur

[root@node3 ~]# su es
[es@node3 ~]$ /opt/elasticsearch/elasticsearch-7.4.0/bin/elasticsearch -d

Effet de démarrage réussi:

Les opérations des autres nœuds sont les mêmes que pour node3.

7. Vérifiez la situation de démarrage

[root@node3 ~]$ jps

Vous pouvez également vérifier l'état de démarrage du service sur d'autres nœuds.

8. Afficher le résultat de démarrage dans le navigateur

Tapez dans le navigateur  

http://192.168.11.133:9200/
http://192.168.11.134:9200/
http://192.168.11.135:9200/

L'effet est le suivant:

 

À ce stade, Centos 7.4 crée manuellement une opération de cluster Elasticsearch 7 est terminée.

 

Il existe des outils de visualisation pour observer visuellement des informations plus détaillées dans Elasticsearch.

Nyo: elasticsearch-head, Kibana, ElasticHD, etc.

ElasticHD: étapes de construction:

Référence: https://hunter.blog.csdn.net/article/details/89326527

Étapes de construction de la tête Elasticsearch:

Référence: https://hunter.blog.csdn.net/article/details/102336223

Étapes de construction de Kibana:

Référence: https://blog.csdn.net/llwy1428/article/details/89326461

4. Problèmes et solutions possibles (mise à jour continue)

1. Après le démarrage, le service se bloque automatiquement après un certain temps, vérifiez le journal et signalez l'erreur suivante:

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Le problème est traduit: les permissions de mémoire détenues par les utilisateurs d'elasticsearch sont trop petites, au moins 262144 sont nécessaires;

Afficher la mémoire actuelle

[root@node3 ~]# sysctl -a|grep vm.max_map_count

 

Solution:

Editez le fichier sysctl.conf

[root@node3 ~]# vim /etc/sysctl.conf

Ajouter une ligne à la fin

vm.max_map_count=262144

Après l'enregistrement, redémarrez le système pour un effet permanent.

(Les opérations des autres nœuds du cluster sont les mêmes que celles de node3)

2. Le service n'a pas pu démarrer

[2019-04-29T22:13:53,403][ERROR][o.e.b.Bootstrap          ] [node3.cn] Exception
java.lang.RuntimeException: can not run elasticsearch as root

La cause du problème: elasticsearch n'est pas autorisé à démarrer sous les privilèges root et doit être basculé vers l'utilisateur es.

Solution: reportez-vous aux étapes 4 et 5 de la partie III

3. Démarrez une erreur après avoir changé d'utilisateur es

2019-04-29 22:40:55,736 main ERROR Unable to locate appender "rolling_old" for logger config "root"

La cause du problème: dans le répertoire des journaux par défaut, il y a des fichiers avec des autorisations utilisateur non-es

Solution: sous l'utilisateur root, attribuez tous les fichiers du répertoire du journal elasticsearch à l'utilisateur es

[root@node3 ~]# chmod -R es:es /opt/elasticsearch/elasticsearch-7.4.0/logs/*

4. Une erreur est signalée au démarrage. La version jdk est trop basse et jdk11 ou supérieur est requis

Modifier le fichier elasticsearch-env

[root@node3 ~]# vi /opt/elasticsearch/elasticsearch-7.4.0/bin/elasticsearch-env
开头写入(各节点都要操作)
JAVA_HOME="/opt/elasticsearch/elasticsearch-7.4.0/jdk"

Cinq, description des paramètres

cluster.name: Elasticsearch 
configure le nom de cluster de ES. La valeur par défaut est elasticsearch. ES trouvera automatiquement ES sous le même segment de réseau. S'il existe plusieurs clusters sous le même segment de réseau, vous pouvez utiliser cet attribut pour distinguer différents clusters.

node.name:
nom du nœud "node1.cn" . Par défaut, un nom dans la liste de noms est assigné aléatoirement. La liste se trouve dans le fichier name.txt  dans le dossier config du package es jar. Il y a beaucoup de noms intéressants ajoutés par l'auteur.

node.master: true 
spécifie si le nœud est éligible pour être élu en tant que nœud. La valeur par défaut est true. es est la première machine du cluster par défaut en tant que maître. Si cette machine raccroche, elle réélira le maître.

node.data: true 
spécifie si le nœud stocke les données d'index, la valeur par défaut est true.

index.number_of_shards: 5 
Définissez le nombre par défaut de fragments d'index, la valeur par défaut est 5 fragments.

index.number_of_replicas: 1 
Définissez le nombre par défaut de répliques d'index, la valeur par défaut est 1 réplique.

path.conf: / path / to / conf 
définit le chemin de stockage du fichier de configuration, la valeur par défaut est le dossier config sous le répertoire racine es.

path.data: / path / to / data 
Définit le chemin de stockage des données d'index. La valeur par défaut est le dossier de données sous le répertoire racine es. Plusieurs chemins de stockage peuvent être définis, séparés par des virgules, par exemple: 
path.data: / path / to / data1, / chemin / vers / data2

path.work: / path / to / work 
définit le chemin de stockage des fichiers temporaires, la valeur par défaut est le dossier de travail sous le répertoire racine es.

path.logs: / path / to / logs 
définit le chemin de stockage du fichier journal, la valeur par défaut est le dossier logs sous le répertoire racine es

path.plugins: / path / to / plugins 
définit le chemin de stockage du plugin, la valeur par défaut est le dossier plugins sous le répertoire racine es

bootstrap.mlockall: true est 
défini sur true pour verrouiller la mémoire. Étant donné que l'efficacité de es sera réduite lorsque jvm commencera à swap, vous pouvez donc définir les deux variables d'environnement ES_MIN_MEM et ES_MAX_MEM sur la même valeur et vous assurer que la machine dispose de suffisamment de mémoire allouée à es. Dans le même temps, le processus elasticsearch doit être autorisé à verrouiller la mémoire.Vous pouvez utiliser la commande ulimit -l unlimited sous Linux.

network.bind_host: 192.168.0.1 
définit l'adresse IP liée, qui peut être ipv4 ou ipv6, et la valeur par défaut est 0.0.0.0.

network.publish_host: 192.168.0.1 
définit l'adresse IP des autres nœuds pour interagir avec le nœud. Si elle n'est pas définie, il la déterminera automatiquement. La valeur doit être une véritable adresse IP.

network.host: 192.168.0.1 
Ce paramètre est utilisé pour définir les deux paramètres ci-dessus bind_host et publish_host en même temps.

transport.tcp.port: 9300 
définit le port tcp pour l'interaction entre les nœuds, la valeur par défaut est 9300.

transport.tcp.compress: true 
définit s'il faut compresser les données lors de la transmission tcp, la valeur par défaut est false, pas de compression.

http.port: 9200 
définit le port http pour les services externes, la valeur par défaut est 9200.

http.max_content_length: 100 Mo 
définit la capacité maximale du contenu, la valeur par défaut est 100 Mo

http.enabled: false Indique s'il 
faut utiliser le protocole http pour fournir des services externes, la valeur par défaut est true et elle est activée.

gateway.type:
type de passerelle locale  . La valeur par défaut est locale, c'est-à-dire le système de fichiers local. Il peut être défini sur le système de fichiers local, le système de fichiers distribué, le HDFS d'Hadoop et le serveur s3 d'Amazon. La méthode de configuration des autres systèmes de fichiers sera détaillée la prochaine fois Dire.

gateway.recover_after_nodes: 1 
Définissez la récupération des données lorsque N nœuds du cluster démarrent, la valeur par défaut est 1.

gateway.recover_after_time: 5m 
définit le délai d'expiration du processus de récupération des données d'initialisation, la valeur par défaut est de 5 minutes.

gateway.expected_nodes: 2 
Définissez le nombre de nœuds dans ce cluster. La valeur par défaut est 2. Une fois ces N nœuds démarrés, les données seront restaurées immédiatement.

cluster.routing.allocation.node_initial_primaries_recoveries: 4 Lors de l' 
initialisation de la récupération de données, le nombre de threads de récupération simultanés, la valeur par défaut est 4.

cluster.routing.allocation.node_concurrent_recoveries: 2 
Ajoutez le nombre de threads de récupération simultanés lors de la suppression de nœuds ou de l'équilibrage de charge, la valeur par défaut est 4.

indices.recovery.max_size_per_sec: 0 
Définissez la limite de bande passante pendant la récupération de données, par exemple 100 Mo, la valeur par défaut est 0, c'est-à-dire illimitée.

indices.recovery.concurrent_streams: 5 
Définissez ce paramètre pour limiter le nombre maximal de flux simultanés ouverts simultanément lors de la récupération de données à partir d'autres fragments. La valeur par défaut est 5.

discovery.zen.minimum_master_nodes: 1 
Définissez ce paramètre pour vous assurer que les nœuds du cluster peuvent connaître d'autres N nœuds qualifiés de maîtres. La valeur par défaut est 1, pour les grands clusters, vous pouvez définir une valeur plus grande (2-4)

discovery.zen.ping.timeout: 3s 
définit le délai d'expiration de la connexion ping lorsque d'autres nœuds sont automatiquement découverts dans le cluster. La valeur par défaut est de 3 secondes. Pour les environnements réseau pauvres, une valeur plus élevée peut être utilisée pour éviter les erreurs lors de la découverte automatique.

discovery.zen.ping.multicast.enabled: false 
Définissez s'il faut ouvrir le nœud de découverte de multidiffusion, la valeur par défaut est true.

discovery.zen.ping.unicast.hosts: ["host1", "host2: port", "host3 [portX-portY]"] 
définit la liste initiale des nœuds maîtres dans le cluster, et ces nœuds peuvent être utilisés pour découvrir automatiquement les clusters nouvellement ajoutés nœud.

Voici quelques réglages de paramètres de journal lent pour la 
requête index.search.slowlog.level: TRACE 
index.search.slowlog.threshold.query.warn: 10s 
index.search.slowlog.threshold.query.info: 5s 
index.search.slowlog .threshold.query.debug: 2s 
index.search.slowlog.threshold.query.trace: 500ms

index.search.slowlog.threshold.fetch.warn: 1s 
index.search.slowlog.threshold.fetch.info: 800ms 
index.search.slowlog.threshold.fetch.debug: 500ms 
index.search.slowlog.threshold.fetch.trace : 200 ms
 

Six, extension --- installation du plug-in

1. Analyse du plugin de segmentation de mots internationalisé-icu

[es@node3 ~]$ /opt/elasticsearch/elasticsearch-7.4.0/bin/elasticsearch-plugin install analysis-icu

2. Afficher les plug-ins installés dans le navigateur

http://192.168.11.133:9200/_cat/plugins

3. Afficher les autres plug-ins pouvant être installés directement

[es@node3 ~]$ /opt/elasticsearch/elasticsearch-7.4.0/bin/elasticsearch-plugin install -h

 

 

 

Adresse de référence:

https://blog.csdn.net/u012637358/article/details/80994945

Fonctionnement de base ES

https://www.cnblogs.com/zeenzhou/p/11588629.html

Je suppose que tu aimes

Origine blog.csdn.net/llwy1428/article/details/89714709
conseillé
Classement