Pages - Menu

2021年9月8日 星期三

[Solr]SolrCloud on GKE

前言

這又是另一個坑,本來都是使用單機上的solr,但是有人稍微壓測了一下,發現下group的時候,效能好像不太優,所以就叫我把solr裝在GKE上面,看能不能在查詢的時候,
自動做負載平衡。所以,又來了查文件之旅。
本來是在想只要安裝solr就好,但是滿滿的未知。
然後突然找到了SolrCloud 專門為雲端所弄出來的Solr,就是你了。
但安裝過程還真的沒那麼容易...😂

正文

Solr基本架構

ref. 淺談Solr叢集架構

完整架構

SolrCloud是基於 Solr 與 [[blog.36.分佈式系統-Zookeeper]]搜尋方案。

特色功能有

  • 集中式的配置資訊
  • 自動容錯
  • 近實時搜尋
  • 查詢時自動負載平衡
  • 自動分發
  • 日誌跟蹤

solrCloud的架構,可以看看以下幾篇。
ref.

這邊直接開始安裝吧。

首先確定你的電腦有helm ,我試著找有沒有單純可以用 kubectl apply的方式安裝,但沒找到。所以,用helm吧。

  1. 先增加solr的倉庫
    helm repo add apache-solr https://solr.apache.org/charts

    helm repo update    
  1. 安裝 solr-operator,指定安裝在 solr的 namespace,避免istio的istio-proxy安裝進去

    kubectl create -f https://solr.apache.org/operator/downloads/crds/v0.3.0/all-with-dependencies.yaml

    helm install solr-operator apache-solr/solr-operator \
  --version 0.3.0 --namespace solr

operator 安裝完成 (fig.1)



(fig.1)

  1. solrCloud.yaml
apiVersion: solr.apache.org/v1beta1
kind: SolrCloud
metadata:
  name: video
  namespace: solr
spec:
  customSolrKubeOptions:
    podOptions:
      resources:
        limits:
          memory: 3Gi
        requests:
          cpu: 700m
          memory: 3Gi
  dataStorage:
    persistent:
      pvcTemplate:
        spec:
          resources:
            requests:
              storage: 2Gi
      reclaimPolicy: Delete
  replicas: 3
  solrImage:
    repository: solr
    tag: 8.8.2
  solrJavaMem: -Xms500M -Xmx500M
  updateStrategy:
    method: StatefulSet
  zookeeperRef:
    provided:
      chroot: /explore
      image:
        pullPolicy: IfNotPresent
        repository: pravega/zookeeper
        tag: 0.2.9
      persistence:
        reclaimPolicy: Delete
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 2Gi
      replicas: 3
      zookeeperPodPolicy:
        resources:
          limits:
            memory: 500Mi
          requests:
            cpu: 250m
            memory: 500Mi
  1. 佈署 solrCloud.yaml,這邊的系統資源要求頗高,資源不夠請多開一些cpu 或 memory。
    kubectl apply -f solrCloud.yaml
  1. 由於我是直接佈署在istio上面,所以開啟網頁的話,我是直接新增 virtualService的設定。
kind: VirtualService
metadata:
  name: istio-virtualservice-tools
  namespace: tools
spec:
  hosts:
  - "*"
  gateways:
    - istio-gateway-tools.istio-system.svc.cluster.local
  http:
  - match:
        - uri:
            exact: /
        - uri:
            prefix: /solr
    name: solr
    route:
        - destination:
            host: video-solrcloud-common.solr.svc.cluster.local
            port:
              number: 80  

也可以直接在本機上使用port-forward轉發開啟網頁。如以下指令,開啟 網頁 http://localhost:8080 (fig.2)

    kubectl port-forward service/video-solrcloud-common -n solr 8080:80

(fig.2)

結尾

再來就是,實際操作 [[39.solrCloud的初體驗]]了

沒有留言:

張貼留言