Elasticsearch7.8.1集群安装手册

这篇具有很好参考价值的文章主要介绍了Elasticsearch7.8.1集群安装手册。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 部署说明

elasticsearch集群规划为三个节点,elasticsearch版本为7.8.1

2. 下载安装包

1)下载 Elasticsearch7.8.1安装包

# cd /opt
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz

3. Elasticsearch安装

3.1 解压

cd elasticsearch-7.8.1
# tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz

3.2 修改配置

1)jvm.options调整内存大小

# vi config/jvm.options
#-Xms4g
#-Xmx4g
-Xms1g
-Xmx1g

2)修改elasticsearch.yml

集群规划为三个节点,三个节点的配置,只有node.name: es-node1 不同,请分别配置

node1:
node.name: es-node1
transport.tcp.port: 9300
node2:
node.name: es-node2
transport.tcp.port: 9301
node3:
node.name: es-node3
transport.tcp.port: 9302

具体配置如下

# vi config/elasticsearch.yml

#集群名称,三台集群,要配置相同的集群名称
cluster.name: es-cluster
#节点名称
node.name: es-node1
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最⼤集群节点数
node.max_local_storage_nodes: 3
# 数据和日志存储路径
path.data: /opt/elasticsearch-7.8.1/data
path.logs: /opt/elasticsearch-7.8.1/logs
# 三个节点配置备份路径白名单,此处如果不指定,在备份索引的时候会报错
path.repo: ["/opt/elasticsearch-7.8.1/backup", "/data/esbackup"]
#⽹关地址
network.host: 0.0.0.0
#端⼝
http.port: 9200
#内部节点之间沟通端⼝
transport.tcp.port: 9300
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["10.3.9.202:9300", "10.3.9.203:9301", "10.3.9.204:9302"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["es-node1", "es-node2", "es-node3"]

##末尾添加
indices.memory.index_buffer_size: 40%
thread_pool.write.size: 3
thread_pool.write.queue_size: 1000
indices.fielddata.cache.size:  40%

#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

3.3 创建用户

#创建es用户,adduser会在/home目录下会自动创建同名文件夹
# adduser es
#修改es用户密码,接着输入两次密码123456
# passwd es
#给新用户文件夹权限
# chown -R es /opt/elasticsearch-7.8.1

3.4 启动

#切换成新建的es用户
# su es
$ cd elasticsearch-7.6.2/
$ ./bin/elasticsearch

3.4.1 排错

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

#修改系统内核参数
#切换到root用户
$ su
#修改limits.conf
# vi /etc/security/limits.conf 
#es : 表示用户,* 表示所有用户
#soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。
#hard xxx : 代表严格的设定,不允许超过这个设定的值
#nofile : 是每个进程可以打开的文件数的限制
#nproc  : 是操作系统级别对每个用户创建的进程数的限制
es soft nofile 65536  #es用户可打开的文件描述符的最大数(超过会警告)
es hard nofile 65536  #es用户可打开的文件描述符的最大数(超过会报错)
es soft nproc  4096   #es用户可用的最大进程数量(超过会警告)
es hard nproc  4096   #es用户可用的最大进程数量(超过会报错)

编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效


#修改sysctl.conf,在末尾追加
# vi /etc/sysctl.conf 
vm.max_map_count=262144
#使修改立即生效
# sysctl -p

3.4.2 后台启动

es三个节点配置完成后,分别启动三个节点的elasticsearch进程

#切换成es用户来启动
# su es
$ nohup ./bin/elasticsearch &
#查看控制台
# tail -f nohup.out

#关闭
# ps aux |grep elasticsearch
# kill -9 2382(进程号)

3.5 访问

浏览器请求http://10.3.9.202:9200/、http://10.3.9.203:9200/、http://10.3.9.204:9200/

{
  "name" : "es-node1",
  "cluster_name" : "es-cluster",
  "cluster_uuid" : "QhAtHT6XQ7yvZAYw8I7qaw",
  "version" : {
    "number" : "7.8.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "b5ca9c58fb664ca8bf9e4057fc229b3396bf3a89",
    "build_date" : "2020-07-21T16:40:44.668009Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

3.5.1 查看es状态

浏览器访问或者curl命令

1)查看集群状态信息

http://10.3.9.202:9200/_cluster/stats?pretty
  1. 查看集群健康状态
http://10.3.9.202:9200/_cluster/health?pretty
{
  "cluster_name" : "es-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3, ##集群节点数
  "number_of_data_nodes" : 3,  ##数据节点数量
  "active_primary_shards" : 0, ##主分片数量
  "active_shards" : 0,  ##可用的分片数量
  "relocating_shards" : 0,  ##正在重新分配的分片数量,在新加或者减少节点的时候会发生
  "initializing_shards" : 0,  ##正在初始化的分片数量,新建索引或者刚启动会存在,时间很短
  "unassigned_shards" : 0,  ##没有分配的分片,一般就是那些名存实不存的副本分片。
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

集群三种状态

green 所有主要分片和复制分片都可用
yellow 所有主要分片可用,但不是所有复制分片都可用。高可用不牢靠。但不会丢失数据
red 不是所有的主要分片都可用。数据有极大风险。数据不能用

3)查看集群状态查看集群将康状态

http://10.3.9.202:9200/_cat/health?v

4)集群状态查询
##索引级别集群状态,可以细致查看到底是哪个索引引起集群的故障的

GET _cluster/health?level=indices

##分片级别集群状态,可以细致查看到底是哪个分片引起的集群故障

GET _cluster/health?level=shards

##阻塞查看集群状态,适用于自动化脚本。当状态变为指定状态或者更好就返回继续执行。

GET _cluster/health?wait_for_status=yellow

5)##监控单个节点状态信息,各部分节点数据的解释请参看网址

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_monitoring_individual_nodes.html
GET _nodes/stats
  1. 集群状态信息,比第一个更详细
