Docker 搭建一個Elasticsearch 7.5.1集羣+kibana 7.5.1

1.docker安裝elasticsearch 7.5.1

  • 拉取鏡像node

    docker pull elasticsearch:7.5.1
  • 建立網絡docker

    若是須要安裝kibana等其餘,須要建立一個網絡,名字任意取,讓他們在同一個網絡,使得es和kibana通訊bootstrap

    docker network create esnet(這個名字能夠自定義,可是注意啓動kibana是名字保持一致)
  • 建立數據卷跨域

    此處爲了docker容器刪除或者其餘異常狀況,將ES的重要數據掛載到宿主機網絡

    # 查看當前數據局列表
    docker volume ls
    # 建立數據卷
    docker volume create es-1(名字自擬)
    # 查看數據卷信息
    docker volume inspect es-1

    對應的ES節點掛載到對應的數據卷cors

  • 將數據卷在宿主機的文件受權curl

    經過上面查看數據卷信息命令能夠看到數據卷具體在宿主的位置
    通常在/var/lib/docker/volumes下
    受權命令:chmod 777 文件夾

    這個操做主要是後面啓動ES時須要進行寫入操做elasticsearch

  • 啓動ES容器tcp

    本次搭建一個僞集羣ide

    # 啓動第一個
    docker run --name es-1 -d -p 9200:9200 -p 9300:9300 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-1/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98
    # 啓動第二個
    docker run --name es-2 -d -p 9201:9201 -p 9301:9301 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-2/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98
    #啓動第三個
    docker run --name es-3 -d -p 9202:9202 -p 9302:9302 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-3/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98

    在此處啓動時通常會出現以下錯誤:

    ERROR: [2] bootstrap checks failed
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

    第一個問題能夠經過以下命令解決

    sysctl -w vm.max_map_count=262144

    第二個問題則須要經過配置ES的配置文件,固然也能夠經過參數輸入的方式(-e "")

    但親測時這樣建立的集羣clusteruuid將會是"_na",這樣節點接不能互通

    ES的配置文件路徑:/usr/share/elasticsearch/config

    #集羣名稱
    cluster.name: my
    #節點名稱
    node.name: node-1
    #是否是有資格主節點
    node.master: true
    #是否存儲數據
    node.data: true
    #最⼤集羣節點數
    node.max_local_storage_nodes: 3
    #⽹關地址
    network.host: 0.0.0.0
    # 設置其它結點和該結點交互的ip地址,若是不設置它會自動判斷,值必須是個真實的ip地址
    # 若是是docker安裝節點的IP將會是配置的IP而不是docker網管ip
    network.publish_host: 192.168.172.128
    #端⼝
    http.port: 9200
    #內部節點之間溝通端⼝
    transport.tcp.port: 9300
    #es7.x 以後新增的配置,寫⼊候選主節點的設備地址,在開啓服務後能夠被選爲主節點
    discovery.seed_hosts: ["192.168.172.128:9300","192.168.172.128:9301","192.168.172.128:9302"]
    #es7.x 以後新增的配置,初始化⼀個新的集羣時須要此配置來選舉master
    cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    #數據和存儲路徑
    path.data: /usr/share/elasticsearch/data
    path.logs: /usr/share/elasticsearch/logs
    
    # 解決跨域問題
    http.cors.enabled: true
    http.cors.allow-origin: "*"
  • 檢驗是否安裝成功

    http://192.168.172.128:9200/_cat/nodes
    
    192.168.172.128 29 46 4 0.01 0.12 0.34 dilm - node-3
    192.168.172.128 20 46 3 0.01 0.12 0.34 dilm - node-1
    192.168.172.128 21 46 3 0.01 0.12 0.34 dilm * node-2
    
    帶*的節點就是master

2.docker安裝kibana

  • 拉取鏡像

    docker pull kibana:7.5.1(注意版本)
  • 因爲前面已經建立過網絡,啓動kibana

    docker run -d --name kibana --net esnet -p 5601:5601 2d043e33afa4
  • 安裝好kibana後直接經過下列方式訪問會拋出錯誤

    curl http://localhost:5601
  • 錯誤以下

    Kibana server is not ready yet
  • 修改kibana配置文件kibana.yml

    配置文件路徑:/usr/share/kibana/config

    #
    # ** THIS IS AN AUTO-GENERATED FILE **
    #
    
    # Default Kibana configuration for docker target
    server.name: kibana
    server.host: "0"
    elasticsearch.hosts: [ "http://192.168.172.128:9200","http://192.168.172.128:9201","http://192.168.172.128:9202" ]
    xpack.monitoring.ui.container.elasticsearch.enabled: true

3.kibana客戶端查看ES集羣

http://192.168.172.128:5601/

Docker 搭建一個Elasticsearch 7.5.1集羣+kibana 7.5.1

進行查看

Docker 搭建一個Elasticsearch 7.5.1集羣+kibana 7.5.1

選擇紅框選項,由於上面的選項須要配置一些私密鑰之類的

4.補充知識

集體的docker容器操做能夠查看本人的另外一篇博文:http://www.javashuo.com/article/p-xvasogqi-mp.html

相關文章
相關標籤/搜索