最近在项目中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的一些认知
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]改成自己的密码 )
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
# 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]
Settings -> Manage Certificates
. (2)下载这个压缩包,修改elasticsearch.yml文件,并将其拷贝到ES的Config目录下,覆盖两个文件
(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)依次执行下面的命令:
(2)到windows services将Elastic search的service设置为Auto start(Delayed start)
5)设置防火墙,执行下面的power shell命令,第一个ES对外的Port,第二个是内部通讯用的Port
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,目前的情况