0. 前言
  最近基本都是学一些环境配置,和一些中间件的安装与配置。没有实际编写代码。可能看起来有点水,我对自己的学习方式是,先要了解各个中间件的安装配置以及简单使用,理论应用场景,然后我在小项目中,逐步引入这些高大上的中间件,看实际效果怎样,合不合适我自己用。一开始绝对不会花太多时间去了解技术系统,我觉得,我的工作是做应用开发,不是底层研发。开发就是以满足实际需求为前提,怎么做到适合自己使用,怎么方便怎么来。
  也有和一些人聊过,一般开发人员太爱自己造轮子了,实际项目,还是要用市场上普遍使用的开源软件。只有自己平时学习与提高时,造一些轮子。但是造轮子对于我来说,目前还是太难了。能合理用好各个组件,快速实现业务需求,才是我应该注重的点。每个人对自己的要求是不一样的。

1. 下载Image
  如果不清楚最新版本的,可以到https://hub.docker.com/r/library/elasticsearch/ 这里查询

docker pull elasticsearch:6.4.2

  运行es

docker run -d --name es -p 9200:9200 -e http.port=9200 -e http.cors.allow-origin="*" -e http.cors.enabled=true -e http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization -e http.cors.allow-credentials=true elasticsearch:6.4.2

  运行elastichd

docker run -p 9800:9800 -d --link es:demo containerize/elastichd

  这里的集群监控状态为:Yellow,表示当前只有一个节点,没有配置集群

  运行dejavu

docker run -d -p 1358:1358 appbaseio/dejavu

  这个要注意,如果要成功连接到ES的话,要先创建好索引(Index) 参考下面第3点,curl -X PUT -H "Content-Type: application/json" http://172.16.23.203:2101/wunaozai, 创建后,才能进行连接

2. 配置集群及测试

  创建一个虚拟网络

docker network create --driver bridge --subnet 172.22.17.0/24 --gateway 172.22.17.254 es_net

  创建3个elasticsearch节点

 1 # node1
 2 docker run -d --name es_1 --net es_net --ip 172.22.17.1 \
 3     -p 2101:9200 -p 3101:9300 -v /etc/localtime:/etc/localtime \
 4     -e "cluster.name=wunaozai" \
 5     -e "node.name=node1" \
 6     -e "network.host=172.22.17.1" \
 7     -e "network.bind_host=0.0.0.0" \
 8     -e "discovery.zen.ping.unicast.hosts=172.22.17.1,172.22.17.2,172.22.17.3" \
 9     -e "discovery.zen.minimum_master_nodes=1" \
10     -e "http.port=9200" \
11     -e "http.cors.allow-origin=*" \
12     -e "http.cors.enabled=true" \
13     -e "http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization" \
14     -e "http.cors.allow-credentials=true" \
15     elasticsearch:6.4.2
16 # node2
17 docker run -d --name es_2 --net es_net --ip 172.22.17.2 \
18     -p 2102:9200 -p 3102:9300 -v /etc/localtime:/etc/localtime \
19     -e "cluster.name=wunaozai" \
20     -e "node.name=node2" \
21     -e "network.host=172.22.17.2" \
22     -e "network.bind_host=0.0.0.0" \
23     -e "discovery.zen.ping.unicast.hosts=172.22.17.1,172.22.17.2,172.22.17.3" \
24     -e "discovery.zen.minimum_master_nodes=1" \
25     -e "http.port=9200" \
26     -e "http.cors.allow-origin=*" \
27     -e "http.cors.enabled=true" \
28     -e "http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization" \
29     -e "http.cors.allow-credentials=true" \
30     elasticsearch:6.4.2
31 # node3
32 docker run -d --name es_3 --net es_net --ip 172.22.17.3 \
33     -p 2103:9200 -p 3103:9300 -v /etc/localtime:/etc/localtime \
34     -e "cluster.name=wunaozai" \
35     -e "node.name=node3" \
36     -e "network.host=172.22.17.3" \
37     -e "network.bind_host=0.0.0.0" \
38     -e "discovery.zen.ping.unicast.hosts=172.22.17.1,172.22.17.2,172.22.17.3" \
39     -e "discovery.zen.minimum_master_nodes=1" \
40     -e "http.port=9200" \
41     -e "http.cors.allow-origin=*" \
42     -e "http.cors.enabled=true" \
43     -e "http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization" \
44     -e "http.cors.allow-credentials=true" \
45     elasticsearch:6.4.2

  运行,上面es_1,es_2,es_3是集群的3个几点。下面那个es是上面运行的单节点。

  访问 ElisticHD http://172.16.23.203:9800/ 从下图,可以看到集群的一些信息

  集群节点如下,访问任意一个节点,效果都是一样的,都是操作同一份数据。

1 http://172.16.23.203:2101/
2 http://172.16.23.203:2102/
3 http://172.16.23.203:2103/

3. 数据测试

  创建index

 1 curl -X PUT -H "Content-Type: application/json" http://172.16.23.203:2101/wunaozai -d '
 2 {
 3     "mappings":{
 4         "it": {
 5             "properties": {
 6                 "bookId": {"type": "long"},
 7                 "bookName": {"type": "text"},
 8                 "publishDate": {"type": "date"}
 9             }
10         }
11     }
12 }
13 '

  查看index

curl -X GET http://172.16.23.203:2101/wunaozai

  删除index

curl -X DELETE http://172.16.23.203:2101/wunaozai

  查询type

curl -X GET -H "Content-Type: application/json" http://172.16.23.203:2101/wunaozai/_mapping

  插入数据

