fbpx

Elasticsearch 介紹 – 單節點安裝建置篇

本篇文章說明 ElasticsearchL 8.3.3 單節點的安裝步驟,告訴大家如何快速架設一個單節點的 Elasticsearch。若對 Elasticsearch 還不是很熟悉的朋友,可以參考 Elasticsearch 介紹 – 基本概念篇

本篇文章你會學到:

  1. 單節點安裝
  2. Elasticsearch 基本 API 指令

那我們廢話不多說,馬上開始建立我們第一個 Elasticsearch 吧!

單節點安裝建置

前置作業

  1. 準備環境,筆者環境規格如下:
OSCPUMemoryDisk
CentOS 7.94 vCores8 G50 G
  1. 確認 Elasticsearch 和作業系統版本是否匹配:Support Matrix | Elastic
  2. 下載 Elasticsearch:8.3.3:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-x86_64.rpm
  3. Elasticsearch 使用 java 開發,因此安裝包內皆會自帶 OpenJDK
  4. Elasticsearch 預設目錄:
名稱描述路徑
elasticsearch 設定檔/etc/elasticsearch/elasticsearch.yml
elasticsearch java 設定檔/etc/elasticsearch/jvm.options
elasticsearch 憑證存放目錄/etc/elasticsearch/certs/
elasticsearch log/var/log/elasticsearch/elasticsearch.log
elasticsearch data/var/lib/elasticsearch

安裝步驟

  1. 確認作業系統版本
$ sudo cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
  1. 關閉防火牆

為了快速建立,筆者先關閉防火牆。若大家有需要,也可為 Elasticsearch 設定防火牆規則。

$ sudo systemctl stop firewalld
$ sudo systemctl status firewalld
  1. 建立管理目錄

建立專用目錄是筆者習慣,對於未來要增加新的 Elasticsearchs 安裝包或其他 Elasticsearch 相關東西,管理上會更加方便。

$ mkdir -p ~/elk/es

切換至該目錄下

$ cd ~/elk/es
  1. 下載 Elasticsearch GPG Key (選擇性)

此步驟為選擇性,即使不安裝也不會影響,頂多會在後續安裝時跳出告警訊息。

GPG Key 的目的簡單來說,是用於驗證安裝包是否和官方相符。

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  1. 下載 Elasticsearch:8.3.3 安裝包及 sha 檔
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-x86_64.rpm
$ wget 
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-x86_64.rpm.sha512
  1. 確認檔案並驗證

檔案若無損壞,則會回傳:OK。

$ ll $ shasum -a 512 -c elasticsearch-8.3.3-x86_64.rpm.sha512

注意:若出現 bash: shasum: command not found,請執行以下指令:

$ sudo yum install -y perl-Digest-SHA
  1. 安裝 Elasticsearch
$ sudo rpm --install elasticsearch-8.3.3-x86_64.rpm

從以上資訊我們可以注意到 5 個階段:

a. 內建腳本會自動幫我們建立 Elasticsearch 的使用者及群組
b. 預設開啟 HTTP/Transport 的加密模式
c. 提供 Elasticsearch 的 superuser 密碼 (此為預設值,可更改,務必記下來!!!)
d. 改預設密碼的指令
e. 建立 token 值的指令(是不是跟 k8s 有點像~)

  1. 編輯 jvm.options 文件

預設是使用 4G,但因為筆者環境記憶體資源不夠多,因此將設定改為 1G。

$ sudo vi /etc/elasticsearch/jvm.options

更改前:

更改後:

  1. 重新加載配置文件
$ sudo systemctl daemon-reload
  1. 設定開機自動啟動 (選擇性)
$ sudo systemctl enable elasticsearch.service
  1. 啟動 Elasticsearch 服務
$ sudo systemctl start elasticsearch.service
$ sudo systemctl status elasticsearch.service

Elasticsearch API

在進行 Elasticsearch API 操作之前,這邊為大家解析 Linux 裡,常用來呼叫 API 的指令及其組成方式,以便大家理解。

呼叫 Elasticseach API 基本組成如下:

curl --cacert <Cert_Path> -u <User_Name:Password> https://<IP | Domain_Name>:<Port_Number>

A:透過 HTTP Protocol 來呼叫 API 的指令

B:開啟 TLS 模式時,需指定憑證檔路徑。(Elasticserch 從版本 8 開始,預設開啟 TLS)。

C:使用者名稱和密碼。

D:服務的網址。這邊需要特別注意是否有開啟 TLS 模式:

  • 開啟 TLS:https
  • 未開啟 TLS:http

常用 Elasticsearch API

  1. 確認 Elasticsearch 版本資訊
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200
  1. 確認節點狀態
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200/_cat/nodes?v
  1. 確認節點或集群的健康狀態
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200/_cat/health?v

注意:單節點的狀態欄 (Status) 若出現 Yellow 是正常狀況,因為這跟 Elasticsearch 的機制有關。當我們有一筆資料進入 Elasticsearch,預設會建立一個主分片 (Shard) 和副本 (Replica),Elasticsearch 作為分散式資料庫,必須確保災難發生 (如節點故障、服務失效等等) 時,資料不會因為都存在同一台主機上導致遺失或損毀。因此,主分片和副本必定不會被分配到同一個節點上,節點狀態值可參考注意事項的表格。

  1. 確認分片
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200/_cat/shards?v

注意事項

  1. 節點狀態值
狀態描述
green所有主分片和副本正確分配
yellow1. index 內同一組的主、副分片缺少主分片或副本分片
2. 集群中的節點失效
red1. index 內同一組的主、副分片都已遺失
2. 集群整個重啟時,短時間可能會看到狀態為 red,因為分片正在被分配當中
  1. Elasticsearch 預設不允許使用 root 來啟動服務。
  1. 在終端機上輸入 API 時,若 https 這段有使用參數 &,記得要加上雙引號將其框起來,因為在 Linux 中,參數 & 代表背景執行的意思。範例如下:

因查詢語法裡有參數 &,因此加上雙引號將其框起來 (下方灰框處)。

$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY "https://localhost:9200/_cat/nodes?v&h=name,ip,pid,r"

若沒有框起來,依然可以執行,但會停留在結果畫面不動,須按 Enter 來結束。

$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200/_cat/nodes?v&h=name,ip,pid,r
  1. 因為 Elasticsearch 的 jvm 預設使用 4G 記憶體,需注意自身主機的記憶體資源,若資源不夠則無法啟動,並出現以下訊息。
$ sudo systemctl start elasticsearch.service

error 資訊:

$ sudo less /var/log/elasticsearch/elasticsearch.log
[2022-08-18T11:06:24,582][ERROR][o.e.b.Elasticsearch      ] [localhost] fatal exception while booting Elasticsearchorg.elasticsearch.bootstrap.StartupException: java.security.AccessControlException: access denied ("java.io.FilePermission" "/tmp" "read")

結語

本次 Elasticsearch 單節點的安裝流程到這邊結束。另外推薦大家可以安裝 Kibana,Kibana 作為圖形化 Dashboard,藉由圖表或視覺化畫面,幫助我們更快上手和管理數據。附上官方連結給大家參考:Install Kibana with RPM | Kibana Guide [8.3] | Elastic


本文章由歐立威技術顧問撰寫而成,轉載請註明出處,內容若有侵權請來信告知

相關文章