最近在项目中ElasticSearch的使用越来越多,最新的项目中要求ES使用集群,在啥都不知道的情况下弄了两天后,终于搞定,因此写个笔记记录下。

1.首先我们需要创建一个Virtual network,输入name和选择location后,就是一直下一步,直到完成。

虽然这个Virtual network不是必须的,但是这会使整个配置简单很多。这个Virtual network的作用是是在其下面的virtual machina可以互相通信,如果没有这个你需要配置的就不只是防火墙这么简单了。

2.我们需要创建一个Cloud service, 这个Cloud service会包含我们所有的集群的Virtual machine,并且为其提供Auto scale, Cloud service可以在创建Virtual machine的时候一起创建,就不在这里单独创建了

以下是Cloud service的一些认知

  • Cloud Service是一个容器,它可以包括托管服务或者虚拟机。
  • 部署在Cloud Service中的托管服务虽然支持Java,PHP,Python、Ruby、Node.js等开源技术,但用来host托管服务的虚拟机运行的是Windows Server操作系统,一个托管服务的instance就是一个运行Windows Server操作系统的虚拟机,一个托管服务可以包含多个instance。
  • 一个虚拟机必须放置在一个Cloud Service中。一个Cloud Service可以包含多个虚拟机,但一个虚拟机只能隶属于一个Cloud Service。
  • 一个Cloud Service默认分配一个VIP,即:动态分配的公网IP地址。

3.接下来我们就可以开始创建最关键的Virtual machine了,ElasticSearch等都是安装在Azure的Virtual Machine上的。

  1)输入virtual machine的name和登陆远程用的user name和password

2)在第一次创建的时候选择创建新的Cloud service, 新的Availability set

3)接下来就是一路next,直到创建完成。

直到现在我们已经完成了azure的一部分创建,接着我们可以在azure的面板选择创建完成的VM(Virtual Machine,接下来简称VM),点击connect,会下载一个RDP的文件,使用这个我们可以远程到VM上进行我们的Elastic search安装

我建议先在VM安装一个Chrome,刚刚创建的VM自带的IE由于有很多安全的设置,所以很难用。另外所以安装都要在C盘进行,D盘是临时盘,在VM重启的时候会被覆盖。

4.现在开始安装Elastic search

  1)安装JDK,可以直接在VM进行下载(不得不说Azure上面的下载速度简直飞快),并且写入系统环境变量(这个可以自行百度)

  2)下载Elastic search,并且解压到C盘

  3)  要使ES的集群能使用,我们需要安装一个插件,https://github.com/elastic/elasticsearch-cloud-azure, 这个插件将使用Azure Api,获取某个cloud service下面的所有VM,进行unicast discovery

    (1) 生成证书,如果你安装了git,可以使用git的命令行工具进行生成,以下是生成所需要的命令(注意要将[Your password here]改成自己的密码

    1. 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
    2. # 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 -password pass:[Your password here]
    3. 把azure-certificate.cer文件上传到azure,在Settings -> Manage Certificates.
    4. 将 azurekeystore.pkcs12文件拷贝到解压出来的ES文件夹的根目录

      (2)下载这个压缩包,修改elasticsearch.yml文件,并将其拷贝到ES的Config目录下,覆盖两个文件

    1. subscription.id -> 你azure的subscription id,可以在Settings -> Subscriptions下面可以找到
    2. cloud.service.name -> 上面创建的Cloud service的名字
    3. keystore.path -> 如果你的文件是放在ES的根目录,path的值是:azurekeystore.pkcs12,如果你放在下面的文件夹中,path: /[你的文件夹名字]/azurekeystore.pkcs12
    4. keystore.password ->你上面输入的密码
    5. deployment.name -> cloud service的deployment name,可以在Cloud service的Dashboard右边的属性中找到

      (3)安装插件,在VM上面打开CMD,cd到你的ES的文件夹下的bin目录,比如我的cd C:\elasticsearch-1.7.3\bin,

        并且执行plugin install elasticsearch/elasticsearch-cloud-azure/2.7.1(注意,后面的版本号要对应你的ES的版本,对应的版本可以在这里找到)PS:这里的cmd别关

  4)接下来可以安装Elastic search了,如果上面安装插件的时候,cmd没有关闭,可以直接接下去执行,如果关闭了也可以再次打开bin

    (1)依次执行下面的命令:

    1. service.bat install       --> 将ES安装为service
    2. service.bat start     --> 启动service
    3. plugin -install mobz/elasticsearch-head      --> 安装head插件

    (2)到windows services将Elastic search的service设置为Auto start(Delayed start)

  5)设置防火墙,执行下面的power shell命令,第一个ES对外的Port,第二个是内部通讯用的Port

    1. New-NetFirewallRule -DisplayName "Allow Elasticsearch Outbound Port 9200" -Direction Outbound -Protocol TCP -RemotePort 9200 -Action Allow
      New-NetFirewallRule -DisplayName "Allow Elasticsearch Inbound Port 9200" -Direction Inbound -Protocol TCP -LocalPort 9200 -Action Allow
    2. New-NetFirewallRule -DisplayName "Allow Elasticsearch Outbound Port 9300" -Direction Outbound -Protocol TCP -RemotePort 9300 -Action Allow
      New-NetFirewallRule -DisplayName "Allow Elasticsearch Inbound Port 9300" -Direction Inbound -Protocol TCP -LocalPort 9300 -Action Allow

  6)到这里ES的设置已经完成,在VM上面输入localhost:9200和http://localhost:9200/_plugin/head/可以看到,如果有什么错误的话,可以在logs里面找到你需要的信息

    

