日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker安装配置分布式elasticsearch、kibana、head、cerebro

發布時間:2024/9/16 编程问答 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker安装配置分布式elasticsearch、kibana、head、cerebro 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有三個節點分別是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:

步驟:

  • ?docker exec -it es1 /bin/bash 進入容器
  • ?卸載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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。