透過 Helm Chart 部署 Easysearch

infinilabs發表於2023-09-18

Easysearch 可以透過 Helm 快速部署了,快來看看吧!

Easysearch 的 Chart 倉庫地址在這裡  。

使用 Helm 部署 Easysearch 有兩個前提條件:

我們先按照 Chart 倉庫的說明來快速部署一下。

~ helm repo add infinilabs 
~ cat << EOF | kubectl apply -n test -f -apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: easysearch-ca-issuer
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: easysearch-ca-certificate
spec:
  commonName: easysearch-ca-certificate
  duration: 87600h0m0s
  isCA: true
  issuerRef:
    kind: Issuer
    name: easysearch-ca-issuer
  privateKey:
    algorithm: ECDSA
    size: 256
  renewBefore: 2160h0m0s
  secretName: easysearch-ca-secret
EOF~ helm install easysearch infinilabs/easysearch -n test

執行上面的兩個命令之後,檢視一下部署情況

~ kubectl get pod -n testNAME           READY   STATUS    RESTARTS   AGE
easysearch-0   1/1     Running   0          38s
~ kubectl get svc -n testNAME                      TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)             AGE
easysearch-svc-headless   ClusterIP   None         <none>        9200/TCP,9300/TCP   67s
~ kubectl exec -n test easysearch-0 -it -- curl -ku'admin:admin' 
Defaulted container "easysearch" out of: easysearch, init-config (init){
  "name" : "easysearch-0",  "cluster_name" : "infinilabs",  "cluster_uuid" : "JwhwwWHMQKy8l6_US7rB1A",  "version" : {
    "distribution" : "easysearch",    "number" : "1.5.0",    "distributor" : "INFINI Labs",    "build_hash" : "5b5b117bc43e6793e7bb0cd8bd83567a5ef35be0",    "build_date" : "2023-09-07T14:55:21.232870Z",    "build_snapshot" : false,    "lucene_version" : "8.11.2",    "minimum_wire_lucene_version" : "7.7.0",    "minimum_lucene_index_compatibility_version" : "7.7.0"
  },  "tagline" : "You Know, For Easy Search!"}

透過上面的驗證,我們可以看到 Easysearch 已經部署完成,是不是很方便。

按照 Chart 倉庫的指導說明部署的是一個單節點叢集,那如果要部署多節點的要怎麼辦呢?下面讓我們來研究一下 Easysearch Chart 包的原始碼  。

熟悉 Chart 包結構的小夥伴都清楚,Chart 包的變數配置一般都是在 values.yaml 檔案中配置的。

我們先來看一下預設的   檔案內容(這裡只截選了一些可能需要變更的配置,完整內容請查閱原始碼):

  • pod 副本數以及使用資源的配置

replicaCount: 1resources:
  limits:
    cpu: 1000m    memory: 2Gi  requests:
    cpu: 1000m    memory: 2Gi
  • 使用儲存型別以及容量的配置

storageClassName: local-pathdataVolumeStorage: 100Gi
  • 叢集名、主節點列表以及節點角色配置

clusterName: infinilabsmasterHosts: '"easysearch-0"'discoverySeedHosts: '"easysearch-0.easysearch-svc-headless"'nodeRoles: '"master","data","ingest","remote_cluster_client"'

根據研究原始碼的結果,多節點叢集的部署只需要我們調整部署的 pod 副本數、叢集名、主節點列表以及節點角色這幾個配置。下面讓我們來實踐一下:

1、叢集規劃

叢集名:es-test

規模:3 主節點 + 3 資料節點 + 2 協調節點

2、Chart 的版本名

主節點:es-test-master

資料節點:es-test-data

協調節點:es-test-coordinate

3、根據節點角色建立不同的 values.yaml 檔案

  • es-test-master.yaml

