有三个节点分别是node-master(192.168.152.45),node-data1(192.168.152.39), node-data2(192.168.152.29)

在每一太节点上,使用docker安装elasticsearch

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.3

Master node

在node-master节点上,新建一个配置文件:

bootstrap.memory_lock: false
bootstrap.system_call_filter: falsecluster.name: my-application
node.name: node-master
node.master: true
node.data: false
network.publish_host: 192.168.152.45
network.host: 0.0.0.0
http.max_content_length: 1024mb
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping_timeout: 10s
discovery.zen.fd.ping_timeout: 10000s
discovery.zen.fd.ping_retries: 10

network.publish_host,表示发布地址,是唯一的,用来集群各节点的相互通信。

执行命令运行ES:

docker run  --name esmaster --ulimit nofile=65536:131072 -p 9200:9200 -p 9300:9300 -v /home/iie4bu/ddy/docker-elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/iie4bu/ddy/docker-elasticsearch/data:/usr/share/elasticsearch/data  -e "ES_JAVA_OPTS=-Xms5120m -Xmx5120m" docker.elastic.co/elasticsearch/elasticsearch:6.2.3

如果想要在后台运行,可以添加 -d 选项

Data node

data node 的配置文件如下:

bootstrap.memory_lock: false
bootstrap.system_call_filter: falsecluster.name: my-application
node.name: node-data1
node.master: false
node.data: true
network.publish_host: 192.168.152.39
network.host: 0.0.0.0
http.max_content_length: 1024mb
discovery.zen.ping.unicast.hosts: ["192.168.152.45"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping_timeout: 10s
discovery.zen.fd.ping_timeout: 10000s
discovery.zen.fd.ping_retries: 10

运行docker命令:

docker run  --name es-data1 --ulimit nofile=65536:131072 -p 9200:9200 -p 9300:9300 -v /home/iie4bu/ddy/docker-elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/iie4bu/ddy/docker-elasticsearch/data:/usr/share/elasticsearch/data  -e "ES_JAVA_OPTS=-Xms5120m -Xmx5120m" docker.elastic.co/elasticsearch/elasticsearch:6.2.3

如果想要在后台运行,可以添加 -d 选项

在每个节点上启动ES后,使用docker container ls 查看:

iie4bu@swarm-manager:~$ docker container ls
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED              STATUS              PORTS                                            NAMES
869fcd7708ed        docker.elastic.co/elasticsearch/elasticsearch:6.2.3   "/usr/local/bin/dock…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   esmaster
iie4bu@swarm-worker1:~$ docker container ls
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED              STATUS              PORTS                                            NAMES
c8c97f4d0685        docker.elastic.co/elasticsearch/elasticsearch:6.2.3   "/usr/local/bin/dock…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   es-data1
iie4bu@swarm-worker2:~$ docker container ls
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED              STATUS              PORTS                                            NAMES
518ce01ecdd7        docker.elastic.co/elasticsearch/elasticsearch:6.2.3   "/usr/local/bin/dock…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   es-data2

安装elasticsearch-head

获取镜像:

iie4bu@swarm-manager:~$ docker pull tobias74/elasticsearch-head

执行容器:

iie4bu@swarm-manager:~$ docker run -d --name es-head -p 9100:9100 --restart always tobias74/elasticsearch-head

使用elasticsearch-head查看

可以成功运行。

安装kibana

安装kibana:

docker pull docker.elastic.co/kibana/kibana:6.2.3

运行kibana:

docker run -e ELASTICSEARCH_URL=http://192.168.152.45:9200 -p 5601:5601 --name kibana docker.elastic.co/kibana/kibana:6.2.3

在一个数据节点上开启两个ES

在节点node-data1(192.168.152.39)上在新建一个elasticsearch节点node-data3

elasticsearch.yml文件内容如下:

cluster.name: my-application
node.name: node-data3
node.master: false
node.data: true
transport.tcp.port: 9301
http.port: 9201
network.publish_host: 192.168.152.39
network.host: 0.0.0.0
http.max_content_length: 1024mb
discovery.zen.ping.unicast.hosts: ["192.168.152.45:9300"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping_timeout: 10s
discovery.zen.fd.ping_timeout: 10000s
discovery.zen.fd.ping_retries: 10

network.bind_host: 192.168.152.39因为是在docker中,所以不需要绑定ip

这里需要注意的是transport.tcp.port和http.port必须设置,因为node-data1与node-data3在同一台服务器上,否则报错信息如下:

[2019-07-11T08:11:50,250][INFO ][o.e.d.z.ZenDiscovery     ] [node-data3] failed to send join request to master [{node-master}{ahgcLIkTT32KVcZORZzUZQ}{CueMB9y5TVWEi_h7B0I9QA}{192.168.152.45}{192.168.152.45:9300}{ml.machine_memory=67430027264, ml.max_open_jobs=20, ml.enabled=true}], reason [RemoteTransportException[[node-master][172.17.0.2:9300][internal:discovery/zen/join]]; nested: ConnectTransportException[[node-data3][192.168.152.39:9300] handshake failed. unexpected remote node {node-data1}{jji1eahBReWUu-IfBLEMyg}{Jo_QU2nlS8Oea0JundbRMQ}{192.168.152.39}{192.168.152.39:9300}{ml.machine_memory=67430027264, ml.max_open_jobs=20, ml.enabled=true}]; ]

运行命令:

docker run  --name es-data3 --ulimit nofile=65536:131072 -p 9201:9201 -p 9301:9301 -v /home/iie4bu/ddy/docker-elasticsearch2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/iie4bu/ddy/docker-elasticsearch2/data:/usr/share/elasticsearch/data  -e "ES_JAVA_OPTS=-Xms5120m -Xmx5120m" docker.elastic.co/elasticsearch/elasticsearch:6.2.3

这样就在一台服务器上启动两个ES节点了。

ES安装过程中出现的问题:

问题1:

[temuser@n1 data-node1]$ docker run  --name esmaster --ulimit nofile=65536:131072 -p 9202:9202 -p 9302:9302 -v /home/temuser/ddy/elasticsearch/master/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/temuser/ddy/elasticsearch/master/data:/usr/share/elasticsearch/data  -e "ES_JAVA_OPTS=-Xms5120m -Xmx5120m" docker.elastic.co/elasticsearch/elasticsearch:6.2.3
[2019-07-13T05:01:57,878][INFO ][o.e.n.Node               ] [node-master2] initializing ...
[2019-07-13T05:01:57,890][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-master2] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Failed to create node environmentat org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.3.jar:6.2.3]at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.3.jar:6.2.3]
Caused by: java.lang.IllegalStateException: Failed to create node environmentat org.elasticsearch.node.Node.<init>(Node.java:267) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.3.jar:6.2.3]... 6 more
Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodesat sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) ~[?:?]at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:?]at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:?]at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384) ~[?:?]at java.nio.file.Files.createDirectory(Files.java:674) ~[?:1.8.0_161]at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781) ~[?:1.8.0_161]at java.nio.file.Files.createDirectories(Files.java:767) ~[?:1.8.0_161]at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:204) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.node.Node.<init>(Node.java:264) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.3.jar:6.2.3]at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.3.jar:6.2.3]... 6 more

