上一篇文章有簡單分享過 Neo4j 因果叢集,在實務上當然不會一台一台機器個別設定。而如果要以 Docker 來跑 Neo4j 因果叢集,官方也有相關教學,但是面對這麼多的設定檔,有沒有更方便的方式來跑呢?
目前 Neo4j 有一個實驗計畫 Neo4j Helm
尚未正式發佈,但是可以先來體驗看看,僅支援 Neo4j 4.0 以上的企業版。
如果對 Neo4j in Docker 還不熟悉,可以先參考之前的文章 以 Docker 執行 Neo4j 資料庫。
再進入 Neo4j Helm 之前,會先簡介 Kubernetes 和 Helm。
俗稱 K8S,可以幫助我們管理微服務,自動化地部署及管理多台機器上的 Docker Container。
它可以省去手動部署多個 Container 到多台機器的麻煩,並且可以同時監控多個 Container 狀態,做故障重啟,或自動擴展。
此外 K8S 可以很方便的移植,無論是自架伺服器,或是託管於雲端例如 AWS 的 EKS、GCP 的 GKE、Azure 的 AKS。
要在本機端體驗 K8S 可以下載 minikube
接著啟動 minukube cluster,並在瀏覽器打開 dashboard
minikube start
minikube dashboard
關於 K8S 已經有許多邦友的分享非常豐富,請自行參考囉
https://ithelp.ithome.com.tw/articles/10192401
K8S 的服務對應到許多的 yaml 設定檔,那麼一旦系統龐大且複雜,就會需要同時管理、版控、更新很多設定檔,仍然是一項困難的工作。
所以 Helm 就出現了!它是是一個集中管理設定檔的工具,會把 K8S 服務中各種元件裡的 yaml 統一打包成一個叫做 Chart 的集合,然後透過參數同時管理與設定這些 yaml 檔案。
Helm 的安裝請參考
https://helm.sh/docs/intro/install/
Helm 的概念基礎教學,可參考
https://medium.com/@C.W.Hu/kubernetes-helm-chart-tutorial-fbdad62a8b61
Neo4j Helm 就是把整個 Neo4j 因果叢集的設定全部打包成了 Helm Chart,你不再需要個別去設定機器,只要簡單幾行指令,就可以部署一個可擴展的 Neo4j 因果叢集,可以很快自訂 Core、Replica 數量。
下載到本地端後,可以先直接以整個 zip 檔案部署
helm install mycluster --set core.numberOfServers=3,readReplica.numberOfServers=3,acceptLicenseAgreement=yes,neo4jPassword=mySecretPassword neo4j-4.1.1-1.tgz
或是解壓縮後進到資料夾內執行 Helm 會有更多彈性
helm install mycluster --set core.standalone=true,acceptLicenseAgreement=yes,neo4jPassword=mySecretPassword .
會看到類似的畫面
馬上查詢一下所有 Pods,就會看到 Docker Container 正在建立
kubectl get pods
而如果要更改 Core、Replica 的數量,只要修改 values.yaml 即可,不過官方的 values.xml 裡面 acceptLicenseAgreement 是 "no",這樣 Neo4j 是跑不起來的,跑企業版一定要設定為 yes,然後執行
helm install mycluster -f values.yaml .
而在 deployment 資料夾底下,則是 Neo4j 官方預先給的各種部署情境可以供參考實作,例如
helm install mygraph -f deployment-scenarios/quickstart-standalone.yaml .
以上是今天的分享,謝謝大家~