你将花费8分钟读完本篇内容,读完之后你将会:
•完成Elasticsearch集群搭建•从新的角度熟悉节点角色作用
引言

女神

在么?
在在在,怎么了?


彦祖

女神

男朋友没有惹我生气,我是来学Elasticsearch的。
咋还学会抢答了呢


彦祖

女神

防火防盗防学长😄今天我们做什么?
继续把集群搭起来呗


彦祖
网络拓扑

在搭建集群之前,我们需要规划好我们的集群分布,例如需要几台机器,每台机器安装哪些内容?


彦祖

女神

我数一下,好像需要三台机器,那我哪里有那么多电脑?
这几天装虚拟机真是白装了!我们可以克隆出来多台机器😎


彦祖
机器克隆
在克隆机器之前,我希望你可以对自己的工作环境做一下规划,例如像我一样,这样更方便我们在学习的过程中对机器进行管理。

创建克隆


移动到对应目录,并如法炮制创建其他的两个节点

启动虚拟机,登录进去根据网络拓扑修改IP
可以看到,我们上次配置的IP是172.16.192.81
,克隆过来的机器同之前的模板机器一致。

修改ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
按i进入编辑模式,wq保存


重启网关
systemctl restart network
对另外两台机器按上述方式修改IP,在nuoshell建立三台机器的连接


女神

这样我就有了三台机器了吗?那是不是我一个人可以打十个了?
只要你的机器能够hold住,别说十个了,你可以随便玩。


彦祖

女神

耶耶耶~以后我装个windows的虚拟机玩玩!

女神

啊呀呀,学长学长,我的电脑怎么风扇呼呼的转,我感觉可以蒸鸡蛋了!
对呀,虽然是虚拟机,但还是使用的是你机器的硬件资源,如果觉得电脑hold不住,可以在装centos的时候选择最小化安装包


彦祖

女神

那你不早说!!!!╭(╯^╰)╮
集群配置
DNode1节点下elasticsearch文件夹下的config/elasticsearch.yml
# 集群名称是否是一个集群的重要指标cluster.name: cluster-1# es节点名称node.name: dnode-1# es节点中集群角色 data 数据节点 master 预备主节点 active_master 激活主节点(真实) voting_only 只参与投票不参与选举 ingest 管道数据处理节点node.roles: [data,master,ingest,remote_cluster_client]# 对外提供服务的地址和节点见通信的地址network.host: 172.16.192.83# 对外提供服务的端口http.port: 9200# 发现种子节点,小型集群配置全部的地址,端口9300是节点之间的通信端口discovery.seed_hosts: ["172.16.192.83:9300", "172.16.192.84:9300"]# 集群初始化的时候,用来选主的节点,必须是配置了master的节点,但不必是全部的节点cluster.initial_master_nodes: ["dnode-1", "dnode-2"]

我省去了一些不必要的配置,目前我们构成最基础的集群只需要这些配置就好了,后面我们再对其他的配置进行介绍


彦祖

女神

原来只需要这样几个配置就可以构成集群了吗?
比如cluster.name 用来命名集群,也是各个节点接头的一个暗号,标志着咱们是一派的,就像是一个帮派名。就算你有取名困难症,elasticsearch也会给你一个默认的名字


彦祖

女神

那我可不要默认的,我要一个我容易辨识的名字
对的。这个习惯很好,这样不仅仅别人容易认识你,如果出错了,你自己也好定位是哪个集群出了问题。


彦祖

女神

那node.name不用说肯定集群成员的名称咯?
对的,你真聪明。那我考考你,每个节点都运行了之后,各个节点怎么让别人发现自己呢?


彦祖

女神

emmm,要是我的话,我就在我的脚丫子上刻上记号,这样别人就知道我们是一派的
不错不错,上一个这么做的还是天地会。对于elasticsearch来说,它要暴露出自己的网络地址,这样网络上的其他节点才能找到它。也就是network.host。这个配置是别人能够找到我的小区。但是小区里面那么多住户,别人怎么知道是哪一间呢?


