docker-elasticsearch集群环境搭建

本文旨在搭建最简单docker elasticsearch集群环境

docker pull elasticsearch:7.2.0
docker pull kibana

mkdir elasticsearch/data/{node0,node1,node2} -p
mkdir elasticsearch/logs/{node0,node1,node2} -p
cd elasticsearch/
chmod 0777 data/* -R && chmod 0777 logs/* -R
目录结构
├── docker-compose.yml
├── elasticsearch
│ ├── conf
│ │ ├── node1
│ │ ├── node2
│ │ └── node3
│ ├── data
│ │ ├── node1
│ │ ├── node2
│ │ └── node3
│ └── logs
│ ├── node1
│ ├── node2
│ └── node3
└── kibana
└── conf
└── kibana.yml

重新设置系统级别的默认打开文件最大个数 防止JVM报错

echo vm.max_map_count=655360 >> /etc/sysctl.conf

在root账户执行这一句 作用是重新载入sysctl系统参数

sysctl -p

docker-compose.yml文件
version: '3'
services:
  es1:
    # es镜像版本,我之前docker拉取的版本是7.2.0 你需要在这里修改为自己的版本
    image: elasticsearch:7.2.0
    # 容器名称
    container_name: es1
    privileged: true
    # 启动时的环境参数 因为我的服务器配置较低所以分配了128m
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    # 挂载数据卷
    volumes:
      # 挂载data
      - ./elasticsearch/data/node1:/usr/share/elasticsearch/data
      # 挂载自己的配置文件
      - ./elasticsearch/conf/node1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      # 挂载日志文件
      - ./elasticsearch/logs/node1:/usr/share/elasticsearch/logs
      # 端口映射关系
    ports:
      - 9201:9200
      - 9301:9300
    # 网络信息
    networks:
      - esnet
  es2:
    # es镜像版本,我之前docker拉取的版本是7.2.0 你需要在这里修改为自己的版本
    image: elasticsearch:7.2.0
    # 容器名称
    container_name: es2
    privileged: true
    # 启动时的环境参数 因为我的服务器配置较低所以分配了128m
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    # 挂载数据卷
    volumes:
      # 挂载data
      - ./elasticsearch/data/node2:/usr/share/elasticsearch/data
      # 挂载自己的配置文件
      - ./elasticsearch/conf/node2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      # 挂载日志文件
      - ./elasticsearch/logs/node2:/usr/share/elasticsearch/logs
      # 端口映射关系
    ports:
      - 9202:9200
      - 9302:9300
    # 网络信息
    networks:
      - esnet
  es3:
    # es镜像版本,我之前docker拉取的版本是7.2.0 你需要在这里修改为自己的版本
    image: elasticsearch:7.2.0
    # 容器名称
    container_name: es3
    privileged: true
    # 启动时的环境参数 因为我的服务器配置较低所以分配了128m
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    # 挂载数据卷
    volumes:
      # 挂载data
      - ./elasticsearch/data/node3:/usr/share/elasticsearch/data
      # 挂载自己的配置文件
      - ./elasticsearch/conf/node3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      # 挂载日志文件
      - ./elasticsearch/logs/node3:/usr/share/elasticsearch/logs
      # 端口映射关系
    ports:
      - 9203:9200
      - 9303:9300
    # 网络信息
    networks:
      - esnet
  kibana:
    image: kibana:7.2.0
    container_name: kibana
    privileged: true
    ports:
      - 5601:5601
    environment:
      - ELASTICSEARCH_URL=http://es1:9200
    volumes:
      - ./kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
    networks:
      - esnet
# 使用桥接的网络连接方式
networks:
  esnet:
    driver: bridge
主节点的配置文件
# 集群名称 EsCluster
cluster.name: huaweiES
# 节点名称
node.name: es1
# 是否为主节点
node.master: true
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200

# 回环地址
network.host: 0.0.0.0

#network.publish_host: master-ip


bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"

# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: ["es1"]
xpack.security.enabled: false
indices.fielddata.cache.size: 50%
es2的配置文件
# 集群名称 EsCluster
cluster.name: huaweiES
# 节点名称
node.name: es2
# 是否为主节点
node.master: false
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200
# 回环地址
network.host: 0.0.0.0

#network.publish_host: master-ip
# 有资格成为主节点的资格列表
discovery.zen.ping.unicast.hosts: ["es1"]

# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"

# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1

xpack.security.enabled: false

indices.fielddata.cache.size: 50%
es3的配置文件
# 集群名称 EsCluster
cluster.name: huaweiES
# 节点名称
node.name: es3
# 是否为主节点
node.master: false
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200
# 回环地址
network.host: 0.0.0.0

#network.publish_host: master-ip
# 有资格成为主节点的资格列表
discovery.zen.ping.unicast.hosts: ["es1"]

# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"

# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1

xpack.security.enabled: false

indices.fielddata.cache.size: 50%
kibana配置文件

cat kibana/conf/kibana.yml

elasticsearch.hosts: http://es1:9200
server.host: "0.0.0.0"
server.name: kibana
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN

如果说以上配置文件的路径都没有什么问题的话,应该可以访问kibana了

在这里插入图片描述

要使用Docker-compose搭建Elasticsearch集群,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了DockerDocker-compose。 2. 创建一个名为docker-compose.yml的文件,并在其中定义Elasticsearch集群的配置。你可以使用以下示例作为参考: ``` version: '3' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es01 environment: - node.name=es01 - cluster.name=my-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 ports: - 9200:9200 volumes: - esdata01:/usr/share/elasticsearch/data es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es02 environment: - node.name=es02 - cluster.name=my-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 volumes: - esdata02:/usr/share/elasticsearch/data es03: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es03 environment: - node.name=es03 - cluster.name=my-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 volumes: - esdata03:/usr/share/elasticsearch/data volumes: esdata01: esdata02: esdata03: ``` 3. 在终端中,进入包含docker-compose.yml文件的目录,并运行以下命令启动Elasticsearch集群: ``` docker-compose up -d ``` 这将会启动一个包含三个Elasticsearch节点的集群。 4. 使用以下命令验证集群是否成功启动: ``` docker ps ``` 你应该能够看到三个运行中的Elasticsearch容器,每个容器对应一个节点。 现在,你已经成功使用Docker-compose搭建了一个Elasticsearch集群。你可以通过访问http://localhost:9200来访问集群Elasticsearch节点。 #### 引用[.reference_title] - *1* *3* [Elasticsearch (一) 基于Docker-compose 搭建集群](https://blog.csdn.net/m0_67390963/article/details/124240861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Docker-compose Elasticsearch搭建集群】](https://blog.csdn.net/qq_39127761/article/details/126221224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值