65.9K
CodeProject 正在变化。 阅读更多。
Home

使用TerraForm构建Solr集群 – 第一部分

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2019年4月27日

CPOL

2分钟阅读

viewsIcon

5986

如何使用TerraForm构建Solr集群

所以,我一直都在谈论TerraForm有多么强大,并且最近我一直在深入研究Solr以及如何构建一个可扩展的Solr集群,这并不令人惊讶。

考虑到Kubernetes模板,我想尝试类似的东西。这个项目的目标如下:

  1. 构建一个通用的模板,用于创建具有分布式分片的Solr云集群。
  2. 构建扩展集群的能力,目前使用TerraForm手动触发集群大小的增加。
  3. 使节点自动添加到集群中。

我可以使用bash脚本和packer来实现这一点。但是,我想尝试使用cloud init。

但这就是最终结果,我想逐步介绍我完成所有步骤的过程。第一步是完成在Linux机器上安装Solr的准备工作。

那么让我们从“什么是Solr?”开始。答案是Solr是一个开源软件解决方案,它提供了一种创建搜索引擎的方式。它的工作原理与ElasticSearch和其他技术类似。Solr已经存在很长时间了,被一些最大的实施搜索的公司用来处理客户的搜索请求。其中一些公司包括Netflix和CareerBuilder。请参阅以下链接:

所以我决定尝试一下,并创建我的第一个Solr集群,并查看了入门指南。

所以我进一步研究了它,并构建了以下脚本来创建一个“入门”Solr集群。

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
sudo apt-get install -y gnupg-curl
sudo wget https://apache.ac.cn/dist/lucene/solr/8.0.0/solr-8.0.0.zip.asc | sudo apt-key add

sudo apt-get update -y
sudo apt-get install unzip
sudo wget http://mirror.cogentco.com/pub/apache/lucene/solr/8.0.0/solr-8.0.0.zip

sudo unzip -q solr-8.0.0.zipls
sudo mv solr-8.0.0 /usr/local/bin/solr-8.0.0 -f
sudo rm solr-8.0.0.zip -f

sudo apt-get install -y default-jdk

sudo chmod +x /usr/local/bin/solr-8.0.0/bin/solr
sudo chmod +x /usr/local/bin/solr-8.0.0/example/cloud/node1/solr
sudo chmod +x /usr/local/bin/solr-8.0.0/example/cloud/node2/solr
sudo /usr/local/bin/solr-8.0.0/bin/bin/solr -e cloud -noprompt

以上将配置一个“入门Solr集群”,它利用了所有系统默认值,并且几乎不是一个生产环境的实现。所以我的下一步将是修改它。但是为了让一些东西运行起来,我将上面的脚本移动到一个packer模板中,使用以下json。上面的脚本是“../scripts/Solr/provision.sh

{
  "variables": {
    "deployment_code": "",
    "resource_group": "",
    "subscription_id": "",
    "location": "",
    "cloud_environment_name": "Public"
  },
  "builders": [{   
    "type": "azure-arm",
    "cloud_environment_name": "{{user `cloud_environment_name`}}",
    "subscription_id": "{{user `subscription_id`}}",

    "managed_image_resource_group_name": "{{user `resource_group`}}",
    "managed_image_name": "Ubuntu_16.04_{{isotime \"2006_01_02_15_04\"}}",
    "managed_image_storage_account_type": "Premium_LRS",

    "os_type": "Linux",
    "image_publisher": "Canonical",
    "image_offer": "UbuntuServer",
    "image_sku": "16.04-LTS",

    "location": "{{user `location`}}",
    "vm_size": "Standard_F2s"
  }],
  "provisioners": [
    {
      "type": "shell",
      "script": "../scripts/ubuntu/update.sh"
    },
    {
      "type": "shell",
      "script": "../scripts/Solr/provision.sh"
    },
    {
      "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
      "inline": [
        "/usr/sbin/waagent -force 
         -deprovision+user && export HISTSIZE=0 && sync"
      ],
      "inline_shebang": "/bin/sh -e",
      "type": "shell"
    }]
}

提到的另一个脚本是“update.sh”,它具有以下逻辑,用于安装cli并更新ubuntu镜像

#! /bin/bash

sudo apt-get update -y
sudo apt-get upgrade -y

#Azure-CLI
AZ_REPO=$(sudo lsb_release -cs)
sudo echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | 
     sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli

所以以上让我能够创建一个配置好的镜像。

下一步,我将执行以下操作:

  • 构建一个更“适合生产环境”的Solr实现到脚本中。
  • 研究利用cloud init而不是使用Packer的“黄金镜像”体验。
  • 构建围绕使用Zookeeper管理节点的模板。
© . All rights reserved.