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配置

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}}"
  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Elasticsearch 8.8.1版本的集群安装,你需要按照以下步骤进行操作: 1. 下载Elasticsearch 8.8.1版本的安装包: 你可以从Elasticsearch的官方网站(https://www.elastic.co/downloads/elasticsearch)上下载适合你系统的安装包。选择与你操作系统兼容的版本并下载。 2. 解压安装包: 将下载的安装包解压到你想要安装的目录。 3. 配置Elasticsearch: 进入解压后的目录,找到`config`文件夹,然后编辑`elasticsearch.yml`文件。在其中配置以下参数: - `cluster.name`:设置集群的名称,确保不同集群使用不同的名称。 - `node.name`:设置节点的名称,确保每个节点都有唯一的名称。 - `network.host`:设置节点绑定的IP地址。 - `discovery.seed_hosts`:设置用于节点发现的主机列表。 - `cluster.initial_master_nodes`:设置初始主节点的名称。 配置完成后保存文件。 4. 启动Elasticsearch节点: 运行以下命令启动Elasticsearch节点: ``` ./bin/elasticsearch ``` 你可以在终端中看到节点启动的输出日志。 5. 添加更多节点: 如果你想要创建一个集群,可以在其他节点上重复步骤3和步骤4,确保所有节点的配置文件中的`cluster.name`和`discovery.seed_hosts`参数相同。 6. 验证集群状态: 运行以下命令来验证集群的状态: ``` curl -XGET http://localhost:9200/_cluster/health?pretty ``` 如果返回的响应中显示集群的状态为`green`,则表示集群安装成功。 请注意,以上步骤仅适用于简单的本地集群安装。如果你需要在生产环境中部署Elasticsearch集群,你可能需要进一步配置和优化。你可以参考Elasticsearch的官方文档(https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)获取更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明算科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值