replicaCount: 3clusterName: es-testmasterHosts: '"es-test-master-easysearch-0","es-test-master-easysearch-1","es-test-master-easysearch-2"'discoverySeedHosts: '"es-test-master-easysearch-0.es-test-master-easysearch-svc-headless","es-test-master-easysearch-1.es-test-master-easysearch-svc-headless","es-test-master-easysearch-2.es-test-master-easysearch-svc-headless"'nodeRoles: '"master","ingest","remote_cluster_client"'
  • es-test-data.yaml

replicaCount: 3clusterName: es-testmasterHosts: '"es-test-master-easysearch-0","es-test-master-easysearch-1","es-test-master-easysearch-2"'discoverySeedHosts: '"es-test-master-easysearch-0.es-test-master-easysearch-svc-headless","es-test-master-easysearch-1.es-test-master-easysearch-svc-headless","es-test-master-easysearch-2.es-test-master-easysearch-svc-headless"'nodeRoles: '"data","ingest","remote_cluster_client"'
  • es-test-coordinate.yaml

replicaCount: 2clusterName: es-testmasterHosts: '"es-test-master-easysearch-0","es-test-master-easysearch-1","es-test-master-easysearch-2"'discoverySeedHosts: '"es-test-master-easysearch-0.es-test-master-easysearch-svc-headless","es-test-master-easysearch-1.es-test-master-easysearch-svc-headless","es-test-master-easysearch-2.es-test-master-easysearch-svc-headless"'nodeRoles: ""

4、使用各節點角色的配置檔案部署

~ helm install es-test-master infinilabs/easysearch -n test -f es-test-master.yaml
~ helm install es-test-data infinilabs/easysearch -n test -f es-test-data.yaml
~ helm install es-test-coordinate infinilabs/easysearch -n test -f es-test-coordinate.yaml

5、驗證

~ kubectl get pod -n test|grep es-test
es-test-master-easysearch-0       1/1     Running   0          5m57s
es-test-data-easysearch-0         1/1     Running   0          5m29s
es-test-coordinate-easysearch-0   1/1     Running   0          5m10s
es-test-master-easysearch-1       1/1     Running   0          4m57s
es-test-data-easysearch-1         1/1     Running   0          4m29s
es-test-coordinate-easysearch-1   1/1     Running   0          4m10s
es-test-master-easysearch-2       1/1     Running   0          3m56s
es-test-data-easysearch-2         1/1     Running   0          3m29s
~ kubectl exec -n test es-test-master-easysearch-0 -it -- curl -ku'admin:admin' /_cat/nodes?v
Defaulted container "easysearch" out of: easysearch, init-config (init)ip          heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name10.42.0.130           12          63  12    1.53    2.67     2.11 -         -      es-test-coordinate-easysearch-010.42.0.136           53          65  52    1.53    2.67     2.11 dir       -      es-test-data-easysearch-110.42.0.139            6          63  14    1.53    2.67     2.11 -         -      es-test-coordinate-easysearch-110.42.0.133           10          63  14    1.53    2.67     2.11 imr       -      es-test-master-easysearch-110.42.0.149           58          65  59    1.53    2.67     2.11 dir       -      es-test-data-easysearch-210.42.0.124           53          68  35    1.53    2.67     2.11 imr       *      es-test-master-easysearch-010.42.0.127           56          65  46    1.53    2.67     2.11 dir       -      es-test-data-easysearch-010.42.0.146           15          63  18    1.53    2.67     2.11 imr       -      es-test-master-easysearch-2

至此,多叢集已部署完成。

關於 Easysearch

about easysearch

INFINI Easysearch 是一個分散式的近實時搜尋與分析引擎,核心引擎基於開源的 Apache Lucene。Easysearch 的目標是提供一個輕量級的 Elasticsearch 可替代版本,並繼續完善和支援更多的企業級功能。 與 Elasticsearch 相比,Easysearch 更關注在搜尋業務場景的最佳化和繼續保持其產品的簡潔與易用性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029458/viewspace-2984277/,如需轉載,請註明出處,否則將追究法律責任。

相關文章