如何在Ubuntu Server 20.04上部署Elasticsearch集群?
譯文【51CTO.com快譯】Elasticsearch是一種非常強(qiáng)大的搜索和分析引擎,具有極強(qiáng)的擴(kuò)展性。有了這個(gè)工具,您就有了可化視大量數(shù)據(jù)的基礎(chǔ)。但當(dāng)您開始擴(kuò)展Elasticsearch以滿足大數(shù)據(jù)的需求時(shí),需要使用不止一臺服務(wù)器。當(dāng)開始擴(kuò)展規(guī)模以滿足企業(yè)需求時(shí),單單一臺服務(wù)器會因大量數(shù)據(jù)而被卡住。
所以,您該如何是好?可以部署一個(gè)Elasticsearch服務(wù)器集群。我會向您介紹如何做到這一點(diǎn)。部署完畢后,您就有必要的能力開始構(gòu)建令人難以置信的數(shù)據(jù)可視化工具,能夠處理大量數(shù)據(jù)。
您需要什么?
我將在Ubuntu Server 20.04的兩個(gè)實(shí)例上演示這一點(diǎn),但您可以根據(jù)需要將其部署到盡可能大的集群。除了Ubuntu Server的兩個(gè)實(shí)例外,還需要一個(gè)擁有sudo權(quán)限的用戶。就是這樣。不妨部署吧。
如何安裝 Java?
您至少需要在每臺服務(wù)器上安裝Java 8,因此我們將使用以下命令安裝默認(rèn)的JRE:
- sudo apt-get install default-jre -y
一旦我們在兩臺測試機(jī)器上都安裝了它,就可以安裝Elasticsearch了。
如何安裝Elasticsearch?
這在兩臺機(jī)器上都需要完成。先安裝Elasticsearch GPG密鑰:
- wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
接下來,使用以下命令安裝apt-transport-https:
- sudo apt-get install apt-transport-https
使用以下命令添加必要的存儲庫:
- echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tree -a /etc/apt/sources.list.d/elastic-6.x.list
最后,更新apt并安裝Elasticsearch:
- sudo apt-get update
- sudo apt-get install elasticsearch -y
運(yùn)行并啟用Elasticsearch:
- sudo systemctl start elasticsearch
- sudo systemctl enable elasticsearch
如何配置Elasticsearch?
您將在兩臺服務(wù)器上執(zhí)行此操作,務(wù)必要確保更改配置以適合每臺機(jī)器。我們稱第一臺機(jī)器為controller-1、稱第二臺機(jī)器為node-1。使用以下命令打開配置文件:
- sudo nano /etc/elasticsearch/elasticsearch.yml
在該文件中,您需要編輯以下幾行。其中一些行將被注釋掉,因此您需要先刪除前導(dǎo)的#字符。要編輯的幾行是(粗體顯示的內(nèi)容都應(yīng)根據(jù)需要加以編輯):
- cluster.name: elkcluster
- node.name: "controller-1"
- network.host: 192.168.1.80
- http.port: 9200
- discovery.zen.ping.unicast.hosts: ["192.168.1.80", "192.168.1.81"]
在本文例子中,控制器使用192.168.1.80,節(jié)點(diǎn)使用192.168.1.81。
保存并關(guān)閉文件。在兩臺機(jī)器上都重啟Elasticsearch:
- sudo systemctl restart elasticsearch
如何測試集群?
您需要給Elasticsearch幾分鐘的時(shí)間來啟動??梢允褂靡韵旅顏頊y試它:
- curl -XGET 'http://192.168.1.80:9200/_cluster/state?pretty'
確保根據(jù)您的控制器或節(jié)點(diǎn)來編輯上述的IP地址。如果您測試控制器,使用控制器IP;如果測試節(jié)點(diǎn),就使用節(jié)點(diǎn)IP。
Elasticsearch最終運(yùn)行后,您應(yīng)該會看到許多輸出結(jié)果,包括如下:
- {
- "cluster_name" : "monkeypantz",
- "cluster_uuid" : "rGzNNmm_Rteel0Xg3xqw9w",
- "version" : 6,
- "state_uuid" : "WVx5O6Q7SfOqZf_wxaPOKQ",
- "master_node" : "2NI9_pDYS1WvJYQz-XY3KQ",
- "blocks" : { },
- "nodes" : {
- "yV2TBoxVTvKbh7E1ZngpbA" : {
- "name" : "node-1",
- "ephemeral_id" : "pkb3vapLTd2yFLrXO64ENA",
- "transport_address" : "192.168.1.81:9300",
- "attributes" : {
- "ml.machine_memory" : "3137888256",
- "ml.max_open_jobs" : "20",
- "xpack.installed" : "true",
- "ml.enabled" : "true"
- }
- },
一旦控制器和節(jié)點(diǎn)都正常運(yùn)行起來,使用以下命令測試集群:
- curl -XGET '192.168.1.80:9200/_cluster/health?pretty'
務(wù)必要編輯IP地址,以便與您運(yùn)行命令所在的那臺機(jī)器的IP地址相匹配。輸出應(yīng)包括如下:
- {
- "cluster_name" : "monkeypantz",
- "status" : "green",
- "timed_out" : false,
- "number_of_nodes" : 2,
- "number_of_data_nodes" : 2,
- "active_primary_shards" : 0,
- "active_shards" : 0,
- "relocating_shards" : 0,
- "initializing_shards" : 0,
- "unassigned_shards" : 0,
- "delayed_unassigned_shards" : 0,
- "number_of_pending_tasks" : 0,
- "number_of_in_flight_fetch" : 0,
- "task_max_waiting_in_queue_millis" : 0,
- "active_shards_percent_as_number" : 100.0
- }
要留意的重要行如下:
- "status" : "green",
- "timed_out" : false,
- "number_of_nodes" : 2,
- "number_of_data_nodes" : 2,
您還可以使用以下命令(在控制器上運(yùn)行),從控制器來檢查節(jié)點(diǎn):
- curl -XGET '192.168.1.81:9200/_nodes/?pretty
務(wù)必要把上述的IP地址換成Elasticsearch節(jié)點(diǎn)的IP地址。您還可以將瀏覽器指向http://SERVER:9200(其中Server是您控制器的IP地址),應(yīng)該會看到類似圖A的輸出。
圖A. Elasticsearch集群正常運(yùn)行起來
恭喜,您現(xiàn)在有了正常運(yùn)行起來的Elasticsearch集群,已準(zhǔn)備好供您的開發(fā)人員用來可視化數(shù)據(jù)。
原文標(biāo)題:How to deploy an Elasticsearch cluster on Ubuntu Server 20.04,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】