1 curl -H "Content-Type: application/json" -X POST http://172.16.23.203:2101/wunaozai/it/001 -d '{"bookId": 1, "bookName":"<aa>", "publishDate":"2018-01-01"}'
2 curl -H "Content-Type: application/json" -X POST http://172.16.23.203:2102/wunaozai/it/002 -d '{"bookId": 2, "bookName":"<bb>", "publishDate":"2018-01-02"}'
3 curl -H "Content-Type: application/json" -X POST http://172.16.23.203:2103/wunaozai/it/003 -d '{"bookId": 3, "bookName":"<cc>", "publishDate":"2018-01-03"}'

  更多操作就要参考官方文档

4. 数据持久化

  一开始无论是通过 -v 还是通过 --volumes-from 进行挂载,都会提示以下错误

  后来查询资料发现,es是不能在root权限下运行的,同理,在elasticsearch:6.4.2容器里,是以elasticsearch用户运行的,因此只要把需要进行挂载的Volumn用户组改为elasticsearch即可,这里需要用1000:1000 ,要用用户ID和组ID,因为host里的用户ID与Container里的用户ID是不一样的。

1 chown 1000:1000 -R data
2
3 docker run -it --name es -p 9200:9200 -v /etc/localtime:/etc/localtime -v /root/workspace/docker/es/data:/usr/share/elasticsearch/data -e http.port=9200 -e http.cors.allow-origin="*" -e http.cors.enabled=true -e http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization -e http.cors.allow-credentials=true elasticsearch:6.4.2

  通过上面命令运行后,插入数据,然后停止容器,删除容器,再重新创建容器,上次创建的数据还是存在的,自此就实现了ES数据的host持久化。

参考资料:
  https://github.com/appbaseio/dejavu/
  https://hub.docker.com/_/elasticsearch/
  http://www.codesheep.cn/2018/10/30/es-visualization/
  http://www.codesheep.cn/2018/11/06/es-2-node-cluster/
  https://github.com/elastic/elasticsearch-docker/issues/111
  https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docker.html#_b_bind_mounted_configuration

本文地址: https://www.cnblogs.com/wunaozai/p/9928962.html

转载于:https://www.cnblogs.com/wunaozai/p/9928962.html

物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建相关推荐

  1. 物联网架构成长之路(24)-Docker练习之Compose容器编排

    0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...

  2. 物联网架构成长之路(18)-接阿里云OSS服务

    1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...

  3. 物联网架构成长之路(35)-利用Netty解析物联网自定义协议

    一.前言 前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式.这种方式,大部分一看就知道是熟悉Web开发.软件开发的人喜欢用的方式.由于我也是做 ...

  4. 2020 物联网架构成长之路-物联网架构小结

    1. 说明 这一小节,也不具体讲些什么了.最近一个半月都在摸鱼,没什么事做,慢慢学习着SpringBoot和SpringCloud.下面两张图是进行的一次小结.以后随着深入,整个架构肯定是会变的.现在 ...

  5. 物联网架构成长之路(3)-EMQ消息服务器了解

    1. 了解 物联网最基础的就是通信了.通信协议,物联网协议好像有那么几个,以前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,所以我也不例外,不搞特殊,采用MQTT协议,选定了协议,接 ...

  6. 架构成长之路 | 图解分布式共识算法Paxos议会协议

    作者:码途   阿里云智能-全球技术服务部 在系列的前一篇文章中,阐述了 Paxos 的单法令教会协议,也在文章的总结中提到了教会协议只是作为 Paxos 最核心的共识算法,并不具备实际的单独应用场景 ...

  7. 微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建

    微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建 通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构 ...

  8. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  9. 架构成长之路:常见的五种MySQL高可用方案分析

    1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中 ...

  10. 架构成长之路 | 图解分布式共识算法Paxos教会协议

    作者:码途   阿里云智能-全球技术服务部 分布式共识算法是保证分布式一致性的基础,本文主要以简化类比的方式阐述了Paxos算法中的单法令教会会议(The Single-decree SYNOD)的算 ...

最新文章

  1. JSP与ASP的比较
  2. iOS 与OS X多线程和内存管理 笔记 ARC与所有权修饰符
  3. Vijos p1484 ISBN号码
  4. ns3 入门案例2:third.cc
  5. servlet 开发入门生命周期
  6. 语言模型总结(待完善)
  7. 学个Antenna:手机天线入门
  8. 穿越机F4飞控F405代码pcb文件,原理图
  9. 因子分析模型 - Python 做因子分析简直比 SPSS 还简单 - ( Python、SPSS)
  10. 类似endnote_除了EndNote,竟还有如此强大的文献管理软件!重点是正版免费!
  11. 如何进入进计算机组策略,如何进入组策略?
  12. win服务器系统安全模式,安全模式详解
  13. 上海国拍服务器位置,上海国拍系统的重大漏洞
  14. Docker容器安装Mysql8
  15. 外国程序员整理的Java资料大全
  16. README.MD · 008期
  17. sqlite3出现SQLITE_BUSY错误码的原因以及解决方法
  18. python3函数的参数:必选参数(位置参数)、默认参数、可变参数、关键字参数、命名关键字参数
  19. iOS开发Storyboard中UITableView顶部默认空白 - 芒果iOS
  20. python中sql拼接字符串过程

热门文章

  1. 学生管理系统--golang--简单版本---开发框架
  2. python检测excel是否打开_Python: 如何判断远程服务器上Excel文件是否被人打开
  3. python物性库能调用哪些物质_浅谈湿空气物性计算软件CoolProp的应用
  4. grads 相关系数_Grads综合实习报告
  5. 腾讯区块链+医疗,一场值得期待的卫生行业创新探索
  6. Lync 小技巧-53-Windows 2012 R2-加域-电脑-自动-登录
  7. Firefox和Chrome浏览器导出书签
  8. sysstat工具包提供的主要命令
  9. 如何打开SAR 文件
  10. iPhone程序中如何生成随机数