目录
1 软件部署
1.1 概述
1.2 环境准备
1.3 软件介绍
1.4 安装部署
1.4.1 部署Elasticsearch
1.4.2 部署Kibana
1.4.3 部署Logstash
1.4.4 部署Filebeat
1.5 配置说明
1.5.1 全国通用
1.5.2 地区特殊说明
1.6 添加新服务
1.6.1 部署说明
1.6.2 修改配置
1.6.3 日志示例
1 软件部署
1.1 概述
本次安装使用安装程序完成,总体思路为:
- 环境准备;
- 执行安装程序;
- 配置、优化;
本套件包含的版本如下:
软 件
源版本
目的版本
Elasticsearch
6.5.4
7.6.2
1.2 环境准备
说明:此处为推荐配置,可根据实际情况进行配置。
服务器端配置要求:
- 处 理 器:CentOS Linux release 7.2.1511
- 内 存:4Cpu 16G
- 硬 盘:SSD 500G
1.3 软件介绍
Elasticsearch
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它主要是集中存储数据。
快照仓库
ES是通过快照的方式来实现数据备份,并且是以增量的方式。为了做快照,那么就需要注册一个快照仓库,告诉ES我们的快照应该如何保存以及将快照保存到哪里。
快照的方式中仓库类型type有如下几种类型:
fs: 共享文件系统,将快照文件存放于文件系统中
url: 指定文件系统的URL路径,支持协议:http,https,ftp,file,jar
s3: AWS的S3对象存储,快照存放于S3中,以插件形式支持
hdfs: 快照存放于hdfs中,以插件形式支持
cos: 快照存放于腾讯云COS对象存储中,以插件形式支持
微软 Azure的存储
Google Cloud 的存储
索引快照备份恢复流程
3.修改Elasticsearch的配置文件指定备份的输出路径并重启Elasticsearch服务;
流程图
1.4 安装部署
1.4.1 部署Elasticsearch
上个文章有部署
1)修改es配置文件
vim elasticsearch.yml
添加如下信息
path.repo: ["/usr/local/elasticsearch/es6data"]
其中es6是源,es7是目的,两边设置的一样也可以省略很多麻烦,为了区分我将目的端的路径设置为path.repo: ["/usr/local/elasticsearch/es7data"]
配置完后重启elasticsearch服务。
注意网上有部分用的是data.repo但是我用的时候发现并不识别,所以用了path.repo
path.repo: ["/usr/local/elasticsearch/es7data"]
#data.repo: ["/usr/local/elasticsearch/es7data"]
1.4.2 部署NFS
1) YUM仓库直接安装
yum install nfs-utils -y
2)修改配置文件
vim /etc/exports
添加以下配置,其中的目录是自己设置的没有要求,空间够用即可
/usr/local/elasticsearch/es6data 192.168.8.*(rw,sync,no_root_squash)
3)使exports的修改即时生效
exportfs -r
4)启动程序
systemctl start nfs-utils
systemctl start nfs
systemctl enable nfs-utils
systemctl enable nfs
5)查看共享目录
showmount -e
/usr/local/elasticsearch/es6data 192.168.8.*
在目标端使用mount挂载该目录
mount 192.168.8.115:/usr/local/elasticsearch/es6data /usr/local/elasticsearch/es7data
1.4.3 创建快照仓库
1) 创建快照仓库
其中es6_bak20210607是快照仓库的名称,可以自己取名
PUT _snapshot/es6_bak20210607
{
"type": "fs",
"settings": {
"location": "/usr/local/elasticsearch/es6data",
"compress": true,
"max_restore_bytes_per_sec": "50mb",
"max_snapshot_bytes_per_sec": "50mb"
}
}
两种方法一种是在控制台,一种是在后台
curl -XPUT http://192.168.8.115:9200/_snapshot/back -H 'Content-Type: application/json' -d '{"type": "fs","settings": {"location": "/usr/local/elasticsearch/es6data"}}'
修改目标仓库的配置,主要是更改快照恢复、生成的速度和压缩
curl -XPOST http://192.168.8.115:9200/_snapshot/back -d '{"type":"fs","settings":{"location":"/usr/local/elasticsearch/es6data","max_snapshot_bytes_per_sec":"50mb","max_restore_bytes_per_sec":"50mb","compress":true}}'
目的端同样创建快照仓库
PUT _snapshot/es7_bak20210607
{
"type": "fs",
"settings": {
"location": "/usr/local/elasticsearch/es7data",
"compress": true,
"max_restore_bytes_per_sec": "50mb",
"max_snapshot_bytes_per_sec": "50mb"
}
}
1.4.4 Elasticsearch源端生成索引快照
1) 生成快照
PUT _snapshot/es6_bak20210607/es6_bakgpbl-parb
{
"indices": "gpbl-parb*",
"ignore_unavailable": true,
"include_global_state": true
}
以gpbl-parb数据为例
// 针对具体的index创建快照备份
es6_bak20210607是快照仓库的名称
es6_bakgpbl-parb是代表快照的名称
gpbl-parb是代表要创建的index的名称
indices :指定了需要备份的索引,而不用整个集群备份。值中可以加逗号隔开多个索引
ignore_unavailable :设置是否忽略不存在的索引,为true的话,即使指定的索引不存在也不报错。
include_global_state :是否备份cluster global state。阻止cluster的全局state也作为snapshot的一部分被备份#防止集群的全局状态被作为快照的一部分存储起来
partial:默认情况下,如果索引的部分primary分片不可用,会导致整个备份失败。设置为true,可只备份可用的primary shard。
已经创建过了,创建另外一个
1) 查看日志
[2021-06-07T15:27:19,832][INFO ][o.e.s.SnapshotsService ] [4_uxj7I] snapshot [es6_bak20210607:bid_info/CmPOrEZNTq2I2IYZy4gZ_Q] started
[2021-06-07T16:03:23,439][INFO ][o.e.s.SnapshotsService ] [4_uxj7I] snapshot [es6_bak20210607:bid_info/CmPOrEZNTq2I2IYZy4gZ_Q] completed with state [SUCCESS]
在创建时,可以使用tail -f 参数实时查看es的日志
创建备份之后,在共享目录里是这样的,包含了id和数据
2) 查看备份状态
查看快照仓库中的所有快照
GET _snapshot/es6_bak20210607/_all?pretty
查看备份存放的仓库状态
GET _snapshot/es6_bak20210607?pretty
查看备份的快照状态
GET _snapshot/es6_bak20210607/es6_bakgpbl-parb?pretty
3) 备份数据迁移
(将源集群的备份内容(/usr/local/elasticsearch/es6data里的所有文件),复制到迁移目标的集群仓库目录里/usr/local/elasticsearch/es7data)
做了nfs的共享存储后这步骤直接省略,两个目录中的数据相同
1.5 目的Elasticsearch端恢复索引快照
1.5.1 恢复快照说明
恢复一个快照 指定恢复哪些索引,默认恢复所有索引 跨集群恢复需要先创建仓库,将快照放进去,且不同大版本的快照不兼容。
有的部分恢复快照前需要关闭索引。
1.5.2 修改配置
1)目的端新安装的es
- 检查yml的配置文件快照仓库目录是否指定
- 检查分词器是否同版本
- 检查快照仓库目录是否挂载并同步
1.5.3 目的端创建快照仓库
查看快照仓库中同步的快照
get _snapshot/es7_bak20210607/_all
1.5.4 恢复快照
恢复快照的目标es中不能有重名的index
POST _snapshot/es7_bak20210607/es6_bakgpbl-parb/_restore
在恢复快照时,可以使用tail -f 参数实时查看es的日志
[2021-06-07T16:14:00,262][INFO ][o.e.c.m.MetaDataDeleteIndexService] [es7] [bid_info_supplier/MltM8uBnSWO2G2bdru7tuQ] deleting index
[2021-06-07T16:14:24,916][INFO ][o.e.c.r.a.DiskThresholdMonitor] [es7] releasing read-only-allow-delete block on indices: [[bid_info_supplier, bid_info]]
[2021-06-07T16:40:09,523][INFO ][o.e.c.r.a.AllocationService] [es7] Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[bid_info][4]]]).
1.6 F&Q
具体问题:
{
"error" : {
"root_cause" : [
{
"type" : "mapper_parsing_exception",
"reason" : "analyzer [ik_max_word] not found for field [lawDetail]"
}
],
"type" : "mapper_parsing_exception",
"reason" : "Failed to parse mapping [bl_law]: analyzer [ik_max_word] not found for field [lawDetail]",
"caused_by" : {
"type" : "mapper_parsing_exception",
"reason" : "analyzer [ik_max_word] not found for field [lawDetail]"
}
},
"status" : 400
}
产生原因:
分词器没有安装
解决办法:
安装匹配版本的分词器即可
注意:
在控制台删除直接使用delete bid_info
DELETE _snapshot/back/es-2021060814 //删除快照
单个删除索引:
curl -XDELETE -u elastic:密码 http://localhost:9200/es-message-2021.08.14
删除多个索引,中间有逗号隔开:
curl -XDELETE -u elastic:密码 http://localhost:9200/abis-info-2021.08.09,abis-error-2021.08.10
模糊匹配删除:
curl -XDELETE -u elastic:密码 http://localhost:9200/abis-*
删除所有索引:
curl -XDELETE http://localhost:9200/_all
或 curl -XDELETE http://localhost:9200/*
_all ,* 通配所有的索引
通常不建议使用通配符,误删了后果就很严重了,所有的index都被删除了
禁止通配符为了安全起见,可以在elasticsearch.yml配置文件中设置禁用_all和*通配符
action.destructive_requires_name = true
这样就不能使用_all和*了