5. 设置VM的Endpoints,我们需要在这里设置VM的对外开放的端口,这里没啥难度,在azure management里面找到刚才创建的VM,进入到详细页面,有一个endpoints的tab,添加端口就行,主要是添加Laod balance,只有Basic的VM是不能添加load balance的,这个要注意。

   

完成后,我们就可以通过外网访问ES了,在cloud service里面找到PUBLIC VIRTUAL IP (VIP) ADDRESS,替换掉上面的localhost,试试是否可以访问。

6. 到这里,需要的设置已经都完成了,接下来我们就需要copy多个VM,形成集群

  1)在VM的页面,下面有个,我们可以把VM整个capture成一个Image

  2)接着创建我们的第二个VM,在创建页面我们可以选择My images,可以看到我们刚才创建的那个Image,使用这个image创建VM,接下来的步奏和上面的基本一致,只是cloud service和availability set需要选择我们第一次创建的。

    

  3) 创建完成后,我们再去看head,就可以看到

    

    以后用同样方式创建的VM都会自动加入到集群里面来。

7)设置Auto-scale,这个在Cloud service设置里面可以找到,具体的可以参考这个博客

  PS:被Auto-scale关掉的VM是不算钱的,可以省下很多的费用

大功告成,我目前在项目里面添加了5个VM,目前的情况

ElasticSearch在Azure中的集群配置和Auto-Scale的更多相关文章

  1. ElasticSearch入门 第二篇:集群配置

    这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  2. ArcGIS for Server的安装及站点中的集群配置 分类: ArcGIS for server 2015-07-18 14:14 16人阅读 评论(0) 收藏

       坚信并为之坚持是一切希望的原因. (不足之处,欢迎批评指正!) --------------------环境:Windows server2008R2虚拟机两台----------------- ...

  3. elasticsearch简单的安装以及集群配置详解

    首先要确保有java8的环境,安装方法如下(centos) wget --no-check-certificate --no-cookies --header "Cookie: oracle ...

  4. ES2:ElasticSearch 集群配置

    ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.yml,其中,elasticsearch.yml 用来配置Elastic ...

  5. hadoop集群配置方法---mapreduce应用:xml解析+wordcount详解---yarn配置项解析

    注:以下链接均为近期hadoop集群搭建及mapreduce应用开发查找到的资料.使用hadoop2.6.0,其中hadoop集群配置过程下面的文章都有部分参考. hadoop集群配置方法: ---- ...

  6. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  7. ELK系列七:Elasticsearch的集群配置和监控以及在部署ELK中踩的坑

    1.基本下载安装 #按照ELK系列一博客安装启动即可,没有大坑,注意一下权限即可 chmod -R 777 ./elasticsearch #此外没有java的,注意安装下JDK,我这次部署的环境是C ...

  8. 在Azure HDInsight HBase集群中使用Thrift接口

    Sun wei  Wed, Feb 25 2015 2:17 AM Apache Thrift 是一种可扩展的跨语言服务接口,可以通过内置的代码生成引擎帮助创建跨语言服务类库,Apache HBase ...

  9. ElasticSearch(十):Elasticsearch集群配置

    我本地虚拟机配置了两台centos机器,分别安装了elasticsearch6.4.0版本,IP分别为:192.168.56.12, 192.168.56.13 分别修改两个机器上Elasticsea ...

随机推荐

  1. LUCAS 定理

    原来一张图就就能证明:C(N,M)%P,p是素数. 简直太炫酷 先膜拜会 #include<iostream>#include<cstdio>#include<ctime ...

  2. HDOJ 1398 Square Coins 母函数

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  3. Pots of gold game:看谁拿的钱多

    问题描述: Pots of gold game: Two players A & B. There are pots of gold arranged in a line, each cont ...

  4. 制作类似DataGrid自定义控件

    首先看一下.net自带的DataGrid,想想如何应该怎样才能实现那样的展现形式. 1)需要以网格形式显示内容. 2)网格的宽度.高度可以定义. 3)可以显示滚动条. 4)单击可以选中某个单元格. 当 ...

  5. CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。

    CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板. CLIP PATH (MASK) GENERATO ...

  6. Android线程消息通信(一)

    Android在Java标准线程模型的基础上,提供了消息驱动机制,用于多线程之间的通信.基于消息驱动机制的线程通信模型陈伟线程消息通信.在标准线程模型中,线程执行完毕后便退出,而Android扩展了线 ...

  7. POJ 2653 Pick-up sticks(线段相交)

    题目链接 题意 : 把每根棍往地上扔,找出最后在上面的棍,也就是说找出所有的没有别的棍子压在它的上面的棍子. 思路 : 对于每根棍子,压在他上面的棍子一定是在它之后扔的棍子,所以在找的时候只要找它之后 ...

  8. (1)opengl-nehe 4种框架

    http://www.yakergong.net/nehe/ 这个网站还是opengl方面比较权威的,作者叫nehe 这东西估计是要先装个ndk,然后才能运行代码 先睡觉! 以下内容参考自http:/ ...

  9. 【uva1502/hdu4117-GRE Words】DP+线段树优化+AC自动机

    这题我的代码在hdu上AC,在uva上WA. 题意:按顺序输入n个串以及它的权值di,要求在其中选取一些串,前一个必须是后一个的子串.问d值的和最大是多少. (1≤n≤2×10^4 ,串的总长度< ...

  10. React-非dom属性-key

    一.react性能 1.内容类似的尽量归到同一人组件,这样react不用每次都重新渲染 2.类似列表的内容,要加上key,可减少渲染次数 3.react渲染过程 二.代码 <!DOCTYPE h ...