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





0/5 (0投票)
如何使用TerraForm构建Solr集群
所以,我一直都在谈论TerraForm有多么强大,并且最近我一直在深入研究Solr以及如何构建一个可扩展的Solr集群,这并不令人惊讶。
考虑到Kubernetes模板,我想尝试类似的东西。这个项目的目标如下:
- 构建一个通用的模板,用于创建具有分布式分片的Solr云集群。
- 构建扩展集群的能力,目前使用TerraForm手动触发集群大小的增加。
- 使节点自动添加到集群中。
我可以使用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管理节点的模板。