新手搭建项目系列——elasticsearch集群搭建
elasticsearch集群搭建
集群配置信息
主要自己使用验证技术实现,所以一主一从能够达到相互容灾效果就行
节点名 | ip |
---|
es-node-01 | 192.168.136.131 | es-node-02 | 192.168.136.132 |
创建所需目录
mkdir /docker
mkdir /docker/es
mkdir /docker/es/data
mkdir /docker/es/config
mkdir /docker/es/plugins
mkdir /docker
mkdir /docker/es
mkdir /docker/es/data
mkdir /docker/es/config
mkdir /docker/es/plugins
集群配置
es-node-01
下载elasticsearch镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.13.2
下载elasticsearch-hd镜像
docker pull containerize/elastichd
下载elasticsearch-ik、elasticsearch-pinyin插件
ik分词器插件 
pinyin支持拼音搜索的插件 
下载与elasticsearch同版本号7.13.2的包,插件版本和elasticsearch必须一致不否则会出现报错
解压插件至plugins
使用FanalShell上传插件包至/docker/es/plugins文件夹中 
yum install -y unzip
cd /docker/es/plugins
unzip elasticsearch-analysis-ik-7.13.2.zip -d elasticsearch-analysis-ik
unzip elasticsearch-analysis-pinyin-7.13.2.zip -d elasticsearch-analysis-pinyin
配置elasticsearch.yml
vi /docker/es/config/elasticsearch.yml
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
配置docker-compose.yml
vi /docker/es/docker-compose.yml
version: '2.2'
services:
es-node-01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
container_name: es-node-01
restart: always
environment:
- node.name=es-node-01
- cluster.name=es-elasticsearch-cluster
- network.publish_host=192.168.136.131
- network.host=0.0.0.0
- discovery.seed_hosts=192.168.136.131,192.168.136.132
- cluster.initial_master_nodes=192.168.136.131,192.168.136.132
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/docker/es/data
- /docker/es/plugins:/usr/share/elasticsearch/plugins
- /docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
elastichd:
image: containerize/elastichd:latest
container_name: elasticsearch-hd
ports:
- 9800:9800
depends_on:
- "es-node-01"
links:
- "es-node-01"
volumes:
data01:
driver: local
修改vm.max_map_count
vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
启动elasticsearch
cd /docker/es
docer-compose up -d
docker ps
 这时候已经可以在宿机上访问这个节点的elasticsearch了 可以先在虚拟机上使用 curl尝试连接elasticsearh
curl localhost:9200
出现如下结果就表示这个节点本机已经可以访问了 我们可以在宿机上在尝试下  宿机访问节点1:es-node-01 192.168.136.131:9200 与自身访问结果一直,显示如下 
es-node-02
与es-node-01差异
es-node-02可以按照es-node-01的方法如法炮制的配置,只需要修改docker-compose.yml中一些配置参数即可
配置docker-compose.yml
vi /docker/es/docker-compose.yml
version: '2.2'
services:
es-node-02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
container_name: es-node-02
restart: always
environment:
- node.name=es-node-02
- cluster.name=es-elasticsearch-cluster
- network.publish_host=192.168.136.132
- network.host=0.0.0.0
- discovery.seed_hosts=192.168.136.131,192.168.136.132
- cluster.initial_master_nodes=192.168.136.131,192.168.136.132
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/docker/es/data
- /docker/es/plugins:/usr/share/elasticsearch/plugins
- /docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
volumes:
data02:
driver: local
elasticsearch-hd 我只在es-node-01中使用了,es-node-02中未使用
elasticsearch-hd
es-node-01和es-node-02都运行起来后就可以访问es-node-01上配置的elasticsearch-hd 将默认连接的127.0.0.1:9200替换为我们配置的192.168.136.131:9200然后点击Connect 集群状态显示为Green,表示我们的集群已经建立成功,下面可以看到集群的信息。 
查看集群状态
http://192.168.136.131:9200/_cat/health?v
查看插件
http://192.168.136.131:9200/_cat/plugins
问题排查
如果集群建立有问题,首先排查每个节点是否正在运行,如果节点未运行,可以看下节点启动时的logs,来排查问题
docker logs 【container name/id】
可根据logs中的errors等逐个排查
总结
本章主要介绍通过docker、docker-compose配置elasticsearch集群级elasticsearch-hd
|