物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
0. 前言
最近基本都是学一些环境配置,和一些中间件的安装与配置。没有实际编写代码。可能看起来有点水,我对自己的学习方式是,先要了解各个中间件的安装配置以及简单使用,理论应用场景,然后我在小项目中,逐步引入这些高大上的中间件,看实际效果怎样,合不合适我自己用。一开始绝对不会花太多时间去了解技术系统,我觉得,我的工作是做应用开发,不是底层研发。开发就是以满足实际需求为前提,怎么做到适合自己使用,怎么方便怎么来。
也有和一些人聊过,一般开发人员太爱自己造轮子了,实际项目,还是要用市场上普遍使用的开源软件。只有自己平时学习与提高时,造一些轮子。但是造轮子对于我来说,目前还是太难了。能合理用好各个组件,快速实现业务需求,才是我应该注重的点。每个人对自己的要求是不一样的。
1. 下载Image
如果不清楚最新版本的,可以到https://hub.docker.com/r/library/elasticsearch/ 这里查询
docker pull elasticsearch:6.4.
运行es
docker run -d --name es -p : -e http.port= -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.
运行elastichd
docker run -p : -d --link es:demo containerize/elastichd
这里的集群监控状态为:Yellow,表示当前只有一个节点,没有配置集群
运行dejavu
docker run -d -p : 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/ --gateway 172.22.17.254 es_net
创建3个elasticsearch节点
# node1
docker run -d --name es_1 --net es_net --ip 172.22.17.1 \
-p : -p : -v /etc/localtime:/etc/localtime \
-e "cluster.name=wunaozai" \
-e "node.name=node1" \
-e "network.host=172.22.17.1" \
-e "network.bind_host=0.0.0.0" \
-e "discovery.zen.ping.unicast.hosts=172.22.17.1,172.22.17.2,172.22.17.3" \
-e "discovery.zen.minimum_master_nodes=1" \
-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.
# node2
docker run -d --name es_2 --net es_net --ip 172.22.17.2 \
-p : -p : -v /etc/localtime:/etc/localtime \
-e "cluster.name=wunaozai" \
-e "node.name=node2" \
-e "network.host=172.22.17.2" \
-e "network.bind_host=0.0.0.0" \
-e "discovery.zen.ping.unicast.hosts=172.22.17.1,172.22.17.2,172.22.17.3" \
-e "discovery.zen.minimum_master_nodes=1" \
-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.
# node3
docker run -d --name es_3 --net es_net --ip 172.22.17.3 \
-p : -p : -v /etc/localtime:/etc/localtime \
-e "cluster.name=wunaozai" \
-e "node.name=node3" \
-e "network.host=172.22.17.3" \
-e "network.bind_host=0.0.0.0" \
-e "discovery.zen.ping.unicast.hosts=172.22.17.1,172.22.17.2,172.22.17.3" \
-e "discovery.zen.minimum_master_nodes=1" \
-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.
运行,上面es_1,es_2,es_3是集群的3个几点。下面那个es是上面运行的单节点。
访问 ElisticHD http://172.16.23.203:9800/ 从下图,可以看到集群的一些信息
集群节点如下,访问任意一个节点,效果都是一样的,都是操作同一份数据。
http://172.16.23.203:2101/
http://172.16.23.203:2102/
http://172.16.23.203:2103/
3. 数据测试
创建index
curl -X PUT -H "Content-Type: application/json" http://172.16.23.203:2101/wunaozai -d '
{
"mappings":{
"it": {
"properties": {
"bookId": {"type": "long"},
"bookName": {"type": "text"},
"publishDate": {"type": "date"}
}
}
}
}
'
查看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
插入数据
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"}'
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"}'
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是不一样的。
chown : -R data docker run -it --name es -p : -v /etc/localtime:/etc/localtime -v /root/workspace/docker/es/data:/usr/share/elasticsearch/data -e http.port= -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.
通过上面命令运行后,插入数据,然后停止容器,删除容器,再重新创建容器,上次创建的数据还是存在的,自此就实现了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
物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建的更多相关文章
- 物联网架构成长之路(22)-Docker练习之Etcd服务搭建
0. 前言 时隔多日,前段时间忙完一个可有可无的项目后,又进入摸鱼时间,没有办法,非互联网公司,就是闲得蛋疼.又开始了自学之路.以前入门过Docker,然后又很久没有看了,最近重新看了一下,推荐一下这 ...
- 物联网架构成长之路(25)-Docker构建项目用到的镜像1
0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联 ...
- 物联网架构成长之路(24)-Docker练习之Compose容器编排
0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...
- 物联网架构成长之路(28)-Docker练习之MQ中间件(Kafka)
0. 前言 消息队列MQ,这个在一般的系统上都是会用到的一个中间件,我选择Kafka作为练手的一个中间件,Kafka依赖Zookeeper.Zookeeper安装上一篇博客已经介绍过了. 1. Kaf ...
- 物联网架构成长之路(44)-Docker私有仓库Harbor
0. 前言 安装docker.docker-compose,这些在我以前的博客讲过,这里就不继续说明了,有需要的可以参考我之前的博客. https://www.cnblogs.com/wunaozai ...
- 物联网架构成长之路(27)-Docker练习之Zookeeper安装
0. 前言 准备了解一下消息队列MQ,对比了一些开源的中间件,最后选择Kafka作为以后用到的消息队列,消息队列的应用场景及Kafka与其他消息队列的优缺点这里就不细说了,具体的可以参考其他博客说明. ...
- 物联网架构成长之路(26)-Docker构建项目用到的镜像2
0. 前言 前面介绍的都是一些标准的第三方中间件,基本都是有现成的Dockerfile或者Image,不需要我过多的关心,这一篇要介绍一些自己构建的Docker Image了.刚开始学,Dockerf ...
- 物联网架构成长之路(30)-Spring Boot Admin微服务WebUI监控
0. 前言 一个完整的微服务解决方案包含了许多微服务,基于我们需要观察各个微服务的运行状态,因此Spring Boot 生态提供了Spring Boot Admin 这个组件来实现微服务管理WEB U ...
- 物联网架构成长之路(18)-接阿里云OSS服务
1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...
随机推荐
- 002 Spark的编译
一:不编译 1.不编译的做法 在公司里可能需要编译,但是如果为了简单的学习就不必编译,直接在官方下载即可. 截图为: 二:编译\ 1.下载 http://archive.cloudera.com/cd ...
- (转)HIBERNATE与 MYBATIS的对比
第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好H ...
- windows通过Visual Studio Code中配置GO开发环境(转)
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- IdentityServer4-前后端分离的授权验证(六)
上两节介绍完Hybrid模式在MVC下的使用,包括验证从数据获取的User和Claim对MVC的身份授权.本节将介绍Implicit模式在JavaScript应用程序中的使用,使用Node.js+Ex ...
- 用js来实现那些数据结构01(数组篇01-数组的增删)
在开始正式的内容之前,不得不说说js中的数据类型和数据结构,以及一些比较容易让人混淆的概念.那么为什么要从数组说起?数组在js中是最常见的内存数据结构,数组数据结构在js中拥有很多的方法,很多初学者记 ...
- MyBatis持久层框架学习之01 MyBatis的起源和发展
一.MyBatis的简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyB ...
- python魔法方法-属性转换和类的表示
类型转换魔法 类型转换魔法其实就是实现了str.int等工厂函数的结果,通常这些函数还有类型转换的功能,下面是一些相关的魔法方法: __int__(self) 转换成整型,对应int函数. __lon ...
- Python3高级基础(1)
目录 Introducing Python Object Types 对象类型的优势 Python的核心数据类型 数字 = Number 字符串 列表 = lists 字典 = dictionary ...
- Saltstack cp.get 模块
语法 salt '*' cp.get_file salt://rr /etc/rr cp.get_url 可以从一个URL地址下载文件,URL可以是msater上的路径(salt://),也可以是h ...
- Btrace使用教程
下载 下载链接:https://github.com/btraceio/btrace/releases/tag/v1.3.9 安装及环境配置 1.下载一个压缩包 2.解压 3.配置环境变量 sudo ...