黑马es集群

1、为什么要做es集群

单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题

海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点

单点故障问题:将分片数据在不同节点备份(replica)

2、搭建es集群

1、用3个docker容器模拟3个es节点

复制代码
version: '2.2'
services:
  es01:
    image: elasticsearch:7.12.1
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: elasticsearch:7.12.1
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data02:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - elastic
  es03:
    image: elasticsearch:7.12.1
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
    ports:
      - 9202:9200
volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

这是一个使用Docker Compose编排的Elasticsearch集群配置文件。在这个配置中,定义了三个Elasticsearch节点(`es01`、`es02`和`es03`)以及它们共享的网络、卷和相关设置。

  • `version: '2.2'`指定了使用的Docker Compose版本。

  • `services`段定义了各个服务,对应了三个Elasticsearch节点`es01`、`es02`和`es03`。

  • 每个Elasticsearch节点都基于`elasticsearch:7.12.1`镜像启动,指定了节点名称、集群名称、发现种子主机、初始主节点和Java虚拟机参数等环境变量配置。

  • `volumes`段定义了三个数据卷`data01`、`data02`和`data03`用于持久化地存储Elasticsearch数据。

  • `ports`指定了将Elasticsearch节点的9200端口(或9200、9201、9202)映射到主机的9200端口(或9201、9202、9203),允许通过主机访问Elasticsearch服务。

  • `networks`段指定了每个Elasticsearch节点连接到`elastic`网络,通过该网络实现节点之间的通信和互连。

  • `volumes`部分定义了三个本地驱动的数据卷用于持久化存储Elasticsearch数据。

  • `networks`部分定义了一个名为`elastic`的桥接网络,用于连接Elasticsearch节点。

这个配置文件实现了一个基于Docker容器的Elasticsearch集群,通过定义各节点之间的通信方式、数据存储方式和网络连接,使得这些独立的Elasticsearch节点能够组成一个工作集群,共同提供Elasticsearch服务。

2、设置虚拟机内存

es运行需要修改一些linux系统权限,修改`/etc/sysctl.conf`文件

vi /etc/sysctl.conf

添加下面的内容:

vm.max_map_count=262144

然后执行命令,让配置生效:

sysctl -p

通过docker-compose启动集群:

docker-compose up -d

3、通过cerebro管理集群

具体文件见黑马视频,需要注意的是java版本的匹配

图中版本我使用的是jdk1.8,实测jdk21会闪退

在地址栏中输入你任意一个es容器地址和端口即可,注意不要忘了http://

es集群的脑裂

默认情况下,每个节点都是master eligible节点,因此一旦master节点宕机,其它候选节点会选举一个成为主节点。当主节点与其他节点网络故障时,可能发生脑裂问题。

为了避免脑裂,需要要求选票超过(eligible节点数量+1)/2才能当选为主,因此eligible节点数量最好是奇数。对应配置项是discovery.zen.minimum master nodes,在es7.0以后,已经成为默认配置,因此一般不会发生脑裂问题

master eligible节点的作用是什么?

参与集群选主

主节点可以管理集群状态、管理分片信息、处理创建和删除索引库的请求

data节点的作用是什么?

数据的CRUD

coordinator节点的作用是什么?

路由请求到其它节点

合并查询到的结果,返回给用户

3、分布式细节

分布式存储

分布式查询

其中的coordinating node也可以是其中节点的任意一个

总结:

分布式新增如何确定分片?

coordinating node根据id做hash运算,得到结果对shard数量取余,余数就是对应的分片

分布式查询:

分散阶段:coordinating node将查询请求分发给不同分片

收集阶段:将查询结果汇总到coordinatingnode,整理并返回给用户

4、故障转移

集群的master节点会监控集群中的节点状态,如果发现有节点宕机,会立即将宕机节点的分片数据迁移到其它节点,确保数据安全,这个叫做故障转移。

主节点挂了就选个新的主节点,然后数据迁移,其他节点挂了就直接数据迁移

故障转移:

master容机后,EligibleMaster选举为新的主节点:

master节点监控分片、节点状态,将故障节点上的分片转移到正常节点,确保数据安全。

相关推荐
也非非也18 分钟前
iPhone 中国区 AI 落地:Apple 与阿里千问合作的技术观察
大数据·人工智能·ios·agent·iphone·智子
CC数分24 分钟前
统计学基础|先把问题问对:数据分析的六大类型
大数据·人工智能·算法
Elastic 中国社区官方博客26 分钟前
基于 Elasticsearch 与 Jina AI 的全模态智能搜索实践:技术全解析
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·jina
RPAdaren1 小时前
财务机器人要怎么选?落地财务机器人时的常见问题有哪些?
大数据·人工智能·数据挖掘
众智鸿图1 小时前
XR驱动管网数据智能体检!众智鸿图精彩亮相2026燃气运营与安全研讨会
大数据·安全·xr
字节跳动数据平台1 小时前
火山引擎知识引擎 VeKnow|从企业本体到行动边界:Agent 能找到规则,为什么还是会判错?
大数据
财迅通Ai1 小时前
MLCC业务爆发式增长,带动昀冢科技三季度扭亏为盈
大数据·人工智能·科技·昀冢科技
PaperAccept1 小时前
【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率
大数据·数据结构·科技·量子计算
跨境卫士—小依2 小时前
TikTokShop旧版物流模板组件停用跨境技术团队如何完成系统迁移
大数据·人工智能·新媒体运营·跨境电商·跨境·营销策略
阿俊-全栈开发2 小时前
LikeShop 多商户标准版智能商品分类与标签自动打标:大模型+向量检索二开实践
大数据·人工智能·分类·likeshop·likeshop开源商城