您的位置:首页 > 其它

ELK 中的elasticsearch 集群的部署

2017-05-27 15:39 411 查看

本文内容

背景

ES集群中第一个master节点

ES slave节点

本文总结 Elasticsearch(以下简称ES)搭建集群的经验。以 Elasticsearch-rtf-2.2.1 版本为例。


我搭过三个集群:研究ELK时搭了一个;测试环境搭了一个;生产环境搭了一个。回想起来,搭建这三个集群时遇到的问题都不一样(我这么说,主要针对集群中节点发现,以及master问题,而不是es启动不起来或报错等问题)~

研究ELK时,搭建ES集群倒是很顺利,原因很简单,先从一台机器开始的;

可是测试环境搭建集群时,遭遇新加入节点一直不能发现 master 节点,或是集群节点出现都选举自己为 master 这两个情况,因为,节点都是陆续启动的,配置不当,是会出问题;

等到在生产环境搭建集群时,遭遇无法选举出 master 节点的情况。ES head 和 kopf 两个插件都不可用,因为,既然集群没有选举出 master 节点,显然,整个集群是用不了的。而前面的情况,head 和 kopf 插件还是能用的,但能用,意义也不大~



总结起来,搭建集群,应该注意两个问题。首先,当然是 Elasticsearch.yml 配置是否正确;再就是你的操作方式。比如节点启动步骤等。

因为,如果搭建一个集群,那么必须保证集群有一个 master 节点,一般来说,第一个启动的节点,一定是 master。然后,分别启动其他节点,这些节点就会找到 master 节点,而 master 节点,也会发现这些节点。

因此,配置集群中的第一个master节点,务必简单(简单到什么程度,后面再说),先启动它,它会立刻成为 master 节点。之后,再配置其他节点,最好直接告诉它们,可能的 master 节点是什么,然后启动他们,它们就会发现 master,而 master 节点,也会发现新加入的节点。

否则,如果第一个启动的节点,配置过于复杂(条件苛刻),造成它不能成为 master 节点,那么,整个集群会失败。

稍后,你再配置节点时,可以采用更高级、复杂点的配置,就不会有什么问题了~

所以,我才强调,ES 集群中第一个 master 节点的配置务必简单,以后再调整。


背景

假设,我们想搭建这样一个名为 myfirstcluster 的ES集群,它有两个节点:

节点主机名是否为 master
192.168.1.2es-01
192.168.1.3es-02

ES集群中第一个master节点

最简单的 ES master 节点配置如下。该配置文件,是一个完整的 ES 配置文件,所以很长。我顺便翻译成了中文。

1: # ======================== Elasticsearch Configuration =========================
[code]






























http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>












http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>






































































































[/code]


说明:

第15行,指定集群名称 myfirstcluster;

第21行,指定节点名称,最好写主机名;

第22和23行,指定该是否可能为master节点,以及是否为数据节点。ES的所说master节点,其实弱化了很多,仅仅就是为了节点发现和选举master节点而已,它甚至都可以不用来保存数据。

因此,看你的规划,完全可以让一个 master 节点,不保存任何数据;

第54行,指定节点IP地址,192.168.1.2;

第57行,指定HTTP端口,比如,head、kopf插件等插件,都使用该端口。事实上,你可以指定从 92开头的任何端口;

第59行,指定集群内部通信的端口,比如,节点发现都使用该端口。事实上,你可以指定93开头的任何端口,该行也可以写成“transport.tcp.port: 9300”;

这7行配置,在我看来,针对集群中第一个master节点,必须配置正确的。其他配置,可以暂时不用。

其中,第57行和第59行,实际上,一台物理机,是可以运行多个 ES,只需要指定不同的配置文件即可。

第69行,指定节点初始化列表,因为该节点是集群第一台机器,并且要当 master,所以写”127.0.0.1:9300”,端口号,就是你在第59行指定的端口。相关资料显示,也可以不指定端口,那是不是会93开头的所有端口扫描一下呢?;

从97行开始,是配置ES的分词。


slave 节点

Slave 节点配置如下。该配置文件内容只列出了配置项,但是是完整的。

1: # ======================== Elasticsearch Configuration =========================
[code]
























































































































[/code]


说明:

第7行,也是指定了集群名称;

第13行,指定了节点名称为 es-02(主机名)

第14和15行,指定了该节点可能成为 master 节点,还可以是数据节点;

第35行,指定节点IP地址为 192.168.1.3;

第39行,指定http端口,你使用head、kopf等相关插件使用的端口;

第40行,集群内部通信端口,用于节点发现等;

上面的配置master也是这么配置的。

第47行,跟master节点配置不一样了。这里直接告诉该的节点,可能的master节点是什么。

文章摘自:http://www.cnblogs.com/liuning8023/p/5454696.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: