Elasticsearch 介紹 – 單節點安裝建置篇
內容目錄
本篇文章說明 ElasticsearchL 8.3.3 單節點的安裝步驟,告訴大家如何快速架設一個單節點的 Elasticsearch。若對 Elasticsearch 還不是很熟悉的朋友,可以參考 Elasticsearch 介紹 – 基本概念篇。
本篇文章你會學到:
- 單節點安裝
- Elasticsearch 基本 API 指令
那我們廢話不多說,馬上開始建立我們第一個 Elasticsearch 吧!
單節點安裝建置
前置作業
- 準備環境,筆者環境規格如下:
OS | CPU | Memory | Disk |
CentOS 7.9 | 4 vCores | 8 G | 50 G |
- 確認 Elasticsearch 和作業系統版本是否匹配:Support Matrix | Elastic
- 下載 Elasticsearch:8.3.3:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-x86_64.rpm
- Elasticsearch 使用 java 開發,因此安裝包內皆會自帶 OpenJDK
- 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 |
安裝步驟
- 確認作業系統版本
$ sudo cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
- 關閉防火牆
為了快速建立,筆者先關閉防火牆。若大家有需要,也可為 Elasticsearch 設定防火牆規則。
$ sudo systemctl stop firewalld
$ sudo systemctl status firewalld
- 建立管理目錄
建立專用目錄是筆者習慣,對於未來要增加新的 Elasticsearchs 安裝包或其他 Elasticsearch 相關東西,管理上會更加方便。
$ mkdir -p ~/elk/es
切換至該目錄下
$ cd ~/elk/es
- 下載 Elasticsearch GPG Key (選擇性)
此步驟為選擇性,即使不安裝也不會影響,頂多會在後續安裝時跳出告警訊息。
GPG Key 的目的簡單來說,是用於驗證安裝包是否和官方相符。
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 下載 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
- 確認檔案並驗證
檔案若無損壞,則會回傳: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
- 安裝 Elasticsearch
$ sudo rpm --install elasticsearch-8.3.3-x86_64.rpm
從以上資訊我們可以注意到 5 個階段:
a. 內建腳本會自動幫我們建立 Elasticsearch 的使用者及群組
b. 預設開啟 HTTP/Transport 的加密模式
c. 提供 Elasticsearch 的 superuser 密碼 (此為預設值,可更改,務必記下來!!!)
d. 改預設密碼的指令
e. 建立 token 值的指令(是不是跟 k8s 有點像~)
- 編輯 jvm.options 文件
預設是使用 4G,但因為筆者環境記憶體資源不夠多,因此將設定改為 1G。
$ sudo vi /etc/elasticsearch/jvm.options
更改前:
更改後:
- 重新加載配置文件
$ sudo systemctl daemon-reload
- 設定開機自動啟動 (選擇性)
$ sudo systemctl enable elasticsearch.service
- 啟動 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
- 確認 Elasticsearch 版本資訊
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200
- 確認節點狀態
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200/_cat/nodes?v
- 確認節點或集群的健康狀態
$ 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 作為分散式資料庫,必須確保災難發生 (如節點故障、服務失效等等) 時,資料不會因為都存在同一台主機上導致遺失或損毀。因此,主分片和副本必定不會被分配到同一個節點上,節點狀態值可參考注意事項的表格。
- 確認分片
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:oYt3J2uBZnHNLNhmoNxY https://localhost:9200/_cat/shards?v
注意事項
- 節點狀態值
狀態 | 描述 |
green | 所有主分片和副本正確分配 |
yellow | 1. index 內同一組的主、副分片缺少主分片或副本分片 2. 集群中的節點失效 |
red | 1. index 內同一組的主、副分片都已遺失 2. 集群整個重啟時,短時間可能會看到狀態為 red,因為分片正在被分配當中 |
- Elasticsearch 預設不允許使用 root 來啟動服務。
- 在終端機上輸入 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
- 因為 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
本文章由歐立威技術顧問撰寫而成,轉載請註明出處,內容若有侵權請來信告知