基于docker安装ElasticSearch集群
2019-10-07 本文已影响0人
凌康ACG
2019年10月7日 18:25:55 ElasticSearch最新版7.4.0
基于docker-compose.yml安装ElasticSearch集群(单机两个节点)
docker和compose的版本
场景描述
公司开发的挂车平台GPS服务模块涉及到了亿级位置信息数据,其他同事没有解决方案把皮球踢到我这,让我负责。需求包括轨迹回显、历史轨迹、时间段车辆位置等需求,直接sql查询肯定不行的,因此使用ElasticSearch解决方案。
一、安装前准备
1、ElasticSearch是基于java的
需要安装jdk环境,我这里由于是使用最新版的7.4.0,需要支持LTS,jdk9以上才支持,所以这里我使用openjdk,使用docker直接拉取:
docker pull openjdk:9
ps:也可以尝试使用openjdk11---docker pull openjdk:11
2、vm.max_map_count内核设置需要至少设置为262144用于生产
#查看vm.max_map_count命令
grep vm.max_map_count /etc/sysctl.conf
可在 /etc/sysctl.conf
中加入
vm.max_map_count=262144
让设置实时生效:
sysctl -w vm.max_map_count=262144
3、虚拟机的运行内存:2G以上(因为是集群)
二、安装
在/usr/local/docker/elasticsearch
下创建docker-compose.yml
内容如下
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
执行docker-compose up
检查集群状态:curl http://127.0.0.1:9200/_cat/health