ElasticSearch是这两年非常流行的搜索引擎+数据库解决方案;ES具有可扩展、易于多语言操作等优势。Docker是云生态下流行的即开即用技术工具。本文简单介绍下利用docker搭建ES集群的过程。
参考文档
1. Docker拉取ES镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.0
2. 启动
启动master
docker run -d -p 9200:9200 -p 9300:9300 --name elas1 -h elas1 -e cluster.name=xxx-es -e cluster.initial_master_nodes=elas1 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e xpack.security.enabled=false docker.elastic.co/elasticsearch/elasticsearch:7.1.0
报错1
max virtual memory areas vm.max_map_count [65530] is too low
查下来提示是母机操作系统参数设置太小,更改/etc/sysctl.conf中的参数。
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
报错2
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
7.1.0版本启动时需要加上日志里面提供的3个参数之一;这里我加上cluster.initial_master_nodes
这个。
启动slave1 和 slave2两个节点
docker run -d -p 9211:9200 -p 9311:9300 --link elas1 --name elas2 -e cluster.name=xxx-es -e cluster.initial_master_nodes=elas1 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e xpack.security.enabled=false -e discovery.zen.ping.unicast.hosts=elas1 docker.elastic.co/elasticsearch/elasticsearch:7.1.0
docker run -d -p 9222:9200 -p 9322:9300 --link elas1 --name elas3 -e cluster.name=xxx-es -e cluster.initial_master_nodes=elas1 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e xpack.security.enabled=false -e discovery.zen.ping.unicast.hosts=elas1 docker.elastic.co/elasticsearch/elasticsearch:7.1.0
3.安装Kibana
docker run -d --name kibana --link elas1 -e ELASTICSEARCH_HOSTS=http://elas1:9200 -p 5601:5601 docker.elastic.co/kibana/kibana:7.1.0
在启动kibana容器失败后查看日志,发现有一个没法路由的地址elasticsearch,怀疑是启动参数的问题,终于在中文版的栈溢出网站找到了原因,因为新版本的ES更改了环境变量名字为ELASTICSEARCH_HOSTS
。更新后重新拉起容器即可。
{"type":"log","@timestamp":"2019-06-25T13:56:10Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
{"type":"log","@timestamp":"2019-06-25T13:56:10Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
{"type":"log","@timestamp":"2019-06-25T13:56:10Z","tags":["warning","task_manager"],"pid":1,"message":"PollError No Living connections"}
4. 验证(略)
curl http://localhost:9200/_cat/health?v