elasticsearch技术2--集群

一.elasticsearch集群介绍

1.简介

1.Elasticsearch可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理PB级数据 Elasticsearch 天生就是分布式的,并且在设计时屏蔽了分布式的复杂性。

2.Elasticsearch尽可能地屏蔽了分布式系统的复杂性。
这里列举了一些在后台自动执行的操作:
1)分配文档到不同的容器 或 分片中,文档可以储存在一个或多个节点中
2)按集群节点来均衡分配这些分片,从而对索引和搜索过程进行负载均衡
3)复制每个分片以支持数据冗余,从而防止硬件故障导致的数据丢失
4)将集群中任一节点的请求路由到存有相关数据的节点 集群扩容时无缝整合新节点,重新分配分片以便从离群节点恢复

3.一个运行中的Elasticsearch 实例称为一个 节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成,它们共同承担数据和负载的压力。
1)当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。
2)当一个节点被选举成为主节点时,它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等.而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈.任何节点都可以成为主节点。我们的示例集群就只有一个节点,所以它同时也成为了主节点。

4.作为用户,我们可以将请求发送到 集群中的任何节点,包括主节点.每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点.无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端. Elasticsearch 对这一切的管理都是透明的。

2.集群状态颜色

绿色:所有条件都满足,数据完整,副本满足
黄色:数据完整,副本不满足	
红色:有索引里的数据出现不完整了
紫色:有分片正在同步中
默认自己就是一个集群,默认的集群名称为:elasticsearch

3.安装注意的内容

1.锁定内存要修改配置
2.JVM虚拟机最大最小内存设置为一样
3.最大内存不要超过30G
4.更改数据目录需要授权用户给elasticsearch
5.es启动比较慢

注意:
下面步骤在elasticsearch技术https://blog.csdn.net/weixin_44736359/article/details/107252465 二.安装部署实施后,每个节点实施安装部署,再开始下面集群。

二.elasticsearch集群安装部署

1.配置(2台)

m01:
[root@m01 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: Linux			            #集群名称,同一个集群内所有节点集群名称要一模一样
node.name: node-1			            #节点名称,同一个集群内所有节点的节点名称不能重复
path.data: /data/elasticsearch			#数据目录
path.logs: /var/log/elasticsearch		#日志目录
bootstrap.memory_lock: true				#内存锁定
network.host: 10.0.0.51,127.0.0.1		#绑定监听地址
http.port: 9200							#默认端口号
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]	#集群发现节点配置
discovery.zen.minimum_master_nodes: 2	#最小主节点数,选项相关参数,有公式 master/2 +1 

[root@m01 ~]#  systemctl restart elasticsearch
[root@m01 ~]# netstat -lntup|grep 9200
tcp6       0      0 10.0.0.51:9200          :::*                    LISTEN      1731/java
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      1731/java

m02:
[root@m02 ~]#vim /etc/elasticsearch/elasticsearch.yml 
cluster.name: Linux
node.name: node-2
path.data: /data/elasticsearch  
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.52,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
discovery.zen.minimum_master_nodes: 2
[root@m02 elasticsearch]# systemctl restart elasticsearch
[root@m02 elasticsearch]# netstat -lntup|grep 9200
tcp6       0      0 10.0.0.52:9200          :::*                    LISTEN      1916/java
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      1916/java

2.查看

在这里插入图片描述
问题及反思

节点角色:
主节点	   :负责调度数据返回数据
工作节点    :负责处理数据
谁是主节点和工作节点应该是与你的启动顺序有关。

默认情况下:
1.所有节点都是工作节点
2.主节点即负责调度又负责处理数据

3.操作指令

curl -XGET 'http://localhost:9200/_nodes/procese?human&pretty'                       #查看集群名称
curl -XGET 'http://localhost:9200/_nodes/_all/info/jvm,process?human&pretty'         #查看集群所有信息
curl -XGET 'http://localhost:9200/_cat/nodes?human&pretty'                           #查看当前节点个数
curl -XPUT 'localhost:9200/_cat/indices?pretty'                                      #查看集群健康状态

问题及反思

1.
2个节点,master设置为2的时候,一台出现故障导致集群不可用
解决方案:
把还存活的节点的配置文件集群选举相关的选项注释掉或者改成1
discovery.zen.minimum_master_nodes: 1
重启服务

2.一开始就把
discovery.zen.minimum_master_nodes: 1这里设置为1
当一台发生故障时,两个节点独立,数据不一致会导致查询结果不一致
解决办法:找出不一致的数据,清空一个节点,以另一个节点的数据为准,然后手动插入修改后的数据

因此,最后觉得设置discovery.zen.minimum_master_nodes: 2这里为2比较妥当。

4.配置(增加一台)

m03:
[root@m03 ~]#vim /etc/elasticsearch/elasticsearch.yml 
cluster.name: Linux
node.name: node-3
path.data: /data/elasticsearch  
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.53,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.53"] #添加集群内任一一台ip地址就行,因为集群内所有节点的信息都是共享的
discovery.zen.minimum_master_nodes: 2
[root@m03 elasticsearch]# systemctl restart elasticsearch
[root@m03 elasticsearch]# netstat -lntup|grep 9200
tcp6       0      0 10.0.0.52:9200          :::*                    LISTEN      1916/java
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      1916/java

在这里插入图片描述
问题及反思

1.默认数据分配:
5分片
1副本

2.监控状态
1)监控集群健康状态 不是 green
or
2)监控集群节点数量 不是 3
curl -s -XPUT  'http://10.0.0.51:9200/_cat/nodes?human&pretty' |wc -l 
不满足上面条件其中之一就报警

3.极限损坏:
3节点
最多只能是坏2台节点

4.在动作那里先不要删除,可以先关闭,等过一段不用到再删除。

5.操作指令

1.默认创建数据:
curl -XPUT 'localhost:9200/index1?pretty'
{
    
    
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "index1"
}

2.创建索引的时候指定分片和副本
curl -XPUT 'localhost:9200/index2?pretty' -H 'Content-Type: application/json' -d'       
{
   "settings" : { 
   "number_of_shards" : 3,     #3分片
   "number_of_replicas" : 1     #1副本
 } 
}'


3.分片数一旦创建就不能再更改了,但是我们可以调整副本数
curl -XPUT 'localhost:9200/index2/_settings?pretty' -H 'Content-Type: application/json' -d'         
{
  "settings" : { 
  "number_of_replicas" : 1
 } 
}'

猜你喜欢

转载自blog.csdn.net/xiaoleinb/article/details/113917313
今日推荐