centos7利docker compose 快速部署 Elasticsearch + Kibana

目录

前言

  • 这一篇博客主要讲述Elasticsearch 和 Kibana 的部署,对docker不熟悉的朋友可以看下我的这篇博客,Elasticsearch 是一款强大的开源搜索引擎,一般与可视化工具 Kibana 配合使用,用于日志分析、数据检索等场景。通过 Docker Compose 可以快速搭建一套完整的 Elasticsearch + Kibana 环境。
  • 部署前确保Linux宿主机至少2GB内存,Elasticsearch比较吃内存,且已经安装 Docker 和 Docker Compose(建议 Docker 版本 ≥ 20.10,Compose 版本 ≥ 3.8)

部署前准备

  1. 在正式部署前,我建议先把Elasticsearch和Kibana的docker镜像先拉下来,建议直接从Elasticsearch官网拉取镜像,想部署哪个版本镜像最后直接指定版本就可以,我这次部署的是7.17.20版本,注意Elasticsearch、Kibana和lk分词器的版本要保持一致。执行docker命令

    bash 复制代码
    # 拉取elasticsearch镜像
    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.20
    # 拉取Kibana镜像
    docker pull docker.elastic.co/kibana/kibana:7.17.20
  2. 如果因为网络原因,或者配置的国内镜像仓库拉取不下来,直接按照我这篇博客,配置一下阿里的镜像加速器就可以了。

  3. 从这个网址lk分词器中下载lk分词器,记得版本要保持一致。

  4. 创建主目录和数据卷目录,用于挂载Elasticsearch容器内的数据目录和插件目录

    bash 复制代码
    # 创建主目录,进入主目录
    mkdir elasticsearch-docker && cd elasticsearch-docker
    
    # 创建 Elasticsearch 数据和插件目录
    mkdir -p elasticsearch/{data,plugins}
  5. 将下载的Ik分词器 压缩文件解压缩,将解压缩的目录放入 plugins数据卷目录中

  6. 手动修改宿主机挂载目录的权限,确保容器内用户有权限访问,这步很重要,一定要修改数据卷目录权限

    bash 复制代码
    # 递归修改数据目录和插件目录的权限
    chmod -R 777 ./elasticsearch/data
    chmod -R 777 ./elasticsearch/plugins
  7. 为了避免 Elasticsearch 在运行时可能遇到的内存映射不足问题,建议提高系统的 vm.max_map_count值,这个配置值表示一个进程可以拥有的虚拟内存区域的数量,像 Elasticsearch、Apache Doris、Kafka这类高性能数据存储和搜索引擎应用,为了追求极致的I/O效率,会广泛使用内存映射文件技术来访问磁盘上的大量数据文件。

  8. 一般vm.max_map_count默认配置为65530,我们可以通过命令cat /proc/sys/vm/max_map_count查看配置。

  9. 编辑 /etc/sysctl.conf文件,在末尾添加一行 vm.max_map_count=262144,然后执行 sudo sysctl -p使配置立即生效

部署

  1. 在主目录中通过touch命令创建docker-compose.yml 配置文件,将下面文件内容复制进去,记得将我的中文注释删除,要不容器可能启动报错

    yaml 复制代码
    version: '3.8'
    services:
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.20
        container_name: elasticsearch
        environment:
        #设置 Elasticsearch 为单节点模式,适合开发和测试
          - discovery.type=single-node
        #为 Elasticsearch 分配堆内存
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          - cluster.name=es-docker-cluster
        volumes:
        #注意数据卷不要配置错,冒号前面的是宿主机数据卷目录,后面是挂载的容器内目录,冒号后面的不需要修改,只需配置对冒号前面的数据集目录
          - ./elasticsearch/data:/usr/share/elasticsearch/data  
          - ./elasticsearch/plugins:/usr/share/elasticsearch/plugins
        ports:
          - "9200:9200"
          - "9300:9300"
        networks:
          - elastic
    
      kibana:
        image: docker.elastic.co/kibana/kibana:7.17.20
        container_name: kibana
        environment:
          - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
          - I18N_LOCALE=zh-CN
        ports:
          - "5601:5601"
        depends_on:
          - elasticsearch
        networks:
          - elastic
        restart: unless-stopped
    
    networks:
      elastic:
        driver: bridge
  2. 注意数据卷目录不要配置错,别忘了提前把IK分词器目录放到plugins数据卷目录中

  3. 端口冲突的改下端口,其他的就不要修改了。

  4. 在主目录(docker-compose.yml 同级目录)执行docker compose up -d,启动容器(有的是docker-compose up -d 自己提前确认下),通过docker compose ps 查看容器运行状态

验证服务状态

  • 用 docker-compose ps命令查看容器状态,确认两者均为 "Up"。
  • 访问 http://你的服务器IP:9200。如果浏览器返回包含 "you know, for search"的 JSON 信息,说明 Elasticsearch 已成功运行。
  • 访问 http://你的服务器IP:5601。稍等片刻(Kibana 启动需要一些时间),即可看到 Kibana 的 Web 界面
  • 根据下面的指示,进入elasticsearch的命令访问界面。
  1. 执行下面的elasticsearch的解析指令,如果能正常返回分词数据,说明IK分词器插件也加载成功

    yaml 复制代码
    POST /_analyze
    {
      "analyzer": "ik_smart",
      "text": "elastic真的太棒了"
    }
相关推荐
爱喝矿泉水的猛男2 小时前
ssh远程访问另一台windows(可扩展到docker环境)
docker·ssh·zerotier
gggg远2 小时前
docker详解
运维·docker·容器
ALex_zry4 小时前
Consul全方位入门指南:第二阶段—— 实操。Consul核心功能与项目集成
运维·docker·微服务·云原生·架构
q***65695 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
热爱学习的小怪兽5 小时前
Docker容器的一些总结
运维·docker·容器
要站在顶端5 小时前
基于 curl 实现 Jenkins 上传制品到 JFrog Artifactory
运维·ci/cd·jenkins
❀͜͡傀儡师6 小时前
Docker一键部署Nexus Terminal,高颜值SSH新体验
docker·容器·ssh
周全全6 小时前
基于ElasticSearch的语义检索学习-向量化数据、向量化相似度、向量化检索
大数据·学习·elasticsearch
TH_17 小时前
腾讯云-(10)-宝塔面板-Docker下安装Elasticsearch
elasticsearch·docker·容器
risc1234567 小时前
【Elasticsearch】AwarenessAllocationDecider 感知分片决策器的处理逻辑
elasticsearch