Linux Docker 部署 Elasticsearch (ES) 集群详解教程

1. 安装 Docker

首先,确保你的 Linux 系统上已经安装了 Docker。如果尚未安装,可以通过以下命令进行安装:

bash 复制代码
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io

启动并启用 Docker 服务:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker
2. 创建 Docker Compose 配置文件

在项目目录下创建一个名为 docker-compose.yml 的文件,内容如下:

yaml 复制代码
version: '3'
services:
  elasticsearch-node1:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.x.x
    container_name: es-node1
    environment:
      - node.name=es-node1
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es-node2,es-node3
      - cluster.initial_master_nodes=es-node1,es-node2,es-node3
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300

  elasticsearch-node2:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.x.x
    container_name: es-node2
    environment:
      - node.name=es-node2
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es-node1,es-node3
      - cluster.initial_master_nodes=es-node1,es-node2,es-node3
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata2:/usr/share/elasticsearch/data

  elasticsearch-node3:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.x.x
    container_name: es-node3
    environment:
      - node.name=es-node3
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es-node1,es-node2
      - cluster.initial_master_nodes=es-node1,es-node2,es-node3
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata3:/usr/share/elasticsearch/data

volumes:
  esdata1:
    driver: local
  esdata2:
    driver: local
  esdata3:
    driver: local

该配置文件定义了 3 个 Elasticsearch 节点,它们组成一个集群,每个节点都将数据存储在独立的卷上。

3. 启动 Elasticsearch 集群

docker-compose.yml 文件所在的目录中运行以下命令:

bash 复制代码
docker-compose up -d

此命令将启动 3 个 Elasticsearch 节点并组成一个集群。你可以通过以下命令查看运行状态:

bash 复制代码
docker-compose ps
4. 验证集群状态

可以通过 API 请求检查集群状态:

bash 复制代码
curl -X GET "localhost:9200/_cluster/health?pretty"

如果集群状态为 green,说明集群已成功启动且工作正常。

5. 集群环境部署详解

Elasticsearch 集群是一种分布式架构,通过水平扩展节点来提升系统的容量和性能。一个典型的集群通常包含多个 Master 节点、Data 节点和协调节点。在生产环境中,通常会通过独立的配置文件来指定节点角色,确保 Master 节点和 Data 节点的职责明确。

  • Master 节点:负责管理整个集群的元数据,包括节点加入/退出、索引创建/删除、分片分配等操作。一个集群应该有多个 Master 节点以提高容错性。
  • Data 节点:负责存储实际的数据,并执行索引、搜索等操作。Data 节点的数量决定了集群的存储容量和处理能力。

在生产环境中,确保集群健康是非常重要的,可以通过设置警报和自动化监控来及时检测和修复问题。

通过 Docker 部署 Elasticsearch,可以极大简化集群的管理和扩展。无论是单节点还是集群部署,Docker 都能提供一致的运行环境,极大地提高了灵活性和可维护性。在生产环境中,还应根据具体需求优化内存分配、数据持久化和安全性配置。

相关推荐
老蒋新思维几秒前
创客匠人万人峰会落幕:AI 智能体如何重塑知识变现的效率革命
大数据·人工智能·重构·创始人ip·创客匠人·知识变现
CQ_YM1 分钟前
Linux标准IO
linux·系统编程·标准io
zl_dfq3 分钟前
Linux 之 【简易版的命令行解释器】(getcwd、strtok)
linux
怀旧,4 分钟前
【Linux系统编程】10. 进程控制(下)
linux·运维·服务器
@HNUSTer4 分钟前
基于 GEE 使用 Sentinel-5P 数据实现研究区多种大气污染物(SO₂、NO₂、CO、气溶胶)监测
云计算·数据集·遥感大数据·gee·云平台·气溶胶·sentinel-5p
神算大模型APi--天枢6467 分钟前
国产硬件架构大模型算力服务平台:本地化部署与标准端口开发的创新实践
大数据·人工智能·科技·深度学习·架构·硬件架构
wanhengidc7 分钟前
云手机 科技展现
服务器·科技·安全·游戏·智能手机
Evan芙8 分钟前
DNS域名三级结构,DNS服务工作原理,涉及递归和迭代查询原理总结
linux·运维·服务器
九河云9 分钟前
华为云 GaussDB 分布式架构解析:企业级数据库高可用与性能调优方案
分布式·架构·华为云·云计算·gaussdb
老蒋新思维14 分钟前
创客匠人万人峰会解码:AI+IP 能力裂变,知识变现告别 “单点依赖” 时代
大数据·网络·人工智能·tcp/ip·创始人ip·创客匠人·知识变现