安装配置Elasticsearch
安装配置Elasticsearch
Elasticsearch 是一个基于JSON的分布式搜索和分析引擎。
1. 主节点(或候选主节点)
主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作, 主节点负荷相对较轻, 客户端请求可以直接发往任何节点, 由对应节点负责分发和返回处理结果。
一个节点启动之后, 采用 Zen Discovery机制去寻找集群中的其他节点, 并与之建立连接, 集群会从候选主节点中选举出一个主节点, 并且一个集群只能选举一个主节点, 在某些情况下, 由于网络通信丢包等问题, 一个集群可能会出现多个主节点, 称为“脑裂现象”, 脑裂会存在丢失数据的可能, 因为主节点拥有最高权限, 它决定了什么时候可以创建索引, 分片如何移动等, 如果存在多个主节点, 就会产生冲突, 容易产生数据丢失。要尽量避免这个问题, 可以通过 discovery.zen.minimum_master_nodes 来设置最少可工作的候选主节点个数。 建议设置为(候选主节点/2) + 1 比如三个候选主节点,该配置项为 (3/2)+1 ,来保证集群中有半数以上的候选主节点, 没有足够的master候选节点, 就不会进行master节点选举,减少脑裂的可能。
主节点的参数设置:
node.master = true
node.data = false
2. 数据节点
数据节点负责数据的存储和CRUD等具体操作,数据节点对机器配置要求比较高、,首先需要有足够的磁盘空间来存储数据,其次数据操作对系统CPU、Memory和IO的性能消耗都很大。通常随着集群的扩大,需要增加更多的数据节点来提高可用性。
数据节点的参数设置:
node.master = false
node.data = true
3. 客户端节点(协调节点)
客户端节点不做候选主节点, 也不做数据节点的节点,只负责请求的分发、汇总等等,增加客户端节点类型更多是为了负载均衡的处理。
node.master = false
node.data = false
4. 提取节点(预处理节点)
能执行预处理管道,有自己独立的任务要执行, 在索引数据之前可以先对数据做预处理操作, 不负责数据存储也不负责集群相关的事务。
node.ingest = true
5. 节点配置参考
| 角色 | 描述 | 存储 | 内存 | 计算 | 网络 |
| 主节点 | 管理集群状态 | 低 | 低 | 低 | 低 |
| 数据节点 | 节点转换输入数据 | 极高 | 高 | 高 | 中 |
| ingest | 节点转换输入数据 | 低 | 中 | 高 | 中 |
协调节点 | 请求转发和合并检索结果 | 低 | 中 | 中 | 中 |
---|
| 节点 | IP | PORT | HOST |
| master-node-1 | 127.0.0.1 | 9200 | bj-jd-es-prod-0001.com |
| master-node-2 | 127.0.0.1 | 9200 | bj-jd-es-prod-0002.com |
| master-node-3 | 127.0.0.1 | 9200 | bj-jd-es-prod-0003.com |
| data-node-1 | 127.0.0.1 | 9201 | bj-jd-es-prod-0001.com |
| data-node-2 | 127.0.0.1 | 9201 | bj-jd-es-prod-0002.com |
data-node-3 | 127.0.0.1 | 9201 | bj-jd-es-prod-0003.com |
---|
从releases下载二进制版本
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.14.tar.gz
1. 添加系统账号
groupadd elastic
useradd -M -s /bin/bash -g elastic -d /usr/local/elastic elastic
2. 解包安装
tar -xzvf elasticsearch-6.8.14.tar.gz --directory=/usr/local
cd /usr/local
ln -s elasticsearch-6.8.14 elastic
chown -R elastic:elastic elastic elasticsearch-6.8.14
mkdir /data/elastic
chown elastic:elastic /data/elastic
3. 编辑配置 config/elasticsearch.yml
cluster.name: addct-es-6.8.14
path.data: /usr/local/elastic/data
path.logs: /usr/local/elastic/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.16.19.189", "10.16.19.190", "10.16.19.191"]
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 3
action.destructive_requires_name: true
http.cors.enabled : true
http.cors.allow-origin : "*"
bootstrap.system_call_filter: false
# 主节点
node.master: true
node.data: false
# 数据节点
node.master: false
node.data: true
4. 使用systemd管理进程 vim /usr/lib/systemd/system/es.service
[Unit]
Description=ElasticSearch Service
Requires=network.target
After=network.target
[Service]
User=elastic
Type=forking
WorkingDirectory=/usr/local/elastic
ExecStart=/usr/local/elastic/bin/elasticsearch -d -p /usr/local/elastic/run/elasticsearch.pid
SuccessExitStatus=143
LimitNOFILE=65536
LimitMEMLOCK=infinity
TimeoutStopSec=120
Restart=always
[Install]
WantedBy=multi-user.target
5. systemctl管理命令
# 开机自启动
systemctl enable es
# 重启服务
systemctl restart es
6. 特殊配置说明
config/jvm.options
-Xms4g
-Xmx4g
插件安装,下载zip包,解压到plugins
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.14/elasticsearch-analysis-ik-6.8.14.zip
unzip elasticsearch-analysis-ik-6.8.14.zip -d plugins/analysis-ik
7. 使用hadoop用户登录修改配置
$ sudo su - elastic
vim config/elasticsearch.yml
kill $(cat run/elasticsearch.pid)
# 停止后会自动重启