原因是宿主机上的/home/temuser/ddy/elasticsearch/master/data权限不足导致的。但是错误日志报的却是docker容器下的 /usr/share/elasticsearch/data/nodes目录。

解决办法:chmod 777 /home/temuser/ddy/elasticsearch/master/data

问题2:

elasticsearch访问时需要登录:

方法一:

原因是在docker中默认安装了x-pack。需要卸载x-pack:

步骤:

  1. docker exec -it es1 /bin/bash 进入容器
  2. 卸载x-pack插件
  • ./bin/elasticsearch-plugin remove x-pack
  • 删除配置文件(由于配置文件保护,需要手动删除)
    • cd /usr/share/elasticsearch/config
    • rm -rf x-pack
  • 重启。docker restart es1

方法二(推荐):

将x-pack关闭:

elasticsearch.yml文件内容如下:

cluster.name: my-application2
node.name: node-master2
node.master: true
node.data: false
transport.tcp.port: 9312
http.port: 9212
network.publish_host: 192.168.152.39
network.host: 0.0.0.0
http.max_content_length: 1024mb
discovery.zen.ping.unicast.hosts: ["192.168.152.39:9312"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping_timeout: 10s
discovery.zen.fd.ping_timeout: 10000s
discovery.zen.fd.ping_retries: 10xpack.security.enabled: false
xpack.monitoring.enabled: false
xpack.graph.enabled: false
xpack.watcher.enabled: false

kibana.yml文件内容如下:

server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.152.39:9212"xpack.security.enabled: false
xpack.monitoring.enabled: false
xpack.graph.enabled: false
xpack.reporting.enabled: false

运行kibana:

docker run -d --name kibana -v /home/vincent/docker/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml -p 5601:5601 docker.elastic.co/kibana/kibana:6.2.3 

参考:https://www.cnblogs.com/blogjun/articles/8072751.html

安装cerebro

docker pull lmenezes/cerebro

然后直接运行:

docker run -d -p 9000:9000 --name cerebro --restart always lmenezes/cerebro

安装ik分词器

可以修改elasticsearch.yml文件:

cluster.name: my-application
node.name: node-data4
node.master: false
node.data: true
# network.bind_host: 192.168.171.29
transport.tcp.port: 9301
http.port: 9201
network.publish_host: 192.168.171.29
network.host: 0.0.0.0
http.max_content_length: 1024mb
discovery.zen.ping.unicast.hosts: ["192.168.171.45:9300","192.168.171.45:9301","192.168.171.45:9302"]
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping_timeout: 10s
discovery.zen.fd.ping_timeout: 10000s
discovery.zen.fd.ping_retries: 10

将ik分词器拷贝到服务器中,目录结构如下:

然后执行命令:

docker run -d --name esmaster --ulimit nofile=65536:131072 -p 9200:9200 -p 9300:9300 -v /home/iie4bu/ddy/docker-elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/iie4bu/ddy/elasticsearch-analysis-ik-6.2.3:/usr/share/elasticsearch/plugins/ -v /home/iie4bu/ddy/docker-elasticsearch/data:/usr/share/elasticsearch/data  -e "ES_JAVA_OPTS=-Xms5120m -Xmx5120m" docker.elastic.co/elasticsearch/elasticsearch:6.2.3

修改了es中的plugins之后,需要修改kibana的plugin否则无法进入kibana:

docker run -d --name kibana -v /home/iie4bu/ddy/docker-kibana/kibana.yml:/usr/share/kibana/config/kibana.yml -v /home/iie4bu/ddy/docker-kibana/plugins:/usr/share/kibana/plugins/ -p 5601:5601 docker.elastic.co/kibana/kibana:6.2.3 

docker安装配置分布式elasticsearch、kibana、head、cerebro相关推荐

  1. Docker 安装 Mysql , Redis,ElasticSearch,Kibana,RabbitMQ,Zipkin,Nacos,Minio Docker服务器环境搭建

  2. 超简单用Docker安装FastDFS分布式文件存储系统

    个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. Docker安装FastDFS分布式文件存储系统 ...

  3. Docker安装FastDFS分布式文件系统

    Docker安装FastDFS分布式文件系统: 1.首先下载FastDFS文件系统的docker镜像 2.拉取镜像 3.查看镜像 4.使用docker镜像构建tracker容器(跟踪服务器,起到调度的 ...

  4. Docker 安装配置Crowd

    环景: ubuntu 16.04 docker Version: 20.10.7 crowd3.3.2 问题描述: Docker 安装配置Crowd 解决方案: 1.创建docker-compose. ...

  5. Docker安装配置Jenkins教程

    Docker安装配置Jenkins教程 前言 准备工作 一.安装Docker 1.安装 2.查看版本信息 二.配置Docker 镜像加速 1.编辑docker配置文件 2.配置镜像地址,编辑文件内容为 ...

  6. centos7安装配置ELK(Elasticsearch+Logstash+Kibana)

    1.server端安装 #安装elasticsearch yum install java-1.8.0-openjdk ruby yum install elasticsearch-2.1.0.rpm ...

  7. SkyWalking安装配置,ElasticSearch存储,nexus私有maven库进行SkyWalking客户端探针的打包和拉取

    SkyWalking安装配置 SkyWalking安装配置 安装 ElasticSearch 下载安装 SkyWalking 配置SkyWalking客户端探针 nexus建立私有maven库进行打包 ...

  8. docker安装最新版本elasticsearch

    Docker中安装elasticsearch 查询仓库中elasticsearch版本 拉取镜像 docker pull elasticsearch:7.8.0 查看镜像 docker images ...

  9. docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]

    文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...

最新文章

  1. 基于现有工程解读stm32的工程文件
  2. Android 正则表达式
  3. Boost:BOOST_VERIFY_MSG扩展的用法测试程序
  4. Facebook 最新可佩戴 AR 设备、AR 设备未来五年市场扩张、语音社交新创Swell等|Decode the Week...
  5. 深度学习(四十五)——Stack GAN, GAN Ensemble, Pix2Pix, CycleGAN
  6. 【SF】开源的.NET CORE 基础管理系统 -介绍篇
  7. SPI 读取不同长度 寄存器_[读书笔记]《计算机科学速成课》—6 寄存器和内存
  8. CSS3中的border-radius兼容IE低版本解决方法
  9. AD/DA的分类与指标
  10. python并行计算_Python并行计算初探
  11. 现在很多人都在网上找富业
  12. 二叉搜索树 java_二叉查找树之 Java的实现【下】
  13. 那些在错误道路上一路狂奔的国产VR
  14. Node.js 提升运行效率
  15. 在vue中使用axios发送post请求,参数方式
  16. CSDN免登录复制方式
  17. Android和ios的区别
  18. 二维邮局选址问题-带权中位数
  19. moment.js 时间处理类库--时间戳和时间格式相互转换
  20. Android多媒体框架(5)—— MediaMuxer.jara源码分析

热门文章

  1. ASP.NET中Response.Redirect()方法深度剖析
  2. 怎么利用Excel统计各分数段的人数?(亲测sum函数可用)
  3. Linux配置Nginx与PHP-FPM出现[error] 80143#0: *1 connect() failed (111: Connection refused) while connectin
  4. 编译linux系统到开发板,迅为3399开发板Linux固件编译-Ubuntu16系统编译
  5. plesk支持服务器,如何在 Plesk 中实现远程访问 (Windows)
  6. matlab treeview,treeview控件
  7. 磁盘分区格式FAT32与NTFS
  8. Uploadify3.2中文提示
  9. git gui管理服务器配置文件,从 Git Gui 管理的Repository(库) 提交更改到 Bonobo服务器管理的Repository(库)...
  10. c语言五子棋卡死,五子棋程序出错了