实战案例丨用 Docker Compose 快速运行一个 3 节点 Elasticsearch 集群
出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!
使用 Docker 在笔记本电脑上安装 Elasticsearch 集群进行测试是非常方便的。在这篇文章中,我将向您展示如何快速、简便地在 docker 上运行一个3节点的 elasticsearch 集群进行测试。
先决条件
我们需要设置“vm.max_map_count”内核参数:
$ sudo sysctl -w vm.max_map_count=262144
若要永久设置此值,请将其添加到“/etc/sysctl.conf”并使用“sudo sysctl -p”命令重新加载。
Docker Compose
我们将引用的 docker compose 文件:
version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - http.cors.enabled=true - http.cors.allow-origin=* - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata1:/home/ruan/workspace/docker/elasticsearch/data ports: - 9200:9200 networks: - esnet elasticsearch2: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 container_name: elasticsearch2 environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - http.cors.enabled=true - http.cors.allow-origin=* - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "discovery.zen.ping.unicast.hosts=elasticsearch" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata2:/home/ruan/workspace/docker/elasticsearch/data networks: - esnet elasticsearch3: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 container_name: elasticsearch3 environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - http.cors.enabled=true - http.cors.allow-origin=* - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "discovery.zen.ping.unicast.hosts=elasticsearch" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata3:/home/ruan/workspace/docker/elasticsearch/data networks: - esnet kibana: image: 'docker.elastic.co/kibana/kibana:6.3.2' container_name: kibana environment: SERVER_NAME: kibana.local ELASTICSEARCH_URL: http://elasticsearch:9200 ports: - '5601:5601' networks: - esnet headPlugin: image: 'mobz/elasticsearch-head:5' container_name: head ports: - '9100:9100' networks: - esnet volumes: esdata1: driver: local esdata2: driver: local esdata3: driver: local networks: esnet:
现在,只需确保我们在 compose 文件中所引用的路径是真实存在的,在我展示的实例中,其路径是“/home/ruan/workspace/docker/elasticsearch/data”。
部 署
使用 docker compose 来部署 elasticsearch 集群:
$ docker-compose up
它将在前台运行,您可以在控制台看到其输出结果。
测试 Elasticsearch
接下来,让我们运行几个查询。首先,检查群集运行状况 api:
$ curl http://127.0.0.1:9200/_cluster/health?pretty { "cluster_name" : "docker-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, "active_primary_shards" : 1, "active_shards" : 2, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
创建一个复制计数为2的索引:
$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/test -d '{"number_of_replicas": 2}'
将文档提取到 elasticsearch:
$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/test/docs/1 -d '{"name": "ruan"}' {"_index":"test","_type":"docs","_id":"1","_version":1,"result":"created","_shards":{"total":3,"successful":3,"failed":0},"_seq_no":0,"_primary_term":1}
查看索引:
$ curl http://127.0.0.1:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open test w4p2Q3fTR4uMSYBfpNVPqw 5 2 1 0 3.3kb 1.1kb green open .monitoring-es-6-2018.04.29 W69lql-rSbORVfHZrj4vug 1 1 1601 38 4mb 2mb
Kibana
Kibana 也包含在应用栈中,可以通过“http://localhost:5601/”访问它,如下图所示:
Elasticsearch Head UI
我喜欢直接使用 RESTFul API,但是如果您想使用 UI 与 Elasticsearch 进行交互,你可以通过“http:// localhost:9100/”访问它,如下图所示:
删除群集
因为它在前台运行,所以您只需按下“ctrl + c”就可以持续地将数据保存在我们的 compose 文件中。当您再次启动集群时,数据仍然会存在。
浏览 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html 了解更多Elasticsearch 的相关信息!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
为数据计算提供强力引擎,阿里云文件存储HDFS v1.0公测发布
在2019年3月的北京云栖峰会上,阿里云正式推出全球首个云原生HDFS存储服务—文件存储HDFS,为数据分析业务在云上提供可线性扩展的吞吐能力和免运维的快速弹性伸缩能力,降低用户TCO。阿里云文件存储HDFS的发布真正解决了HDFS文件系统不适应云上场景的缺陷问题,用户无须花费精力维护和优化底层存储。云时代,通过借助虚拟化技术,大数据分析的计算框架在云上逐渐实现了快速部署和弹性伸缩。但是作为数据底座的HDFS文件系统,它在设计之初并没有考虑到上云场景。其数据的扩缩容、故障硬件排除都依赖大量手工运维,因此其服务质量难以保证。在随着其他计算引擎一起弹性部署时,HDFS会成为整个计算框架的短板,限制了业务的整体弹性伸缩能力,增加了规划和运维难度。 为响应用户在云上使用HDFS的诉求,文件存储HDFS应运而生。产品设计方面,得益于文件存储H
- 下一篇
微服务架构 - 巧妙获取被墙的Docker镜像
微服务架构 - 巧妙获取被墙的Docker镜像在国内由于种种原因,有些Docker镜像直接是获取不到的,特别是k8s中的一些镜像。本人在部署k8s中的helm组件时需要获取tiller镜像,如果直接用如下命令: docker pull gcr.io/kubernetes-helm/tiller:v2.12.1会由于网络原因连接不上从而导致获取镜像失败。 经查相关资料,可以有一种“曲线求国”的方案,在此通过实现巧妙获取被墙的tiller镜像方法分享给大家。 1、前期准备这种“曲线求国”的方案,首先要准备2个网站的账号: GitHub,需要有一个GitHub账号,如果没有的,可以到官网https://github.com上注册(对于程序员来说,这个是GitHub必备的)Docker Hub,需要有一个Docker Hub账号,如果没有的,可以到官网https://hub.docker.com上注册(对于学Docker的,这个Docker Hub也是必备的)2、自定义Dockerfile通过定义Dockerfile可以构建出镜像,为此首先先自定义一个tiller的镜像的Dockerfile文...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主