作者:玩世不恭的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容器時的參數介紹如下:
- --name:為容器起一個別名
- -p:將容器的運行端口映射到本地端口
- "discovery.type=single-node":表示單節點模式下創建,后文將介紹集群模式的搭建
- -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文件的配置
- 將192.168.220.202中的info.json文件使用xftp工具導入到windows本地
- 將該文件通過xftp工具導入到192.168.220.201 /resources/mydata/logstash_temp中
- 采用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倉庫的任何文件,且下載的速度會大大加快
具體安裝過程及代碼示例如下:
- 下載5.6.8的ik分詞器:https://gitee.com/tianxingjian123/elasticsearch-analysis-ik
- 使用maven將其打包:cd到ik目錄,然后mvn打包:mvn package -Pdist,native -DskipTests -Dtar
- 使用maven打包完成之后,即可生成一個target文件夾,里面有./releases/elasticsearch-analysis-ik-5.6.8.zip壓縮文件
- 在虛擬機中創建一個ik文件夾,並將該zip文件上傳到ik文件夾中,然后使用unzip命令解壓該zip文件,解壓之后刪除zip文件即可
- 之后使用docker將該ik文件夾傳到elasticsearch容器的plugins中
- 進入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文件的配置信息如下,注意需要配置一下幾點:
- 開啟跨域,為了讓es-head可以訪問,此處需要額外安裝header插件
- 設置集群的名稱(每個集群節點的設置需要一樣)
- 指定該節點是否有資格被選舉成為master節點,默認是true,es是默認集群中的第一台機器為master,如果這台機掛了就會重新選舉master
- 允許該節點存儲數據(默認開啟)以及允許任何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
