打開ElasticSearch、kibana、logstash的正確方式


作者:玩世不恭的Coder
時間:2020-03-08
說明:原創不易,本文為原創文章,未經允許不可轉載,轉載前請聯系作者

打開ElasticSearch、kibana、logstash的正確方式

前言一、ELK系統的搭建Elasticsearch的安裝安裝kibana安裝logstash二、基於Logstash對Elasticsearch索引庫中數據的導入和導出使用logstash將es數據從索引庫中導出logstash對Elasticsearch索引庫中數據的導入三、安裝ik中文分詞器ik中文分詞器插件的安裝分詞結果測試四、Elasticsearch集群的搭建創建集群所需要的配置文件及數據文件,以便容器的映射創建elasticsearch容器並啟動所遇問題

前言

Elasticsearch是什么?為什么每次學習一門技術都是英文的呢?真的是腦闊疼。既然它是英文的,我們不妨借助有道來初步的看看Elasticsearch到底是何方神聖,竟如此多嬌。其分為elastic和search兩個獨立的單詞,我們來無腦有道一波看看,得到的解釋如下:

從有道的解釋來看,我們可以簡單的對其理解為:Elasticsearch是及其具有彈性的、靈活的、像松緊帶一樣的且可供搜尋檢索的一款工具。o(*≧▽≦)ツ┏━┓

