将SOLR ConfigSet传输到新集群

时间:2018-11-15 07:30:10

标签: apache-zookeeper google-kubernetes-engine solr6

我目前正在Kubernetes 3 Zookeeper服务器和6个节点上运行云SOLR6服务

我最近出于开发目的部署了新的云SOLR6服务,但是它需要与当前运行环境相同的架构结构,数据并不重要,因为我将手动填充该数据

如何仅复制当前设置中运行的集合的结构/架构

1 个答案:

答案 0 :(得分:0)

这是最终完成的方式,我敢肯定有一种更有效的方式来做到这一点,但这确实可行。

  1. 登录到源solr pod

    kubectl -it exec {{ sourcePodName }} -c {{ containerName }} bash

    eg: kubectl -it exec solr-staging-0 -c solr bash

  2. 创建configSet的转储

    /opt/solr/bin/solr zk -n {{ configSetName }} -d /tmp/{{ configSetName }}/ -z {{ sourceZookeeperAddress }}:{{ zookeeperPort }}

    eg: /opt/solr/bin/solr zk -n connectors -d /tmp/connectors/ -z solr-dev.solr-staging-cluster:2181

  3. 通过将其复制到本地从Kubernetes容器中检索转储

    kubectl cp {{ sourcePodName }}:/tmp/{{ configSetName }}/* /tmp/{{ configSetName }}

    eg: kubectl cp solr-staging-0:/tmp/connectors/* /tmp/connectors

  4. 创建conf内容的zip文件

    zip -r /tmp/{{ configSetName }}/con/conf/* /tmp/{{ configSetName }}.zip

    eg: zip -r /tmp/connectors/con/conf/* /tmp/connectors.zip

  5. 端口转发到目标kubernetes服务器

    gcloud container clusters get-credentials {{ clusterName }} --zone {{ zone }} --project {{ projectName }} && kubectl port-forward {{ podName }} 8983:8983

    eg: gcloud container clusters get-credentials workflows --zone europe-west1-d --project bidvest-alice && kubectl port-forward solr-dev-0 8983:8983

  6. 将数据集导入到目标Solr群集

    注意:这实际上是SOLR 7.7 import语句,但是SOLR6.6命令不起作用

    curl -X POST --header "Content-Type:application/octet-stream" --data-binary @/tmp/{{ configSetName }}.zip "http://localhost:8983/solr/admin/configs?action=UPLOAD&name={{ configSetName }}"

    eg: cmd: curl -X POST --header "Content-Type:application/octet-stream" --data-binary @/tmp/connectors.zip "http://localhost:8983/solr/admin/configs?action=UPLOAD&name=connectors"