GET _cluster/stats

7)索引级别的统计信息,比节点级别的统计信息详细。但是并不很实用

GET my_index/_stats
GET my_index,another_index/_stats
GET _all/_stats

8)统计 my_index 索引。
使用逗号分隔索引名可以请求多个索引统计值。
使用特定的 _all 可以请求全部索引的统计值

9)单机集群颜色为yellow:

curl -XPUT 'http://90.11.35.127:9200/_settings' -H 'content-Type:application/json' -d'
{
"number_of_replicas": 0
}'

4. es集群备份和恢复

4.1 es索引index备份

参考官网文档:
备份集群:https://www.elastic.co/guide/cn/elasticsearch/guide/current/backing-up-your-cluster.html

备份集群使用 snapshot API,集群里当前的状态和数据然后保存到一个共享仓库里。第一个快照会是一个数据的完整拷贝,但是所有后续的快照会保留的是已存快照和新数据之间的差异。

1) 备份前首先创建一个保存数据的仓库。
有多个仓库类型可以选择:

  • 共享文件系统,比如 NAS
  • Amazon S3
  • HDFS (Hadoop 分布式文件系统)
  • Azure Cloud

本次备份方案使用NFS共享存储
2) 挂载nfs存储
所有节点安装nfs-utils

# yum install nfs-utils -y
# mkdir -p /data/esbackup/
# mount -t nfs 10.3.9.70:/nfsdata /data/esbackup/
添加到开机启动命令
# vi /etc/fstab
10.3.9.70:/nfsdata      /data/esbackup          nfs     defaults        0 0

修改权限

# chown -R es /data/esbackup/

3) 创建snapshot仓库

curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2021-12-28 -d '
{
    "type": "fs",
    "settings": {
        "location": "/data/esbackup"
    }
}'

参数说明:

  1. 给仓库取一个名字,在本例它叫2021-12-28
  2. 指定仓库的类型是共享文件系统。type:fs // 仓库类型为共享文件系统
  3. 提供一个已挂载的设备作为目的地址。
    注意:共享文件系统路径必须确保集群所有节点都可以访问到。

上述命令会在挂载点创建仓库和所需的元数据。还可以配置节点、网络的性能状况和仓库位置:

max_snapshot_bytes_per_sec

当快照数据进入仓库时,这个参数控制这个过程的限流情况。默认是每秒 20mb 。

max_restore_bytes_per_sec

当从仓库恢复数据时,这个参数控制什么时候恢复过程会被限流以保障你的网络不会被占满。默认是每秒 20mb。

