Azure 发现设置流程

编辑

我们在此将介绍一种策略,即将我们的 Elasticsearch 集群对外隐藏。

使用此策略,只有位于同一虚拟端口后面的虚拟机才能相互通信。这意味着在此模式下,您可以使用 Elasticsearch 单播发现来构建集群,并使用 Azure API 来检索有关您的节点的信息。

先决条件

编辑

在开始之前,您需要具备

  • 一个 Windows Azure 帐户
  • 不是来自 MacPorts 的 OpenSSL,特别是 OpenSSL 1.0.1f 6 Jan 2014 似乎无法为 ssh 创建有效的密钥对。顺便说一句,已知 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 云服务(位于 管理证书下)以及 设置 -> 管理证书下。

    当提示输入密码时,您需要输入一个非空密码。

    有关如何为 Azure 创建密钥的更多详细信息,请参阅此指南

    完成后,您需要在 Azure 中上传您的证书

    • 转到 管理控制台
    • 使用您的帐户登录。
    • 单击 门户
    • 转到“设置”(左侧列表底部)
    • 在底部栏上,单击 上传 并上传您的 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 集群名称

azure-elasticsearch-cluster

映像

b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-13_10-amd64-server-20130808-alpha3-en-us-30GB

虚拟机名称

myesnode1

虚拟机大小

extrasmall

位置

西欧

登录名

elasticsearch

密码

password1234!!

使用命令行

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 cloud 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 中的日志。