motor de análisis de búsqueda elasticsearch

1. Instalación de Elasticsearch

1. Elasticsearch es un motor de análisis de búsqueda distribuido de código abierto basado en Apache Lucene, una biblioteca de motor de búsqueda de texto completo.
2. Elasticsearch no es solo Lucene, sino también un motor de búsqueda de texto completo:
un almacenamiento de documentos distribuido en tiempo real, cada campo se puede indexar y buscar,
un motor de búsqueda de análisis distribuido en tiempo real
puede ser competente para la expansión de cientos de nodos de servicio, y admite datos estructurados o no estructurados a nivel PB
3.
Clúster de módulo básico : administra el estado del clúster y mantiene la información de configuración a nivel del clúster.
alloction: encapsula funciones y estrategias relacionadas con la asignación de fragmentos.
descubrimiento: descubra los nodos en el clúster y elija el nodo principal.
Puerta de enlace: almacenamiento persistente de los datos del estado del clúster transmitidos por el maestro.
índices: administre la configuración del índice a nivel global.
http: permite el acceso a la API de ES a través de JSON sobre HTTP.
transporte: se utiliza para la comunicación interna entre los nodos del clúster.
motor: encapsula el funcionamiento de Lucene y llama a translog
4. Escenario de aplicación de Elasticsearch: recuperación de información análisis de registros análisis de datos comerciales aceleración de la base de datos monitoreo de indicadores de mantenimiento y operación

es 7.6 ayuda oficial
es descarga del paquete rpm

server1
rpm -ivh elasticsearch-7.6.1-x86_64.rpm  #7.6版本自带jdk,其他版本可能需要安装jdk
systemctl daemon-reload
systemctl enable elasticsearch
/var/lib/elasticsearch/nodes  #数据目录
/var/log/elasticsearch  #日志目录

Inserte la descripción de la imagen aquí

修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es #集群名称
node.name: server1 #主机名需要解析
path.data: /var/lib/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #锁定内存分配
network.host: 0.0.0.0 #主机ip
http.port: 9200 #http服务端口
discovery.seed_hosts: ["server1", "server2","server3"]
cluster.initial_master_nodes: ["server1"]

修改systemd启动文件
vim /usr/lib/systemd/system/elasticsearch.service
[Service]		#在service语句块下添加
LimitMEMLOCK=infinity
systemctl daemon-reload

修改系统限制
vim /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch 	   - 	nofile 	65536
elasticsearch	   -	nproc 	4096

vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
Xmx设置不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件系统缓存,但不要超过32G

systemctl restart elasticsearch.service

swapoff -a
vim /etc/fstab
curl localhost:9200

Inserte la descripción de la imagen aquí

elasticsearch分布式部署
server1已经安装好,2 3保持一致
scp elasticsearch-7.6.1-x86_64.rpm server2:
scp /etc/elasticsearch/elasticsearch.yml server2:/etc/elasticsearch/elasticsearch.yml  #改一下节点
scp /etc/security/limits.conf server2:/etc/security/limits.conf
scp /usr/lib/systemd/system/elasticsearch.service server2:/usr/lib/systemd/system/elasticsearch.service

curl -X GET "localhost:9200/_cluster/health?wait_for_status=yellow&timeout=50s&pretty"

Inserte la descripción de la imagen aquí

2. Instalación del complemento Elasticsearch

El
clúster de elasticsearch-head es solo se puede controlar a través de la API, así que instale el código de extracción de nodejs del
software de descarga del complemento : rhkq
Inserte la descripción de la imagen aquí

集群内只需在一个节点安装
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
yum install unzip -y
unzip elasticsearch-head-master.zip

head插件本质上是一个nodejs的工程,因此需要安装node
rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm
node -v
npm -v

yum install bzip2 -y  
npm install -g cnpm --registry=https://registry.npm.taobao.org  #更换npm源安装,单次使用淘宝源
cd /root/elasticsearch-head-master
vim _site/app.js  #修改ES主机ip和端口

vim /etc/elasticsearch/elasticsearch.yml  #修改ES跨域主持
http.cors.enabled: true	# 是否支持跨域
http.cors.allow-origin: "*"	# *表示支持所有域名
cnpm install
cnpm run start &

vim /root/elasticsearch-head-master/Gruntfile.js  #监听端口
另一种安装nodejs,epel源
vim /etc/yum.repos.d/epel.repo
[epel]
name=aliyun epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
yum install nodejs -y  #nodejs.x86_64 1:6.17.1-1.el7,版本有点低,导致cnpm安装不了
npm install -g n  #升级下nodejs
n stable
/usr/local/bin/npm -v  #可以写到环境变量
npm config set registry https://registry.npm.taobao.org  #永久使用
npm install -g cnpm
yum install unzip bzip2 -y  
cnpm install  #安装时会用到bzip2

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Ver el estado del clúster ES, un segmento en el servidor1, el servidor3 es una copia, el
gris indica que no hay copia y el
amarillo indica que no se ha perdido ningún fragmento principal.
Inserte la descripción de la imagen aquí