假设有一个非常快的网络,而且对额外的流量带宽很高,那可以增加这些默认值:

curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2021-12-28 -d '
{
    "type": "fs",
    "settings": {
        "location": "/data/esbackup",
        "max_snapshot_bytes_per_sec": "50mb",
        "max_restore_bytes_per_sec": "50mb"
    }
}'

#列出仓库

curl -XGET http://127.0.0.1:9200/_snapshot/*

#删除仓库

curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28

创建索引的快照

1、快照的创建
创建快照,默认为异步执行,添加参数wait_for_completion则为同步等待,如下:

PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
my_backup:仓库名称
snapshot_1:快照名称

2、索引配置
由于es集群环境中一般除了业务数据索引外还会有kibana或监控的索引,所以一般会指定需要快照的索引,如下:

PUT _snapshot/my_backup/snapshot_2{
    "indices": "index_1,index_2"
}

3、获取快照相关信息
获取某仓库下的一个或索引的快照信息,如下:

GET _snapshot/my_backup/snapshot_2

GET _snapshot/my_backup/_all

4、具体创建快照命令

curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_event-2021-12-28?wait_for_completion=true -d '
{
    "indices": "xx_app_event"
}'

备注:请求体中indices指定需要备份的索引(多个用逗号隔开),也可以不指定,这样会备份所有的es索引库数据。
执行后最终返回如下信息表示备份创建成功:

{
    "accepted": true
}

#列出快照

curl -XGET http://127.0.0.1:9200/_snapshot/2021-12-28/*

#删除快照

curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_event-2021-12-28
curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_startup-2021-12-28
curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_switch_menu-2021-12-28

索引恢复

从镜像中恢复快照数据

  1. 查询2021-12-28仓库下的快照信息
curl -XGET "http://127.0.0.1:9200/_snapshot/2021-12-28/_all?pretty"

 "snapshots" : [
      "snapshot" : "xx_app_event-2021-12-28",
      "snapshot" : "xx_app_startup-2021-12-28",
      "snapshot" : "xx_app_switch_menu-2021-12-28",

  1. 恢复快照数据
  • 为本机恢复
    本机节点恢复数据直接执行如下请求即可
  • 为其他节点恢复
    如果需要对其他节点机器上的es进行数据恢复,
    如果使用nfs共享文件系统,需要在新集群创建仓库,然后执行索引还原即可
    如果不使用nfs共享文件系统,需要将备份出来的索引复制到新集群的服务器上,然后创建仓库,最后执行索引还原命令
    还原命令如下:
curl -H "Content-Type: application/json" -XPOST 'http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_event-2021-12-28/_restore' -d '{
    "indices": "xx_app_event"
}'
-d 可选参数:
"rename_pattern": "index_(.+)", 
    "rename_replacement": "restored_xx_app_event_index_2021-12-28",
    "index_settings": {
        "index.number_of_replicas": 1
    },
    "ignore_index_settings": [
        "index.refresh_interval"
    ]

可以使用wait_for_completion=true同步获取结果,并且可以使用indices参数指定需要恢复的索引的名称。
使用rename_replacement参数重命名恢复后的索引名称。

4.2索引自动备份脚本

1)索引备份脚本说明
首先在/data/esbackup创建仓库路径、创建snapshot仓库,循环创建三个索引xx_app_event xx_app_startup xx_app_switch_menu的备份

2)具体脚本内容如下

#!/bin/bash
ES_BACKUP_DIR=/data/esbackup
DATE_TODAY=`date -d "0 day" +%Y-%m-%d`
INDEX=(xx_app_event xx_app_startup xx_app_switch_menu)
if [[ ! -d ${ES_BACKUP_DIR}/${DATE_TODAY} ]];then
  mkdir -p ${ES_BACKUP_DIR}/${DATE_TODAY}
fi
chown -R es ${ES_BACKUP_DIR}/${DATE_TODAY}
curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/${DATE_TODAY} -d '
{
    "type": "fs",
    "settings": {
        "location": "'${ES_BACKUP_DIR}'/'${DATE_TODAY}'",
        "max_snapshot_bytes_per_sec": "50mb",
        "max_restore_bytes_per_sec": "50mb"
    }
}'