百度百科對其解釋如下:

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放源碼發布,是一種流行的企業級搜索引擎。ElasticSearch用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。官方客戶端在Java、.NET(C#)、PHP、Python、Apache、Groovy、Ruby和許多其他語言中都是可用的。根據DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業搜索引擎,其次是Apache Solr,也是基於Lucene。

從如上信息我們可以得知,Elasticsearch是一款實時、分布式存儲的搜索引擎,在實際開發過程中,我們常常會把數據放在Elasticsearch搜索引擎中,然后從引擎中去實際需要的數據。而且在實際搜索過程中,我們也會有許多的Api支持來對數據進行檢索,比如排序、條件查詢等,其中在Elasticsearch中最為強大之處就是他的模糊檢索功能。講到這,可能有些Mysql經驗但沒接觸過Elasticsearch的朋友可能會有個疑問,Mysql大法不是無敵么,其中的like語句不能模糊查詢么?where and不能條件檢索么?orderby不能對數據進行排序么?我隨隨便便就信手拈來一個Sql語句不就能實現業務的需求么:

select department_name, count(*) 員工個數
from departments d, employees e
where d.department_id = e.department_id
group by d.department_id
having count(*)>5
order by count(*) desc;

是這樣沒錯,以上SQL代碼的確能夠實現實際需求,但是當我們的業務逐漸變得復雜、龐大,我們的用戶量越來越多,我們就不得不站在用戶的角度來想想了。試想一下,假設哪些淘寶er每天打開淘寶搜索自己想要的數據時都要等個幾十秒,那會是怎樣的一種畫面。又比如,在打開我們常見文件來檢索我們需要數據的時候,比如txt、word、excel,我們一般都能迅速打開,那是因為這些文件占用實際空間都太小,這些文件大多就幾kb,假設我們打開一個以G為單位的日志文件,此時的系統還能像以往那樣正常么?換言之,Elasticsearch采用的是索引搜索,能夠具有強大的搜索能力,能夠達到實時搜索,穩定,可靠,快速,安裝的效用。

另外,Elasticsearch在處理日志的過程中,其常常與數據收集和日志解析引擎Logstash以及名為Kibana的分析和可視化平台配合使用,也就是常說的ELK系統。文本將主要介紹以下幾個方面的內容

  • 基於Docker容器來搭建ELK
  • Elasticsearch集群的搭建
  • 在Elasticsearch中引入IK分詞器插件
  • 基於Logstash對Elasticsearch索引庫中數據的導入和導出

一、ELK系統的搭建

Elasticsearch是實時全文搜索和分析引擎,提供搜集、分析、存儲數據三大功能;是一套開放REST和JAVA API等結構提供高效搜索功能,可擴展的分布式系統。它構建於Apache Lucene搜索引擎庫之上。

Logstash是一個用來搜集、分析、過濾日志的工具。它支持幾乎任何類型的日志,包括系統日志、錯誤日志和自定義應用程序日志。它可以從許多來源接收日志,這些來源包括 syslog、消息傳遞(例如 RabbitMQ)和JMX,它能夠以多種方式輸出數據,包括電子郵件、websockets和Elasticsearch。
1
Kibana是一個基於Web的圖形界面,用於搜索、分析和可視化存儲在 Elasticsearch指標中的日志數據。它利用Elasticsearch的REST接口來檢索數據,不僅允許用戶創建他們自己的數據的定制儀表板視圖,還允許他們以特殊的方式查詢和過濾數據

總結就是Elasticsearch用於搜索,Kibana用於可視化,Logstash用於搜集。下面我們來基於Docker來搭建一下ELK系統,關於Docker的安裝及基本使用,前面的文章已經有過記錄了,此處不再過多的介紹。另外,值得注意的是這三者之間的版本關系,(如果使用其他版本的工具,則按照如下方式搭建可能會產生其他問題):

  • Elasticsearch:5.6.8
  • Kibana:5.6.8
  • Logstash:lastest

Elasticsearch的安裝

  • Docker拉取Elasticsearch鏡像
docker pull elasticsearch:5.6.8
  • 在本地創建elasticsearch容器所映射的配置文件以及data目錄

這里需要將http.host配置成0.0.0.0的授權對象,並將配置寫入config目錄下的elasticsearch.yml配置文件中

# 在centos本地創建配置文件,並配置
mkdir -p /resources/elasticsearch/config        # 創建config目錄
mkdir -p /resources/elasticsearch/data             # 創建data目錄
# 將http.host配置為0.0.0.0的授權對象,將配置寫入config目錄下的elasticsearch.yml配置文件中
echo "http.host: 0.0.0.0" >> /resources/elasticsearch/config/elasticsearch.yml
  • 創建一個elasticsearch容器,並開機自運行

首先需要創建容器並開機運行(single-node表示單節點模式,后面會介紹集群方式下elasticsearch的搭建),然后將elasticsearch容器設置為開機自啟動。穿件es容器時的參數介紹如下:

  1. --name:為容器起一個別名
  2. -p:將容器的運行端口映射到本地端口
  3. "discovery.type=single-node":表示單節點模式下創建,后文將介紹集群模式的搭建
  4. -v:表示將容器中的配置文件和data文件映射到上文本地所創建的文件,方便后面的配置
# 創建容器並開機運行(single-node表示單節點模式,后面會介紹集群方式下elasticsearch的搭建)
# 注意:在docker中\表示換行
docker run --name elasticsearch -p 9200:9200 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /resources/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /resources/elasticsearch/data:/usr/share/elasticsearch/data -d elasticsearch:5.6.8
# 參數介紹:
# --name:為容器起一個別名
# -p:將容器的運行端口映射到本地端口
# -e "discovery.type=single-node":表示單節點模式下創建,后文將介紹集群模式的搭建
# -v:表示將容器中的配置文件和data文件映射到上文本地所創建的文件,方便后面的配置

# 將elasticsearch容器設置為開機自啟動
docker update new-elasticsearch --restart=always

這樣一來,我們便安裝好elasticsearch了,我們可以使用curl命令來測試一下:

# 使用curl來訪問elasticsearch的運行端口
curl localhost:9200
# 運行輸出結果如下則成功安裝
{
  "name" : "XwmNOpR",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "yB3VNHxmQzevk1vXUQTkcg",
  "version" : {
    "number" : "5.6.8",
    "build_hash" : "688ecce",
    "build_date" : "2018-02-16T16:46:30.010Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

當然了,我們也可以使用瀏覽器來對其進行訪問,訪問方式為http://[ip]:9200,端口為虛擬機ip,同樣可以得到對應的結果,另外如果使用的是Aliyun或騰訊雲服務器,則需要在控制台中配置相應的安全組,否則無法訪問

安裝kibana

  • Docker拉取Kibana鏡像
# Docker拉取Kibana鏡像
docker pull kibana:5.6.8
  • 創建容器並設置開機自啟動
# 創建容器kibana容器,對應的參數如上,另外需要指定elasticsearch的地址
docker run --name kibana -e ELASTICSEARCH_URL=http://[ip]:9200 -p 5601:5601 \
-d kibana:5.6.8
# 配置開機自啟動
docker update new-kibana --restart=always

安裝完成之后,我們便可curl一下kibana的地址,或在瀏覽器訪問http://[ip]:5601即可得到對應的輸出:

[root@iZm5eei156c9h3hrdjpe77Z ~]# curl localhost:5601
<script>var hashRoute = '/app/kibana';
var defaultRoute = '/app/kibana';

var hash = window.location.hash;
if (hash.length) {
  window.location = hashRoute + hash;
else {
  window.location = defaultRoute;
}</script>[root@iZm5eei156c9h3hrdjpe77Z ~]

安裝logstash

  • 拉取Logstash鏡像
# 拉取鏡像
docker pull logstash
  • 創建一個配置文件,並進行input和output的配置

在/resources/logstash中創建logstash.conf文件,並使用vim來對其進行編輯,配置的過程如下:

# 在/resources/logstash中創建logstash.conf文件,並使用vim來對其進行編輯
mkdir /resources/logstash
# 使用vim編輯
vim logstash.conf
# 配置文件內容如下,更換為自己Elasticsearch的ip即可
input {
    tcp {
        port => 4560
        codec => json_lines
    }
}
output{
  elasticsearch { 
    hosts => ["[ip]:9200"
    index => "applog"
    }
  stdout { codec => rubydebug }
}
  • 創建容器並開機自啟動
# 創建容器,這里需要指明Elasticsearch來進行鏈接
docker run -d -p 4560:4560 \
-v /resources/logstash/logstash.conf:/etc/logstash.conf \
--link elasticsearch:elasticsearch \
--name logstash logstash \
logstash -f /etc/logstash.conf

#
 開機自啟動
docker update new-logstash --restart=always

以上便是Logstash的安裝過程,我們可以進入Logstash容器內來簡單的使用一下。

進入Logstash容器,並cd到bin目錄

docker exec -it logstash /bin/bash
cd /usr/share/logstash/bin

執行logstash命令,注意:需要這里需要指定--path.data參數,否則在運行的過程會出錯

# 注意:需要這里需要指定--path.data參數,否則在運行的過程會出錯
logstash -e 'input { stdin { } } output { stdout {} }' --path.data=/root/

運行之后,我們在控制台輸入hello world,即會出現以下結果


二、基於Logstash對Elasticsearch索引庫中數據的導入和導出

應用需求:在192.168.220.201主機中的es中並沒有info索引庫,而192.168.220.202中的es有info索引庫,此時我們可以嘗試借助logstash來先將skuinfo索引庫從192.168.220.202導出成一個json文件,然后將該文件借助logstash導入到192.168.220.201的es索引庫中。這樣的需求該如何實現呢?

使用logstash將es數據從索引庫中導出

創建一個臨時的文件夾,用於保存導出的數據以及配置文件,之后使用vim來創建一個export.conf配置文件,並對其進行配置

mkdir /resources/mydata/logstash_temp
vim export.conf

export.conf文件的配置內容如下

#  將192.168.220.202 Elasticsearch中info索引庫導出為一個info.json文件
input{
     elasticsearch {
        hosts => ["192.168.220.202:9200"]   # 指定Elasticsearch的地址,該地址中含有目標數據
                index => "info"             # 指定需要導出的索引庫
                size => 200                 # 指定每次導出數據每批次的大小,注意不能設置太大,否則會出錯
            scroll => "5m"
                docinfo => false
    }
}
output{
   file {
     path => "info.json"                 # 指定保存的數據路徑和json文件的名稱
   }
 }

使用docker cp命令將該導出的配置文件復制的logstash容器的bin目錄中

# 將export.conf文件cp到logstash容器中
docker cp ./export.conf logstash:/usr/share/logstash/bin

進入logstash容器,並執行配置文件,注意:務必要指定path.data屬性,不然會報錯

# 進入logstash,然后執行配置文件
docker exec -it logstash /bin/bash
cd /usr/share/logstash/bin
./logstash -f ./export.conf --path.data=/root/ # 務必要指定path.data屬性,不然會報錯

執行完成之后便會在當前目錄下產生一個info.json文件,我們將該數據文件導出到centos中

# 執行完成之后就會在當前目錄下產生一個info.json文件,將該文件導出到centos中
docker cp logstash:/usr/share/logstash/bin/info.json /resources/mydata/

即可完成將索引庫中的數據導出成一個json文件,該文件存在於/resources/mydata/info.json

logstash對Elasticsearch索引庫中數據的導入

  • 完成json數據的導入及conf文件的配置
  1. 將192.168.220.202中的info.json文件使用xftp工具導入到windows本地
  2. 將該文件通過xftp工具導入到192.168.220.201 /resources/mydata/logstash_temp中
  3. 采用vim對import.conf配置文件進行編輯
# 1. 將192.168.220.202中的info.json文件使用xftp工具導入到windows本地
# 2. 將該文件通過xftp工具導入到192.168.220.201 /resources/mydata/logstash_temp中
cd /mydata/mysources/logstash_temp
# 使用vim對import.conf進行配置
vim import.conf
  • import.conf的配置文件如下
# 讀取json文件
input {
  file {
    # 設置json文件路徑,多個文件路徑可設置成數組[],模糊匹配用*
    path => "/root/info.json"
    start_position => "beginning"
    # 設置編碼
    codec => json {charset => "UTF-8"}
    # 當存在多個文件的時候可使用type指定輸入輸出路徑
    type => "json_index"
  }
}

# 過濾格式化數據
filter {
    mutate{
        #刪除無效的字段
        remove_field => ["@version","message","host","path"]
    }
    # 新增timestamp字段,將@timestamp時間增加8小時
    ruby { code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" }

}

# 數據輸出到ES
output {
    #日志輸出格式,json_lines;rubydebug等
    stdout {
        codec => rubydebug
    }
    #輸出到es
    if[type] == "json_index"{
        #無法解析的json不記錄到elasticsearch中
        if "_jsonparsefailure" not in [tags] {
            elasticsearch {
                #es地址ip端口
                hosts => "192.168.220.201:9200"
                # 配置數據轉入到es中的
                index => "info"
                #類型
                document_type => "info"
            }
        }
    }
}
  • 完成import.conf文件的配置之后,我們即可來真正實現數據導入
# 將import.conf文件和info.json文件導入到logstash容器中
docker cp ./import.conf logstash:/usr/share/logstash/bin    # 導入conf配置文件
docker cp ./skuinfo.json logstash:/root/                    # 導入json數據文件,導入的路徑注意與conf配置文件中的配置路徑保持一致
# 進入到logstash容器中,並執行logstash命令完成數據的導入
docker exec -it logstash /bin/bash
cd /usr/share/logstash/bin
./logstash -f ./import.conf --path.data=/root/

等待執行完成之后訪問192.168.220.201:5601即可訪問到info索引庫中的數據


三、安裝ik中文分詞器

ik中文分詞器插件的安裝

坑一:我們安裝ik分詞器的時候,一般是在github中來下載zip文件,然后傳送到centos中,最后再上傳到elasticserch容器中,但是github中標明的版本與實際版本根本不相同。另一方面,在我們下載不同版本的elasticsearch時,有的版本容器運行會出錯,有些正常。所以我們以后我們搭建elk的時候就同一安裝5.6.8版本(一定要注意)

坑二:我們一般在github上下載zip文件(無論什么文件)的時候會非常非常的慢(不是一般的慢),所以我們以后在使用github來下載的時候可以借助gitee(碼雲)來下載,在碼雲中創建一個倉庫的時候,選擇導入已有的倉庫,然后將原github的git連接復制粘貼上去,最后create。一旦創建,我們就可以借助碼雲中來間接下載github倉庫的任何文件,且下載的速度會大大加快

具體安裝過程及代碼示例如下:

  1. 下載5.6.8的ik分詞器:https://gitee.com/tianxingjian123/elasticsearch-analysis-ik
  2. 使用maven將其打包:cd到ik目錄,然后mvn打包:mvn package -Pdist,native -DskipTests -Dtar
  3. 使用maven打包完成之后,即可生成一個target文件夾,里面有./releases/elasticsearch-analysis-ik-5.6.8.zip壓縮文件
  4. 在虛擬機中創建一個ik文件夾,並將該zip文件上傳到ik文件夾中,然后使用unzip命令解壓該zip文件,解壓之后刪除zip文件即可
  5. 之后使用docker將該ik文件夾傳到elasticsearch容器的plugins中
  6. 進入elasticsearch容器,使用ls命令可查看是否成功上傳ik文件夾

ik分詞器鏈接:https://gitee.com/tianxingjian123/elasticsearch-analysis-ik

# ik分詞器鏈接:https://gitee.com/tianxingjian123/elasticsearch-analysis-ik
# 下載5.6.8的ik分詞器之后,我們需要使用maven將其打包
cd C:\Users\M\Desktop\code-demo\elasticsearch-analysis-ik
mvn package -Pdist,native -DskipTests -Dtar
# 使用maven打包完成之后,即可生成一個target文件夾,里面有./releases/elasticsearch-analysis-ik-5.6.8.zip
# 在虛擬機中創建一個ik文件夾
mkdir ik
# 之后使用xftp將該zip文件上傳到ik文件夾中,然后使用unzip命令解壓該zip文件,解壓之后刪除zip文件
unzip elasticsearch-analysis-ik-5.6.8.zip
rm -rf elasticsearch-analysis-ik-5.6.8.zip
# 之后使用docker將該ik文件夾傳到elasticsearch容器的plugins中
docker cp ./ik elasticsearch:/usr/share/elasticsearch/plugins
# 進入elasticsearch容器
docker exec -it new-elasticsearch /bin/bash
# 之后如下命令可查看是否成功上傳ik文件夾
root@78f36ce60b3f:/usr/share/elasticsearch# cd plugins/
root@78f36ce60b3f:/usr/share/elasticsearch/plugins# ls
ik
root@78f36ce60b3f:/usr/share/elasticsearch/plugins# cd ik
root@78f36ce60b3f:/usr/share/elasticsearch/plugins/ik# ls
commons-codec-1.9.jar             httpclient-4.5.2.jar
commons-logging-1.2.jar             httpcore-4.4.4.jar
config                     plugin-descriptor.properties
elasticsearch-analysis-ik-5.6.8.jar
root@78f36ce60b3f:/usr/share/elasticsearch/plugins/ik# 
# 之后進入到bin目錄下,並查看已經安裝的ik分詞器插件
root@78f36ce60b3f:cd /usr/share/elasticsearch/bin
root@78f36ce60b3f:/usr/share/elasticsearch/bin# elasticsearch-plugin list
ik

以上操作完成之后,就算是完成了在Elasticsearch中引入ik中文分詞器插件了,注意:以上步驟務必需要完全一致,否則會造成各種大大小小的問題。

分詞結果測試

# 打開chrom瀏覽器,訪問:http://192.168.220.201:5601/,若出現kibana界面,說明kibana安裝正常
# 進入kibana的Dev Tools界面,然后使用如下測試ik中文分詞器插件是否正常安裝
GET bank/_analyze
{
  "text""現在是大年三十凌晨一點三十分,有點冷,我寫完這篇文章就睡覺!",
  "analyzer""ik_smart"
}

運行之后,測試ik中文分詞結果如下,可見已經完成了對中文句子的分詞


四、Elasticsearch集群的搭建

創建集群所需要的配置文件及數據文件,以便容器的映射

在每一次搭建的時候都需要注意要確保data目錄下為空,否則在實際運行過程中會出錯

mkdir /mydata
cd /mydata
mkdir elasticsearch1
cd elasticsearch1
mkdir data # 注意要確保data目錄下為空,否則在實際運行過程中會出錯
mkdir config
cd conf
vim elasticsearch.yml
# elasticsearch.yml文件配置信息如下

elasticsearch.yml文件的配置信息如下,注意需要配置一下幾點:

  1. 開啟跨域,為了讓es-head可以訪問,此處需要額外安裝header插件
  2. 設置集群的名稱(每個集群節點的設置需要一樣)
  3. 指定該節點是否有資格被選舉成為master節點,默認是true,es是默認集群中的第一台機器為master,如果這台機掛了就會重新選舉master
  4. 允許該節點存儲數據(默認開啟)以及允許任何ip進行訪問
# 開啟跨域,為了讓es-head可以訪問,此處需要額外安裝header插件
http.cors.enabled: true
http.cors.allow-origin: "*"

# 集群的名稱(一樣)
cluster.name: elasticsearch
# 節點的名稱(不一樣,根據別名來配置)
node.name: es1
# 指定該節點是否有資格被選舉成為master節點,默認是true,es是默認集群中的第一台機器為master,如果這台機掛了就會重新選舉master
node.master: true
# 允許該節點存儲數據(默認開啟)
node.data: true
# 允許任何ip訪問
network.host: 0.0.0.0
# 通過這個ip列表進行節點發現,我這里配置的是各個容器的ip
discovery.zen.ping.unicast.hosts: ["192.168.220.200:9300","192.168.220.200:9301","192.168.220.200:9302"]
#如果沒有這種設置,遭受網絡故障的集群就有可能將集群分成兩個獨立的集群 – 導致腦裂 - 這將導致數據丟失
discovery.zen.minimum_master_nodes: 2

第一個elasticsearch配置文件創建好后,同理創建其他兩個節點

# 配置es2
cd /mydata
cp -r ./elasticsearch1 ./elasticsearch2
# 將其中的conf/elasticsearch.yml中配置修改一處信息
node.name=es2

# 配置es3
cd /mydata
cp -r ./elasticsearch1 ./elasticsearch3
# 將其中的conf/elasticsearch.yml中配置修改一處信息
node.name=es3

創建elasticsearch容器並啟動

# 創建es1容器並啟動
docker run --name es1 -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /mydata/elasticsearch1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch1/data:/usr/share/elasticsearch/data -d elasticsearch:5.6.8

# 引入ik分詞器
docker cp ./ik es1:/usr/share/elasticsearch/plugins

# 創建es2容器並啟動
docker run --name es2 -p 9201:9200 -p 9301:9300 \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /mydata/elasticsearch2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch2/data:/usr/share/elasticsearch/data -d elasticsearch:5.6.8

# 創建es3容器並啟動
docker run --name es3 -p 9202:9200 -p 9302:9300 \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /mydata/elasticsearch3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch3/data:/usr/share/elasticsearch/data -d elasticsearch:5.6.8

至此,完成以上操作即可實現了Elasticsearch集群的搭建

  • 分別訪問http://192.168.220.200:9200、http://192.168.220.200:9201、http://192.168.220.200:9202,即可發現已經搭建完成,並顯示了各個es節點的對應信息。
  • 訪問http://192.168.220.200:9200/_cat/nodes可查看集群節點。
  • 訪問http://192.168.220.200:9200//_cat/health查看健康狀況(green,yellow、red)

所遇問題

  • 實例化容器之后,可能會受到進程數的限制,我們需要提高虛擬機的進程數
vim /etc/sysctl.conf
# 添加如下一條配置
vm.max_map_count=655360
# 退出后重啟配置
sysctl -p
  • 當實例化以上三個es容器之后,可能會存在一定的內存問題,這個時候,我們需要提高虛擬機的內存

運行以上命令之后,可能會發現當前可用配置只有50多,而且當我們訪問http://192.168.220.200:9200的時候也會發現請求失敗這個時候我們打開對應虛擬機的設置,將內存設置3GB即可,不一會兒重新進入虛擬機,使用free -m命令即可發現此時內存還剩1000多可用

# 實例化以上三個es容器之后,查看當前可用內存
free -m
# 運行以上命令之后,可能會發現當前可用配置只有50多,而且當我們訪問http://192.168.220.200:9200的時候也會發現請求失敗這個時候我們打開對應虛擬機的設置,將內存設置3GB即可,不一會兒重新進入虛擬機,使用free -m命令即可發現此時內存還剩1000多可用

# 完成上述配置之后,我們重啟三個es容器
docker restart es1 es2 es3 || docker start es1 es2 es3

# 等待容器重啟之后,使用chrom瀏覽器訪問es
http://192.168.220.200:9200
http://192.168.220.200:9201
http://192.168.220.200:9202
# 可發現已經搭建完成,且顯示了各個es節點的對應信息

# 在kibana的dev tools下查看集群節點
GET /_cat/nodes
# 查看健康狀況(green,yellow、red)
GET /_cat/health
2020-03-08,By 濤濤,於上饒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM