环境
- 硬件在亚马逊云(AWS)中国区
- ES 节点硬件:3 台 AWS m5.4xlarge(16 vCPU/64GB 内存)
- Kibana 硬件:1 台 AWS m5.large(2 vCPU/8GB 内存)
- 操作系统:Ubuntu 20.04 LTS
- Elasticsearch 7.9.3
- Kibana 7.9.3
机器示意图
操作系统
- 这里主要讲 EBS 的挂载和 XFS 格式化
- 可参考官方文档: https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ebs-using-v...
- 用
lsblk
命令查看磁盘概况:32G 系统盘/300G 数据盘,数据盘尚未挂载 检查卷上是否有文件系统
$ sudo file -s /dev/nvme1n1 /dev/nvme1n1: data # 显示为 data 即为无文件系统
创建
xfs
文件系统$ sudo mkfs -t xfs /dev/nvme1n1 # 强制格式化 $ sudo mkfs.xfs -f /dev/nvme0n1
再次查看磁盘
$ sudo file -s /dev/nvme1n1 /dev/nvme1n1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
创建 /data 目录
sudo mkdir /data
将新目录挂载到新卷上
sudo mount /dev/nvme1n1 /data
- 再次用
lsblk
命令查看磁盘概况 - 使用
lsblk -f
命令查看磁盘UUID
编辑
/etc/fstab
,添加以下条目UUID=dc1eecfc-0295-44ad-97fe-d55893312f68 /data xfs defaults,nofail 0 2
重新挂载
/data
,以确认/etc/fstab
是否正确配置sudo umount /data sudo mount -a
重启检查
sudo init 6
文件准备
- Elasticsearch、Kibana:https://www.elastic.co/cn/downloads/past-releases
- IK 插件: https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.9.3
Elasticsearch
安装
- 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/d...
文件检查
$ shasum -a 512 -c elasticsearch-7.9.3-amd64.deb.sha512 elasticsearch-7.9.3-amd64.deb: OK
安装
sudo dpkg -i elasticsearch-7.9.3-amd64.deb
设置开机启动
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable elasticsearch.service
通用设置
- 通用设置对 node-1/node-2/node-3 三个节点同时适用
设置 elasticsearch 可打开的最大文件数
# 修改 systemctl 编辑器:update-alternatives --config editor sudo systemctl edit elasticsearch
添加如下内容(
/etc/systemd/system/elasticsearch.service.d/override.conf
)[Service] LimitMEMLOCK=infinity
重载
sudo systemctl daemon-reload
- 禁用交换文件:编辑
/etc/fstab
,注释掉所有含swap
的行 - 虚拟内存(Virtual memory)
vm.max_map_count
在 Ubuntu 20.04 上用deb
包安装时已自动配置,无需更多设置 - 线程数量(Number of threads,
ulimit
)在systemd
上无需单独设置 设置
jvm
堆大小(/etc/elasticsearch/jvm.options)-Xms30g -Xmx30g
创建目录并更改所有者
sudo mkdir -p /data/elasticsearch/data /data/elasticsearch/log sudo chown -R elasticsearch:elasticsearch /data/elasticsearch
编辑
/etc/elasticsearch/elasticsearch.yml
文件# 添加或修改 cluster.name: esapi path.data: /data/elasticsearch/data path.logs: /data/elasticsearch/log http.port: 9200 discovery.seed_hosts: ["172.31.0.1", "172.31.0.2", "172.31.0.3"] cluster.initial_master_nodes: ["node01", "node02", "node03"] node.roles: [master, data, ingest]
个性化设置
node01 编辑
/etc/elasticsearch/elasticsearch.yml
文件# 添加或修改 node.name: node01 network.host: 172.31.0.1
node02 编辑
/etc/elasticsearch/elasticsearch.yml
文件# 添加或修改 node.name: node02 network.host: 172.31.0.2
node03 编辑
/etc/elasticsearch/elasticsearch.yml
文件# 添加或修改 node.name: node03 network.host: 172.31.0.3
组网问题
- ES node 之间通信的端口是 9300,记得防火墙要放行
一直报下面的错误找了很多原因,最后发现是 AWS AMI 镜像模板把 data 服务也复制了一份,把 data 目录清空重启就好了。
{ "error" : { "root_cause" : [ { "type" : "master_not_discovered_exception", "reason" : null } ], "type" : "master_not_discovered_exception", "reason" : null }, "status" : 503 }
查看组网成功的节点
$ curl http://172.31.8.192:9200/_cat/nodes 172.31.0.2 0 53 0 0.00 0.15 0.34 dilmrt - node02 172.31.0.3 1 52 0 0.00 0.16 0.30 dilmrt - node03 172.31.0.1 1 52 0 0.08 0.25 0.32 dilmrt * node01
插件安装
安装官方插件
/usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
安装本地插件
/usr/share/elasticsearch/bin/elasticsearch-plugin install file:///home/ubuntu/es_down/elasticsearch-analysis-ik-7.9.3.zip
插件安装了哪些插件
# /usr/share/elasticsearch/bin/elasticsearch-plugin list analysis-hao analysis-ik analysis-stconvert
查找安装主目录
settings.path.home
,插件目录一般在安装主目录/plugins
curl 127.0.0.1:9200/_nodes/settings?pretty=true
- Elasticsearch 自身和插件配置文件一般都在
/etc/elasticsearch
目录下
IK 分词器
- 添加同义词
- 添加远程词典
Kibana
安装
- 官方文档:https://www.elastic.co/guide/en/kibana/7.9/deb.html#install-deb
文件检查
$ shasum -a 512 -c kibana-7.9.3-amd64.deb.sha512 kibana-7.9.3-amd64.deb: OK
安装
sudo dpkg -i kibana-7.9.3-amd64.deb
设置开机启动
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable kibana.service
设置
编辑
/etc/kibana/kibana.yml
文件# 添加或修改 server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://172.31.0.1:9200", "http://172.31.0.2:9200", "http://172.31.0.3:9200"]
本文出自 qbit snap
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。