if [[ $? == 0 ]];then
  echo "${DATE_TODAY} REPOSITORY CREATE SUCCESS!"
fi

for i in ${INDEX[@]}
do
curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/${DATE_TODAY}/${i}-${DATE_TODAY}?wait_for_completion=true -d '
{
    "indices": "'${i}'"
}'
if [[ $? == 0 ]];then
  echo "${i}-${DATE_TODAY} INDEX CREATE SUCCESS!"
fi
done

#--------------snap data compress--------------
cd ${ES_BACKUP_DIR}
tar czvf ${DATE_TODAY}.tg.gz ${DATE_TODAY}
rm -rf ${DATE_TODAY}
cd -
echo "End time: `date +%Y-%m-%d_%H:%m:%S`"

3)执行脚本

./es_index_backup.sh 
{"acknowledged":true}2021-12-28 REPOSITORY CREATE SUCCESS!
{"snapshot":{"snapshot":"xx_app_event-2021-12-28","uuid":"vseR_GeyR3WG3CEXAYTiWA","version_id":7080199,"version":"7.8.1","indices":["xx_app_event"],"include_global_state":true,"state":"SUCCESS","start_time":"2021-12-28T15:29:58.640Z","start_time_in_millis":1640705398640,"end_time":"2021-12-28T15:29:58.840Z","end_time_in_millis":1640705398840,"duration_in_millis":200,"failures":[],"shards":{"total":3,"failed":0,"successful":3}}}xx_app_event-2021-12-28 INDEX CREATE SUCCESS!
{"snapshot":{"snapshot":"xx_app_startup-2021-12-28","uuid":"ZfMxQHjsSUKzHAswnsAfVg","version_id":7080199,"version":"7.8.1","indices":["xx_app_startup"],"include_global_state":true,"state":"SUCCESS","start_time":"2021-12-28T15:29:59.040Z","start_time_in_millis":1640705399040,"end_time":"2021-12-28T15:29:59.040Z","end_time_in_millis":1640705399040,"duration_in_millis":0,"failures":[],"shards":{"total":3,"failed":0,"successful":3}}}xx_app_startup-2021-12-28 INDEX CREATE SUCCESS!
{"snapshot":{"snapshot":"xx_app_switch_menu-2021-12-28","uuid":"vt9LZ48USm2eO3b-bVdk6w","version_id":7080199,"version":"7.8.1","indices":["xx_app_switch_menu"],"include_global_state":true,"state":"SUCCESS","start_time":"2021-12-28T15:29:59.240Z","start_time_in_millis":1640705399240,"end_time":"2021-12-28T15:29:59.240Z","end_time_in_millis":1640705399240,"duration_in_millis":0,"failures":[],"shards":{"total":3,"failed":0,"successful":3}}}xx_app_switch_menu-2021-12-28 INDEX CREATE SUCCESS!

4)设置定时任务

定时任务设置每天的23点01分执行

编辑定时任务

crontab -e
写入如下内容
01 23 * * *

4.3 配置优化,修改search.max_buckets

通过 API 调用的方式动态进行配置

# curl  -XPUT "http://10.3.9.202:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":100000}}"

调整es集群三个节点的max_buckets配置文章来源地址https://www.toymoban.com/news/detail-716980.html

curl  -XPUT "http://90.11.35.182:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":524288}}"

curl  -XPUT "http://90.11.35.71:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":524288}}"

curl  -XPUT "http://90.11.35.56:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":524288}}"

