环境

  • 硬件在亚马逊云(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

机器示意图

image.png

操作系统

  • 这里主要讲 EBS 的挂载和 XFS 格式化
  • 可参考官方文档: https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ebs-using-v...
  • lsblk 命令查看磁盘概况:32G 系统盘/300G 数据盘,数据盘尚未挂载
    image.png
  • 检查卷上是否有文件系统

    $ 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 命令查看磁盘概况
    image.png
  • 使用 lsblk -f 命令查看磁盘 UUID
    image.png
  • 编辑 /etc/fstab,添加以下条目

    UUID=dc1eecfc-0295-44ad-97fe-d55893312f68  /data  xfs  defaults,nofail  0  2

    image.png

  • 重新挂载 /data,以确认 /etc/fstab 是否正确配置

    sudo umount /data
    sudo mount -a
  • 重启检查

    sudo init 6

文件准备

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

安装

设置

  • 编辑 /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

qbit
268 声望279 粉丝