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 云服务(在 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 集群名称

azure-elasticsearch-cluster

映像

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

VM 名称

myesnode1

VM 大小

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