到了这里,关于Elasticsearch7.8.1集群安装手册的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch基础篇(三):Elasticsearch7.x的集群部署

    Elasticsearch集群是一个强大的搜索和分析引擎,由多个节点组成,每个节点都是一个独立的Elasticsearch实例。这些节点协同工作,共同构建一个高度可用和可扩展的搜索引擎。本文将深入探讨Elasticsearch集群的架构和部署,包括主节点、数据节点、客户端节点、分片以及节点间的

    2024年02月05日
    浏览(44)
  • elasticsearch7.7集群部署以及密码认证

    1.1 elasticsearch 部署 1.1.1 安装jdk 略 1.1.2 安装准备 1、安装用户用elastic用户 2、创建相关目录及授权 [root@es-node1 ~]# chown -R elastic: elastic/data [root@es-node1 ~]# chmod -R 775 /data 3、root用户编辑 /etc/security/limits.conf,追加以下内容; soft nofile 65536 hard nofile 65536 soft nproc 2048 hard nproc 4096 4、

    2024年02月03日
    浏览(40)
  • Elasticsearch7搭建集群并配置节点证书

    Elasticsearch7搭建集群并配置节点证书 | 帅大叔的博客 单机版比较简单,试下集群版的,资源有限,本文例子:一台主机以不同端口启动搭建集群。 环境说明: Centos7 Elasticsearch7.9.0 准备搭建3个节点 一、下载ES安装包 去官网下载 下载地址: Download Elasticsearch | Elastic 历史版本:

    2024年02月12日
    浏览(38)
  • docker compose搭建elasticsearch7集群

    一、集群介绍 系统环境:Centos7.5 服务器节点: 主机名 IP hadoop03 192.168.1.153 hadoop04 192.168.1.154 hadoop05 192.168.1.155 二、环境准备 1、安装docker:略过 2、安装docker compose 1)使用官方推荐方式(此方式需服务器翻外网) 2)自行下载         由于服务器连不上Github,因此手动下载

    2024年02月03日
    浏览(47)
  • elasticsearch7.x 集群的搭建和分片设置

    目录   一、es集群的基本核心概念 二、es集群搭建 三、es集群索引分片管理 3.1创建索引,指定分片  3.2索引分片的分配 3.2.1 手动移动分片:  3.2.1 修改副分片数量 Cluster 集群: 一个 Elasticsearch 集群由一个或多个节点(Node)组成,每个集群都有一个共同的集群名称作为 标识。

    2023年04月25日
    浏览(34)
  • docker部署Elasticsearch7.17集群和kibana

    环境准备: 3台centos7.9的服务器 vim /etc/sysctl.conf添加:vm.max_map_count=262144 sysctl -w vm.max_map_count=262144 即时生效 cat /proc/sys/vm/max_map_count 查看 #创建es配置目录 mkdir /home/es/config -p #创建es数据目录 mkdir /home/es/data #创建es插件目录 mkdir /home/es/plugins #授权目录 chmod -R 777 /home/es 在/home/e

    2024年02月10日
    浏览(38)
  • ElasticSearch7.3.0 集群搭建及配置安全认证

    注: 由于是测试,搭建的环境就在一台机器上(操作系统是 CentOS 7) 配置 Elasticsearch Elasticsearch 的配置文件是 elasticsearch/elasticsearch.yml 集群的名称 配置集群的名称,所有的node节点集群名称要一致 节点的名称 配置每个节点的名称,节点的名称要在集群中唯一 索引文件的存储位置 默认

    2023年04月13日
    浏览(52)
  • centos7.6部署ELK集群(一)之elasticsearch7.7.0集群部署

    32.3. 部署es7.7.0 32.3.1. 下载es(各节点都做) wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz 32.3.2. 解压至安装目录(各节点都做) tar -xvf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /vmdata/ 32.3.3. 创建es用户并设置密码(各节点都做) ES 7.x 开始不再允许以任何方

    2023年04月17日
    浏览(31)
  • 【Elasticsearch】Elasticsearch集群搭建详细手册

    1.1.资源准备 服务器 192.168.X.26 192.168.X.25 192.168.X.24 安装包 elasticsearch-6.8.10.tar.gz 防火墙 所有服务器均开通9200,9300端口 1.2.安装组件 第一步:创建es安装目录 第二步:上传安装包到soft目录下 第三步:解压安装包 注意:当前步骤每台服务器均相同!!! 1.3.修改配置 节点1、节点

    2024年01月22日
    浏览(30)
  • Docker安装ElasticSearch7.14.0 docker安装elasticsearch7.14.0完整详细教程

    Docker常用命令大全 Docker ElasticSearch 官方仓库 我这边选择的版本是 7.14.0 ,这个版本比较安全可靠,在终端中执行以下命令以拉取 docker pull elasticsearch:7.14.0 使用以下命令创建一个新的 rabbitmq容器并将其启动: --name 是 容器别名 将 宿主机 9200 端口映射到 容器内 9200 and 端口 93

    2024年02月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包