Tres. Rol de nodo de Elasticsearch

Master :
Principalmente responsable de operaciones como la creación y borrado de índices en el cluster y el Rebalance de datos. El Maestro no es responsable de la indexación y recuperación de datos, por lo que la carga es más liviana. Cuando el nodo maestro pierde la conexión o se cuelga, el clúster ES elegirá automáticamente un
nodo de datos líder de otros nodos maestros : es el
principal responsable de la indexación y recuperación de datos en el clúster. Generalmente, la presión es relativamente alta.
Nodo de coordinación : el
nodo Cliente original, principalmente La función es distribuir solicitudes y fusionar resultados. Todos los nodos son el nodo de coordinación de forma predeterminada, y este atributo no se puede desactivar.
Nodo de ingesta :
preprocese los documentos indexados específicamente

1. En el entorno de producción, si no modifica la información de función del nodo de elasticsearch, el clúster es propenso a problemas como el cerebro dividido en la escena de un gran volumen de datos y alta concurrencia.
2. De forma predeterminada, cada nodo del clúster de elasticsearch tiene la calificación para convertirse en el nodo principal, también almacena datos y también puede proporcionar servicios de consulta.
3. El rol del nodo está controlado por los siguientes atributos:
node.master: false | true Este atributo indica si el nodo tiene la calificación para convertirse en el nodo maestro. Nota: El valor de este atributo es verdadero, lo que no significa que el nodo es el nodo maestro. Debido a que el nodo maestro real es elegido por varios nodos con calificaciones de nodo maestro
node.data: true | false Este atributo indica si el nodo almacena datos
node.ingest: true | false si preprocesar el documento
search.remote .connect: true | false Si se deshabilita la consulta entre clústeres
De forma predeterminada, los valores de estas propiedades son todos verdaderos.
Inserte la descripción de la imagen aquí
Esta combinación significa que este nodo es elegible para convertirse en el nodo principal y almacena datos. Si se elige un nodo para que se convierta en el nodo maestro real, entonces tiene que almacenar datos, por lo que la presión sobre este nodo será mayor. Esto está bien en el entorno de prueba, pero esta configuración no se recomienda en el trabajo real

Cuatro. Optimización de nodos de Elasticsearch

1. Diferentes nodos La
primera combinación: (nodo de datos)
node.master: false
node.data: true
node.ingest: false
search.remote.connect: false
Esta combinación significa que este nodo no es elegible para convertirse en el nodo principal, y No participe en las elecciones, solo almacene datos.
Este nodo se llama nodo de datos. Varios de estos nodos deben configurarse por separado en el clúster para que sean responsables del almacenamiento de datos. Los servicios de almacenamiento y consulta se proporcionarán más adelante.
La segunda combinación: (nodo principal)
node.master: true
node.data: false
node.ingest: false
search.remote.connect: false
Esta combinación significa que este nodo no almacenará datos, y se ha convertido en La calificación del nodo maestro puede participar en la elección, y es posible convertirse en un nodo maestro real.
A este nodo lo llamamos nodo maestro. La
tercera combinación: (Nodo de coordinación)
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false
Esta combinación significa que este nodo no se convertirá en el nodo principal , Y no almacenará datos.
El significado de este nodo es actuar como un nodo de coordinación, principalmente para el balanceo de carga cuando se realizan solicitudes masivas. La
cuarta combinación: (Ingest Node)
node.master: false
node.data: false
node.ingest: true
search.remote.connect: false
Esta combinación significa que este nodo no se convertirá en el nodo maestro ni almacenará datos.
El significado de este nodo es el nodo de ingesta. Los documentos están preprocesados
. 2. Las responsabilidades de estos nodos se pueden dividir en el clúster de producción. Se
recomienda configurar más de 3 nodos en el clúster como nodos maestros. Estos nodos solo son responsables de convertirse en el nodo maestro y mantener el estado de todo el grupo.
Luego configure un lote de nodos de datos de acuerdo con la cantidad de datos, estos nodos solo son responsables de almacenar datos y luego brindan servicios de indexación y consulta. De esta manera, si el usuario solicita con mayor frecuencia, la presión sobre estos nodos también aumentará. ser mayor.
Por lo tanto, se recomienda configurar un lote de nodos de coordinación en el clúster. Estos nodos solo son responsables de procesar las solicitudes de los usuarios, realizar el reenvío de solicitudes, el equilibrio de carga y otras funciones
. 3. Requisitos de los nodos Nodo
maestro: servidor normal (CPU, memoria el consumo es general)
Nodo de datos: Principal Consume disco y memoria.
path.data:
la configuración de data1, data2 y data3 puede causar una escritura de datos desigual. Se recomienda especificar solo una ruta de datos. Los discos pueden usar matrices raid0 en lugar de SSD de alto costo.
Nodos de coordinación: requisitos más altos para cpu y memoria

Supongo que te gusta

Origin blog.csdn.net/qq_49564346/article/details/114578360
Recomendado
Clasificación