
es加节点会平衡数据。一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载。当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据。es集群会自动做负载均衡,如果我们现在加一个es节点到集群中来的话,es会按照一定的规则将部分shard分配到新的节点上去。
es主节点作用
主节点的主要职责是负责集群层面的相关 *** 作,管理集群变更,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。主节点也可以作为数据节点,但稳定的主节点对集群的健康是非常重要的,默认情况下任何一个集群中的节点都有可能被选为主节点。
一、集群搭建
1.前置 *** 作
若克隆已有的es虚拟机,一定要清空一下文件:
2.配置集群,修改elasticsearch.yml
# 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了
cluster.name: imooc-es-cluster
# 每一个节点的名称,必须不一样
node.name: es-node1
# http端口(使用默认即可)
http.port: 9200
# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点(相当于企业老总)
node.master: true
# 数据节点,用于对文档数据的增删改查
node.data: true
# 集群列表(列出所有的其它服务器ip)
discovery.seed_hosts: ["192.168.1.184", "192.168.1.185", "192.168.1.186"]
# 启动的时候使用一个master节点
cluster.initial_master_nodes: ["es-node1"]
3.可查看剔除注释的配置文件内容
more elasticsearch.yml | grep ^[^#]
4.分别启动各个节点,后查看信息
二、集群脑裂
1.集群脑裂
如果发生网络中断或者服务器宕机,那么集群会有可能被划分为两个部分,各自有自己的master管理,那么这就是脑裂
服务器1原为master,宕机后自己投票为master
2.解决方案
解决实现原理:半数以上的节点同意选举,节点方可成为master
discovery.zen.minimum_master_nodes=(N/2)+1
N为集群中master节点的数量,也就是node.master=true服务节点总数
3.ES7之后无此参数,已交由es自己管理
ES现在是很多系统中不可或缺的一部分,为了在使用时快速的部署一个ES环境,这里记录一下自己的一些 *** 作步骤。所有的 *** 作都是基于Docker来的,没有装Docker的话请参照 官方文档 安装
采用的ES版本为6.8.13
宿主机系统为Centos 7.8
单机版添加密码验证
集群版使用ssl传输
将下面的内容粘贴到elasticsearch.yml
ES_JAVA_OPTS设置了ES的启动内存,自己按需修改
discovery.type=single-node表示该es为单节点,不加这个的话,你的es健康状态会显示为黄色
根据提示,先输入y,然后输入密码,这里会要求输入多次,主要是需要给好几个系统添加密码,用户默认elastic
至此,单节点的elasticsearch就部署好了,通过elasticsearch head即可连接使用
生成的ssl证书在用户目录certs下 cd ~/certs 即可看到
后续步骤需要在每一台集群服务器上执行
NODE_LIST:配置集群中其他节点的地址,格式为:ip:port,ip2:port2
NODE_NAME:当前节点的name
至此,搭建就完了
我们一般在开发与测试的使用使用的单节点的es,节约资源嘛,而在生产的时候,那肯定就需要上集群了,这时候在开发与测试环境的时候,java的连接配置就会与生产有一些出入
我一般都是用的 spring-boot-starter-data-elasticsearch 搭配 x-pack-transport 来连接
先引入相关的依赖
版本号这东西自己注意下哈,es对这还是挺敏感的
这里主要是通过isCluster这个配置来区分的
如果连接的是集群,由于我们之前为集群配置了一个ssl证书,所以java连接的时候也是需要使用那个证书的,所以会多出来几个配置
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)