ElasticStack 官方文档阅读(集群管理篇)
决定通读一下ES官方文档,甚至于一起再读一些相关书籍,带大家一起感受一下在“大规模数据检索”这个领域,我们需要克服的若干问题,以及未来的还有何发展,进行自我认识和理解。
考试流程
- 安装Chrome 考试环境检测插件 : PSI In-application Extension (www.psionline.com)
Elastic Stack 产品一览
- ElasticSearch : 基于Lucene ,实现集群高可用,准实时PB级数据秒级响应
- Logstash : 服务器端数据处理管道,同时从多个来源采集数据,转换数据,然后将数据发送到ES这种数据存储引擎
- Kibana : 数据可视化,ES集群管理
- 各种Beats : 数据采集、监控端点
- Filebeat : Logs
- Winlogbeat : Windows event logs
- Heartbeat : Uptime information
- APM : Application performance metrics
- Auditbeat : Audit events
- Metricbeat
- Integrations
- Web site crawler
- Elastic APM
- Endpoint Security
- Osquery Manager
- Ingest
ES 设置相关文档阅读记录
-
- 环境变量:
ES_PATH_CONF
、ES_HOME
- 静态配置
- 动态配置 : 瞬时配置、持久配置、配置文件、默认配置优先级依次降低
- 环境变量:
-
- 路径 : 由于7.13之前的多数据路径配置方式不再支持,涉及单节点和高可用集群的滚动重启迁移
- 集群名称 : 用于识别节点自组织成一个可用集群,注意防止出现两个集群命名冲突,导致加入错误节点到集群当中
- 节点名称 : 友好标识,存在于各个返回结果中
- 网络主机 : 默认本机环回地址,如果配置正常IP地址,则默认进入生产模式,不可不察
- 互相发现 : 两个重要配置项,用于节点选举和互相发现并连接,其中,
discovery.seed_hosts
- 声明多个可以用来做master节点的主机地址(还可以动态外挂seeds provider),支持域名;cluster.initial_master_nodes
配置说明 - 集群启动阶段本质是不安全的一个环境(inherently unsafe
),所以在生产模式启动一个新的集群,就必须显式地从备选节点列表(seed_hosts
)配置一个master nodes
列表,在首次启动集群的时候,所以,注意的是,如果首次启动集群后,要把此项配置删除,避免影响后续集群增加新的节点或者重启集群。 - JVM堆内存 : 根据节点角色和总内存,自动设置,也可以手动更改
- 堆转储路径设置: 默认在数据路径下,保证文件是不存在的,让ES自动创建才能正常生成转储文件
- GC日志 : 可以关闭之前的,重新设置适合的
- 临时文件 : 存储启动过程或者临时脚本,避免系统误伤,还是需要多多注意,要从自动清除策略中排除一下。
- JVM主要错误异常 :
-XX:ErrorFile=...
- 集群备份 : 快照生命周期管理是最简单的方式,官方明确告诉我们,不能拷贝数据目录,达到备份的目的 哇咔咔。。。
-
- keystore : 目前es使用keystore工具对安全配置项进行管理 ,并且对于keystore的改动,需要重启服务才能生效(一些配置可以标记成
reloadable
也是可以运行时生效的) - 每个节点,都需要指定独立为其配置安全配置项,并且在集群中所有节点的安全配置要保持一样的配置值
- keystore : 目前es使用keystore工具对安全配置项进行管理 ,并且对于keystore的改动,需要重启服务才能生效(一些配置可以标记成
-
- 目的解析 : 为了防止集群过载(占用内存和CPU的资源超过预期范围)
- 除非特别说明,熔断配置,均可以通过
PUT /_cluster/settings
进行更新设置 - 熔断配置 : 内存OOM
- 熔断错误异常 :
circuit_breaking_exception
- 父熔断器 :
indices.breaker.total.use_real_memory
配置ture
ORfalse
??? - 字段数据熔断器 : 字段数据默认占堆内存的40%以下
- 请求熔断器:
- 请求中熔断(?)
- 占用熔断器 : Lucene的段
- 脚本编译熔断器
- 正则熔断器
-
- 在集群级别进行分片分配和路由设置
- 目的解析 : 分片的分配处理程序,主要用于在集群内的节点上进行分片分配的工作,在
recovery(?)
、replica allocation(?)
、rebalancing(?)
、nodes are added or removed(节点增减)
的各个过程中执行,所以这些配置项,用于控制分片分配工作的力度、强度、广度、深度 - 机制 : 由某一个属于
master
的角色的节点决定哪个节点需要怎么分配分片,以及何时移除分片(在节点处于rebalancing
时)。一共有Cluster-level shard allocation settings
、Disk-based shard allocation settings
、Shard allocation awareness and Forced awareness
、Cluster-level shard allocation filtering
四个设置方式,对分片的规则进行控制和处理,不过还有个miscellaneous cluster-level settings(杂项设置)
-
- 目的解析: 集群自我恢复的数据传输限速设置
- 特别说明: 由于多节点,所以限制参数可能会有倍乘效应,致使网络压力高于预期,不可不察
-
- 目的解析 : 集群编排设置,用于控制像
seed_providers
、discovery.type
的基本设置,以及find_peers_interval
、handshake_timeout
、seed_resolver
和集群网络连接管理与选举相关的一些高级控制参数 - 特别说明: 有一些是可以动态生效的,但有一些是静态设置,需要注意
- 目的解析 : 集群编排设置,用于控制像
-
- 目的解析: 控制集群内部节点之间的数据复制过程的速率、大小、并行性等程度
2022-02-25 - Elasticsearch Guide [8.0] » Set up Elasticsearch » Starting Elasticsearch (已实践)
- 目的解析 :配置启动一个集群,并加入新的节点的方式
- 特别说明: 加入一个新的节点,要验证密钥(如果有),并且需要
enrollingment token
,以及不同的安装方式,对应的启动设置项以及预置参数方式有所不同 ./bin/elasticsearch-create-enrollment-token -s node
报错ERROR: [xpack.security.enrollment.enabled] must be set to true to create an enrollment token
2022-02-25 - Elasticsearch Guide [8.0] » Command line tools » elasticsearch-keystore (部分实践)
- 目的解析: 通过一个脚本命令,方便快捷管理ES安全认证所需要的密钥或者文件
-
- 目的解析:通过http和tcp不同的层次,可以做到绑定不同的网络接口地址,通过操作系统达到不同的传输通道接收流量;而发布地址
- 特别说明: 绑定地址,必须是操作系统网络接口里存在的地址;
第一次启动集群节点的安全配置说明,
ES第一次自动配置安全配置项,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 17-03-2023 03:06:34
#
# --------------------------------------------------------------------------------
# Enable security features
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
#----------------------- END SECURITY AUTO CONFIGURATION -------------------------后续节点加入,需要指定enroll token,但是不用显示配置地址列表等信息
启动后忘记记录启动的临时密码怎么办?可以通过
./node1/elasticsearch-8.1.0/bin/elasticsearch-keystore add "bootstrap.password"
进行重新设置,并重启服务
ES 设置实践
- 2022-02-24 - Elasticsearch Guide [8.0] » How to » Fix common cluster issues
- 安装单节点(默认方式)
- 安装单主机集群
- 安装多主机集群
- 安全配置项
backlogs
- 2022-03-10 -Elasticsearch Guide [8.0] » REST APIs » Index APIs » Split index API》》 索引管理 之分身生成
- [2022-03-10 ] 》》 路由字段管理
- 2022-03-10
- 2022-03-10》》更新映射
- 2022-03-10
- 2022-03-10
- 2022-03-10
- 2022-03-10 》》 script_field 的查询功能
- 2022-03-10 》》 脚本Debug调试能力
- 2022-03-10 》》 脚本的闭包执行,单箭头
- 2022-03-10 》》 脚本实例练习 以及 脚本在不同的功能中提供的上下文环境
- 2022-03-10 》》 脚本执行API调试
- 问题:
stored_fields
和docvalue_fields
的意义和作用? - 2022-03-11 - Elasticsearch Guide [8.1] » REST APIs » Index APIs » Force merge API >> 触发强制段合并操作,合并带来的最大效果是较少文件资源消耗,增大搜索能力
- 2022-03-11 >> 任务管理API,查看后台进行的任务,如强制合并异步调用后,会产生一个任务,
- 2022-03-11 - 》》 过滤器的作用过程
- 2022-03-11 -
- 2022-03-14 - 》》
- 2022-03-14 - 》》 优先级说明: 请求 > it > comp it > legency it
- 2022-03-15 - 》》 数据恢复
- 2022-03-15 - 》》 索引压缩
- 2022-03-16 - 》》 与cluster level filter 和 allocation awareness 共同作用
- 2022-03-16 -
集群管理和监控
1 | GET /_cluster/health?filter_path=status,*_shards |
TODO
- https://zhuanlan.zhihu.com/p/24832190 >> 对比match_field 的多字段查询不同的设置之间的区别,需要定义分词器
- Elasticsearch Guide [8.1] » REST APIs » Index APIs » Create or update index template API
- 拼音分词器
ES 文档阅读集合
部署问题备忘
1 | [2022-02-22T10:45:01,248][INFO ][o.e.n.Node ] [node1] node name [node1], node ID [OSC-vFuhQ9m7a-QmNKdJwA], cluster name [elasticsearch], roles [transform, data_content, data_warm, master, remote_cluster_client, data, data_cold, ingest, data_frozen, ml, data_hot] |