之前已在一台服务器上部署了elasticsearch,今天想着尝试elasticsearch的分布式,但受限于硬件资源(手头上只有一台服务器),所以就想着在一台服务器上部署多个结点(下文以2个结点作为例子)。
1、首先将已安装好的elasticsearch文件再复制一份
[root@localhost ~]# cd /usr/local/elasticsearch
[root@localhost elasticsearch]# cp -R elasticsearch-1.3.2 elasticsearch-1.3.2-node.2
[root@localhost elasticsearch]# ls -l
total 16
drwxr-xr-x. 8 root root 4096 Sep 16 16:04 elasticsearch-1.3.2
drwxr-xr-x. 8 root root 4096 Sep 16 14:45 elasticsearch-1.3.2-node.2
2、修改结点名称
[root@localhost elasticsearch]# cd elasticsearch-1.3.2-node.2/config/
[root@localhost config]# vi elasticsearch.yml
将 node.name : 01 修改为 03 ,保存+退出
注意:cluster.name 必须保持一致,此处 cluster.name : elasticsearch244
启动:[root@localhost config]# ../bin/elasticsearch -d
3、查询
[root@localhost config]# curl -i -XGET 'http://localhost:9200/_cluster/health?pretty';
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 279
{
"cluster_name" : "elasticsearch244",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
可以查看到,结点生效了。
4、一些事项记录
(1)、当修改elasticsearch.yml,开启 bootstrap.mlockall: true 时,无法启动,后查看日志,初步判断是与java启动的内存环境有一些冲突,但具体原因未知。本着先不折腾的心态,先跳过。
(2)、一开始cluster.name 都设置为一样,但无法找到对应的其他结点。后将防火墙关闭,解决了此问题。
/etc/init.d/iptables stop
另外,关闭防火墙之后,在浏览器访问也能正确响应了。