文章目录
- 一.elasticsearch集群介绍
- 1.简介
- 2.集群状态颜色
- 3.安装注意的内容
- 二.elasticsearch集群安装部署
- 1.配置(2台)
- 2.查看
- 3.操作指令
- 4.配置(增加一台)
- 5.操作指令
一.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技术1 二.安装部署实施后,每个节点实施安装部署,再开始下面集群。
二.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
}
}'