保姆级Elasticsearch集群部署指导

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云防火墙,500元 1000GB
简介: 保姆级Elasticsearch集群部署指导

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。

Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。

今天主要介绍Elasticsearch集群部署。

一、解压软件

# 解压缩

tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /opt/module

# 改名

mv elasticsearch-7.8.0 es-cluster

二、分别安装

创建用户

因为安全问题, elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户。

useradd es #新增 es 用户

passwd es #为 es 用户设置密码

userdel -r es #如果错了,可以删除再加

修改配置文件—node-1

修改/opt/module/es/config/elasticsearch.yml 文件,分发文件。

# 加入如下配置

#集群名称

cluster.name: cluster-es

#节点名称, 每个节点的名称不能重复

node.name: node-1

#ip 地址, 每个节点的地址不能重复

network.host: 0.0.0.0

#是不是有资格主节点

node.master: true

node.data: true

http.port: 9200

#集群默认是 9300,也可以省略

transport.tcp.port: 9300

# head 插件需要这打开这两个配置

http.cors.allow-origin: "*"

http.cors.enabled: true

http.max_content_length: 200mb

#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master

cluster.initial_master_nodes: ["node-1"]

#es7.x 之后新增的配置,节点发现

discovery.seed_hosts: ["192.168.59.142:9300"," 192.168.59.145 :9300"," 192.168.59.146:9300"]

gateway.recover_after_nodes: 2

network.tcp.keep_alive: true

network.tcp.no_delay: true

transport.tcp.compress: true

#集群内同时启动的数据任务个数,默认是 2 个

cluster.routing.allocation.cluster_concurrent_rebalance: 16

#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个

cluster.routing.allocation.node_concurrent_recoveries: 16

#初始化数据恢复时,并发恢复线程的个数,默认 4 个

cluster.routing.allocation.node_initial_primaries_recoveries: 16

为 es 用户配置权限

chown -R es:es /opt/module/es

修改/etc/security/limits.conf ,分发文件

# 在文件末尾中增加下面内容

es soft nofile 65536

es hard nofile 65536

修改/etc/security/limits.d/20-nproc.conf,分发文件

# 在文件末尾中增加下面内容

es soft nofile 65536

es hard nofile 65536

* hard nproc 4096

# 注:* 带表 Linux 所有用户名称

修改/etc/sysctl.conf

# 在文件中增加下面内容

vm.max_map_count=655360

重新加载

sysctl -p

修改配置文件—node-2

# 加入如下配置

#集群名称

cluster.name: cluster-es

#节点名称, 每个节点的名称不能重复

node.name: node-2

#ip 地址, 每个节点的地址不能重复

network.host: 0.0.0.0

#是不是有资格主节点

node.master: true

node.data: true

http.port: 9200

#集群默认是 9300,也可以省略

transport.tcp.port: 9300

# head 插件需要这打开这两个配置

http.cors.allow-origin: "*"

http.cors.enabled: true

http.max_content_length: 200mb

#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master

cluster.initial_master_nodes: ["node-1"]

#es7.x 之后新增的配置,节点发现

discovery.seed_hosts:["192.168.59.142:9300"," 192.168.59.145 :9300"," 192.168.59.146:9300"]

gateway.recover_after_nodes: 2

network.tcp.keep_alive: true

network.tcp.no_delay: true

transport.tcp.compress: true

#集群内同时启动的数据任务个数,默认是 2 个

cluster.routing.allocation.cluster_concurrent_rebalance: 16

#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个

cluster.routing.allocation.node_concurrent_recoveries: 16

#初始化数据恢复时,并发恢复线程的个数,默认 4 个

cluster.routing.allocation.node_initial_primaries_recoveries: 16

修改配置文件—node-3

# 加入如下配置

#集群名称

cluster.name: cluster-es

#节点名称, 每个节点的名称不能重复

node.name: node-3

#ip 地址, 每个节点的地址不能重复

network.host: 0.0.0.0

#是不是有资格主节点

node.master: true

node.data: true

http.port: 9200

#集群默认是 9300,也可以省略

transport.tcp.port: 9300

# head 插件需要这打开这两个配置

http.cors.allow-origin: "*"

http.cors.enabled: true

http.max_content_length: 200mb

#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master

cluster.initial_master_nodes: ["node-1"]

#es7.x 之后新增的配置,节点发现

discovery.seed_hosts: ["192.168.59.142:9300","192.168.59.145:9300","192.168.59.146:9300"]

gateway.recover_after_nodes: 2

network.tcp.keep_alive: true

network.tcp.no_delay: true

transport.tcp.compress: true

#集群内同时启动的数据任务个数,默认是 2 个

cluster.routing.allocation.cluster_concurrent_rebalance: 16

#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个

cluster.routing.allocation.node_concurrent_recoveries: 16

#初始化数据恢复时,并发恢复线程的个数,默认 4 个

cluster.routing.allocation.node_initial_primaries_recoveries: 16

三、启动软件

./elasticsearch -d

关闭防火墙

systemctl stop firewalld

#永久关闭防火墙

systemctl enable firewalld.service #打开防火墙永久性生效,重启后不会复原

systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原

四、测试集群

192.168.59.143:9200/_cat/nodes

五、使用可视化集群工具 cerebro

下载安装包

https://github.com/lmenezes/cerebro/releases

rpm -ivh cerebro-0.9.4-1.noarch.rpm

并安装JDK11

yum install java-11-openjdk.x86_64 java-11-openjdk-devel

cd /usr/share/cerebro/conf

