1、集群结构
ES 通常以集群方式工作、以提高搜索性能、容错能力、高可用、实现PB级数据搜索。
相关概念:
(1)结点: ES集群由多台ES服务器组成、每个ES 服务端就是个一个NODE结点
(2)分片:由于硬盘限制,为提高ES处理数据量、将索引进行分片、分片后将其放在不同结点、实现多个服务端共同对外提供索引及搜索服务
(3)副本:将分片备份出来存储在其他服务端,实现高可用
(4)主节点:用于管理集群,如增删节点、一个集群中至少有一个主节点,可有多个,主节点挂了ES 会重新选一主节点
(5)节点转发:每一个节点都知道其他节点的信息,我们可以向任何一个节点发请求,当当前节点分片恰好没有数据时会自动转发给其他节点查询数据
(6)节点角色:节点分为三个角色,使其承担不同功能
①主节点(master):用于集群管理、如新增节点、分片分配、索引新增、删除等
②数据节点(data): 保存数据分片、服务索引、搜索
③客户端节点(client): 仅作为请求客户端存在,复制负载均衡、不保存数据、只做请求转发
(7)节点角色的四种组合方式
master=true ,data=true : 主节点、数据节点
master=false,data=ture: 仅做数据节点
master=true,data=false: 仅做主节点
master=false,data=false: 客户端节点
2、搭建集群
实现创建一个2结点的集群,每个节点都是master:true ,data:true ,让其自动选举真正的主节点。
结点1:
elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
# ---------------------------------- Cluster -----------------------------------
#集群名称
cluster.name: xuecheng
# ------------------------------------ Node ------------------------------------
#节点名,通常一台物理机就是一个节点
node.name: xc_node-1
node.master: true
node.data: true #即是主节点又是数据及诶单
node.max_local_storage_nodes: 2
node.ingest: true
# ----------------------------------- Paths ------------------------------------
path.data: D:/keil/elasticsearch-6.2.1/data
path.logs: D:/keil/elasticsearch-6.2.1/logs
# ----------------------------------- Memory -----------------------------------
#true锁定ES使用的内存,避免内存与swap分区交换数据
bootstrap.memory_lock: false
# ---------------------------------- Network -----------------------------------
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
# --------------------------------- Discovery ----------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300","0.0.0.0:9301"]
# ---------------------------------- Gateway -----------------------------------
http.cors.enabled: true
http.cors.allow-origin: /.*/
节点2:
elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
# ---------------------------------- Cluster -----------------------------------
#集群名称
cluster.name: xuecheng
# ------------------------------------ Node ------------------------------------
#节点名,通常一台物理机就是一个节点
node.name: xc_node-2
node.master: true
node.data: true #即是主节点又是数据节点
node.max_local_storage_nodes: 2
node.ingest: true
# ----------------------------------- Paths ------------------------------------
path.data: D:/keil/elasticsearch-6.2.1/data
path.logs: D:/keil/elasticsearch-6.2.1/logs
# ----------------------------------- Memory -----------------------------------
#true锁定ES使用的内存,避免内存与swap分区交换数据
bootstrap.memory_lock: false
# ---------------------------------- Network -----------------------------------
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9301
# --------------------------------- Discovery ----------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300","0.0.0.0:9301"]
# ---------------------------------- Gateway -----------------------------------
http.cors.enabled: true
http.cors.allow-origin: /.*/