彦祖

女神

贴上门牌号!
对的。我们需要告诉别人我们的门牌号,那elasticsearch的默认门牌号是9300,不需要配置的。那节点又怎么去发现别人呢?总不能整个中国各个小区都去问问,是不是network.host吧?


彦祖

女神

是哦,那应该怎么办呢?难不成做个地址登记表呀。
你可真是小天才。不错就是用了一个登记表,只不过这个登记表没你想的那么大,就是配置的一个数组。discovery.seed_hosts就告诉我们可以去哪些地方找我们的组织。


彦祖

女神

对哦,只需要找到一个组织,那么一传十,十传百,我们就可以都认识了。哈哈哈,elasticsearch真厉害。
集群角色
的确是这样。但是还存在一个问题。


彦祖

女神

我已经找到了组织了呀,什么问题???
组织集群是找到了,可是我们谁当家做主啊?我是啥角色,跑去组织告诉它我是五袋长老,他们会让我做主吗?


彦祖

女神

是哦~那这样的话,这个elasticsearch帮派也是要划定不同的管理层了,我们就按丐帮的来吧!每个节点就是我们的帮众,我单方面宣布成立elasticsearch帮,主要负责帮人民查找,学长你是副帮主,我是帮主😄😄
那可不行。之前就说过,elasticsearch分工明确。他们可是有着严格的角色划分。


彦祖
关于Elastic的分工介绍,你可以再次回顾这里。ELasticsearch分工介绍
node.roles
elastic通过node.roles的配置来进行角色节点


女神

对的,只要我们给每台机器都划分了角色,这样在组织之中就能够各司其职了。可是还是没有解决当家做主啊!
你很敏锐。虽然我们给每个节点都划分了角色,就算这个节点是master也不代表它可以做主啊,但是如果每个节点都能做主的话,那么岂不是乱了。因此,我们就从众多节点里面选举一个真正的主人,而只有master的的节点,才有资格参与选拔赛。


彦祖

女神

选拔赛?这里面是有比赛的吗?
cluster.initial_master_nodes
当然了,文无第一,武无第二。既然是当家做主,那肯定只能选择一个来做抉择。因此就有比赛啦。不过在选主之前,我们需要在众多帮众(节点)选出业绩做得好的来参与比赛。


彦祖

女神

在么?当然,不然每个帮众都来比赛,这不得累死呀。那我们如何选择哪些帮众来参加呢?
通过cluster.initial_master_nodes
我们指定了一份预选名单,首先是节点的角色是master,之后这个列表里面的帮众,开始进行选主比赛,由其他节点投票,选出真正的帮主来负责统筹。

女神

嗯嗯,真好玩,那这个比赛的规则我们怎么制定呢?
生成集群
好了,在了解选主流程之前,我们先把DNode1的竞争对手DNode2配置好,让这个帮派先创立起来。


彦祖

先在DNode01启动es,再在DNode02启动es
# 启动es,可别忘了切换普通用户哦./elasticsearch


_cluster/health

如果出现下列错误,可以删除elastic的data文件,重新启动!但是,生产上禁止这种操作!!!!


女神

这样就形成了集群了吗?一个天下第一大帮就诞生了吗?虽然只有几个配置变成了集群,可是你还没有告诉我们,比赛规则是什么呢?
比赛规则可有的聊了,下一篇,我们专门讲一下当前比较主流、精妙的选主规则怎么样?


彦祖

女神

那就是下次一定咯,elasticsearch帮主!!对啦,网络拓扑图你可还没有完成哦?Kibana是什么?
那是我们elasticsearch帮的外交部,关于它的介绍啊,我们下次一定。


彦祖
八佾Talk
子夏曰:“日知其所亡,月无忘其所能,可谓好学也已矣。” 《论语》




