Ubuntu 20.04 搭建 Elasticsearch 7.x 小集群(qbit)

环境

  • 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 snap
开箱即用,拿走不谢。
262 声望
276 粉丝
0 条评论
推荐阅读
Postman 发送 RSA 签名请求(qbit)
前言Postman 版本 10.13.6qbit 将 RSAForPostman 压缩拷贝到了码云便于国内访问Postman 脚本示例Pre-request Script {代码...} Postman 内置库官方文档:[链接] {代码...} 本文出自 qbit snap

qbit阅读 143

git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.5k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

confluence7.2.1的部署与迁移---呕心沥血版
Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。 到官网下载最新版本,截止目前...

暗涌阅读 7.8k

C++编译器和链接器的完全指南
C++是一种强类型语言,它的编译和链接是程序开发过程中不可或缺的两个环节。编译器和链接器是两个非常重要的概念。本文将详细介绍C++中的编译器和链接器以及它们的工作原理和使用方法。

小万哥2阅读 1k

封面图
Ubuntu 20.04 读写 Windows 10 共享目录(qbit)
本文实验环境中,Windows 操作系统版本为 Windows Server 2016,应该对 Windows 10 和 Windows Server 2019 同样适用

qbit1阅读 6.3k

elasticsearch(2)- DQL 用法
Query DSL:ElasticSearch提供了一个可以执行的JSON风格的DSL(domain-specific language 领域特定语言),这个被称为Query DSL。

KerryWu1阅读 1.2k

262 声望
276 粉丝
宣传栏