Azure 发现设置流程
编辑Azure 发现设置流程编辑
我们将在此展示一种策略,即隐藏我们的 Elasticsearch 集群,使其无法从外部访问。
使用此策略,只有位于同一虚拟端口后面的虚拟机才能相互通信。这意味着使用此模式,您可以使用 Elasticsearch 单播发现来构建集群,并使用 Azure API 检索有关节点的信息。
先决条件编辑
在开始之前,您需要拥有
- 一个 Windows Azure 帐户
- 不是来自 MacPorts 的 OpenSSL,具体来说,
OpenSSL 1.0.1f 6 Jan 2014
似乎无法为 ssh 创建有效的密钥对。FWIW,Ubuntu 14.04 LTS 上的OpenSSL 1.0.1c 10 May 2012
已知可以正常工作。 -
SSH 密钥和证书
您应该遵循 本指南 了解如何创建或使用现有 SSH 密钥。如果您已完成此操作,则可以跳过以下步骤。
以下是使用
openssl
生成 SSH 密钥的说明# You may want to use another dir than /tmp cd /tmp openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout azure-private.key -out azure-certificate.pem chmod 600 azure-private.key azure-certificate.pem openssl x509 -outform der -in azure-certificate.pem -out azure-certificate.cer
生成一个密钥库,插件将使用它通过证书对所有 Azure API 调用进行身份验证。
# Generate a keystore (azurekeystore.pkcs12) # Transform private key to PEM format openssl pkcs8 -topk8 -nocrypt -in azure-private.key -inform PEM -out azure-pk.pem -outform PEM # Transform certificate to PEM format openssl x509 -inform der -in azure-certificate.cer -out azure-cert.pem cat azure-cert.pem azure-pk.pem > azure.pem.txt # You MUST enter a password! openssl pkcs12 -export -in azure.pem.txt -out azurekeystore.pkcs12 -name azure -noiter -nomaciter
将
azure-certificate.cer
文件上传到 Elasticsearch 云服务(在Manage Certificates
下)和Settings -> Manage Certificates
下。当系统提示输入密码时,您需要输入一个非空的密码。
有关如何为 Azure 创建密钥的更多详细信息,请参阅 本指南。
完成后,您需要将证书上传到 Azure
- 转到 管理控制台。
- 使用您的帐户登录。
- 单击
Portal
。 - 转到设置(左侧列表底部)
- 在底部栏上,单击
Upload
并上传您的azure-certificate.cer
文件。
您可能想要使用 Windows Azure 命令行工具
-
安装 NodeJS,例如在 MacOS X 上使用 homebrew
brew install node
-
安装 Azure 工具
sudo npm install azure-cli -g
-
下载并导入您的 Azure 设置
# This will open a browser and will download a .publishsettings file azure account download # Import this file (we have downloaded it to /tmp) # Note, it will create needed files in ~/.azure. You can remove azure.publishsettings when done. azure account import /tmp/azure.publishsettings
创建您的第一个实例编辑
您需要有一个可用的存储帐户。有关更多信息,请查看 Azure Blob 存储文档。
您需要选择要运行的操作系统。要获取官方可用映像的列表,请运行
azure vm image list
假设我们要在西欧的超小型实例上部署 Ubuntu 映像
Azure 集群名称 |
|
映像 |
|
VM 名称 |
|
VM 大小 |
|
位置 |
|
登录 |
|
密码 |
|
使用命令行
azure vm create azure-elasticsearch-cluster \ b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-13_10-amd64-server-20130808-alpha3-en-us-30GB \ --vm-name myesnode1 \ --location "West Europe" \ --vm-size extrasmall \ --ssh 22 \ --ssh-cert /tmp/azure-certificate.pem \ elasticsearch password1234\!\!
您应该看到类似以下内容
info: Executing command vm create + Looking up image + Looking up cloud service + Creating cloud service + Retrieving storage accounts + Configuring certificate + Creating VM info: vm create command OK
现在,您的第一个实例已启动。
使用 SSH
您需要在每次登录实例时提供私钥和用户名
ssh -i ~/.ssh/azure-private.key [email protected]
但您也可以在 ~/.ssh/config
文件中定义一次
Host *.cloudapp.net User elasticsearch StrictHostKeyChecking no UserKnownHostsFile=/dev/null IdentityFile ~/.ssh/azure-private.key
接下来,您需要在新的实例上安装 Elasticsearch。首先,将密钥库复制到实例,然后使用 SSH 连接到实例
scp /tmp/azurekeystore.pkcs12 azure-elasticsearch-cluster.cloudapp.net:/home/elasticsearch ssh azure-elasticsearch-cluster.cloudapp.net
连接后,安装 Elasticsearch。
安装 Elasticsearch 云 Azure 插件编辑
# Install the plugin sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install discovery-azure-classic # Configure it sudo vi /etc/elasticsearch/elasticsearch.yml
并添加以下行
# If you don't remember your account id, you may get it with `azure account list` cloud: azure: management: subscription.id: your_azure_subscription_id cloud.service.name: your_azure_cloud_service_name keystore: path: /home/elasticsearch/azurekeystore.pkcs12 password: your_password_for_keystore discovery: type: azure # Recommended (warning: non durable disk) # path.data: /mnt/resource/elasticsearch/data
启动 Elasticsearch
sudo systemctl start elasticsearch
如果出现任何错误,请检查 /var/log/elasticsearch
中的日志。