cp application.conf  application.conf_default

vim application.conf

指定cerebro.db的路径

注释掉data.path ="./cerebro.db

"取消data.path:"/var/lib/cerebro/cerebro.db"的注释

修改成如下data.path: "/var/lib/cerebro/cerebro.db"

#data.path = "./cerebro.db"

2)、例如端口修改为9001端口

server.http.port = ${?CEREBRO_PORT}

修改为server.http.port = 9001

systemctl start cerebro.service

netstat -anp | grep 9001

六、浏览器登陆http://192.168.59.142:9001,看到开始页面即为成功。

Node address输入es集群master节点的一个地址  http://192.168.59.142:9200

使用logstash迁移es集群数据

安装logstash服务。

logstash主目录下:vim es-es.conf

input {

elasticsearch {

hosts => ["X.X.X.X", "X.X.X.X", "X.X.X.X", "X.X.X.X", "X.X.X.X"]   源地址

# user => "*******"

# password => "*********"

index => "*"

size => 1000

scroll => "1m"

}

}

filter {

mutate {

remove_field => ["@timestamp", "@version"]

}

}

output {

elasticsearch {

hosts => ["X.X.X.X", "X.X.X.X", "X.X.X.X", "X.X.X.X", "X.X.X.X"]  目的地址

# user => "********"

# password => "**********"

index => "%{[@metadata][_index]}"

}

}

启动:logstash -f es-es.conf

附ES一键部署脚本

#!/bin/bash

echo -e "\e[31m********一键安装ES任何版本数据库********\e[0m"

echo -e "输入安装版本,如\e[31m7.7.7\e[0m"

read version

find / -name elasticsearch | xargs rm -rf

port=$(netstat -antup|grep elasticsearch|wc -l)

if [ $port != 0 ]

then echo "elasticsearch进程存在,请先杀掉进程"

ps -ef |grep elasticsearch

exit 1

fi

mkdir -p /usr/local/src

mv jdk-8u131-linux-x64.tar.gz  /usr/local

tar -xvf jdk-8u131-linux-x64.tar.gz

cat <<EOF >>/etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_131

PATH=${JAVA_HOME}/bin:$PATH

EOF

source /etc/profile

cp elasticsearch-$version-linux-x86_64.tar.gz /usr/local/src

tar -xvf elasticsearch-$version-linux-x86_64.tar.gz

mv elasticsearch-$version elasticsearch7.8

cd /usr/local/src/elasticsearch7.8

mkdir data

cd  config

cat <<EOF >>/usr/local/src/elasticsearch7.8/config/elasticsearch.yml

cluster.name: elasticsearch

node.name: node1

path.data: /usr/local/src/elasticsearch7.8/data

path.logs: /usr/local/src/elasticsearch7.8/logs

http.port: 9200

network.host: 0.0.0.0

cluster.initial_master_nodes: ["node1"]

EOF

cat <<EOF >>jvm.options

-Xms512m

-Xmx512m

EOF

useradd elastic

chown -R elastic:elastic /usr/local/src/elasticsearch7.8

cat <<EOF >>/etc/security/limits.conf

* soft nofile 65536

* hard nofile 131072

* soft nproc 4096

* hard nproc 4096

EOF

cat <<EOF >>/etc/sysctl.conf

vm.max_map_count = 262144

EOF

sysctl -p

su - elastic -c /usr/local/src/elasticsearch7.8/bin/elasticsearch -d

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
自然语言处理 搜索推荐 Java
服务搭建篇(七) Elasticsearch单节点部署以及多节点集群部署
Elasticsearch(简称ES) 是一个分布式 , RESTful风格的搜索和数据分析引擎 , 使用java开发并且是当前最流行的开源的企业级搜索引擎,能够达到近实时搜索,稳定,可靠,快速,安装使用方便。
1255 0
|
前端开发 Java 数据安全/隐私保护
【2022】Elasticsearch-7.17.6集群部署
【2022】Elasticsearch-7.17.6集群部署
831 0
|
运维 安全 Java
Elasticsearch生产集群部署之各个节点以daemon模式运行以及优雅关闭
Elasticsearch生产集群部署之各个节点以daemon模式运行以及优雅关闭
|
存储 监控 负载均衡
大数据数据存储的搜索引擎Elasticsearch的调优的集群部署优化
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
374 2
|
域名解析 开发工具
elasticsearch 8.3版本安装和集群部署
elasticsearch 8.3版本安装和集群部署
525 1
|
Java Linux
白话Elasticsearch69-ES生产集群部署重要的 Elasticsearch参数设置
白话Elasticsearch69-ES生产集群部署重要的 Elasticsearch参数设置
116 1
|
Java
白话Elasticsearch71-ES生产集群部署之各个节点以daemon模式运行以及优雅关闭
白话Elasticsearch71-ES生产集群部署之各个节点以daemon模式运行以及优雅关闭
113 0
|
缓存 前端开发 安全
白话Elasticsearch70-ES生产集群部署之production mode下启动时的bootstrap check
白话Elasticsearch70-ES生产集群部署之production mode下启动时的bootstrap check
123 0
|
存储 缓存 编解码
白话Elasticsearch68-ES生产集群部署重要的操作系统设置
白话Elasticsearch68-ES生产集群部署重要的操作系统设置
365 0
|
存储 缓存 固态存储
白话Elasticsearch63-生产集群部署之硬件配置、jvm以及集群规划建议
白话Elasticsearch63-生产集群部署之硬件配置、jvm以及集群规划建议
158 0