Elasticsearch集群:搭建集群环境

1. 创建相应目录

在/root/es-cluster目录下创建以下目录

mkdir -p es01/data
mkdir -p es01/logsmkdir -p es02/data
mkdir -p es02/logsmkdir -p es03/data
mkdir -p es03/logsmkdir -p kibana_config

2. 创建配置文件

创建docker-compose.yml

version: '3'
services:es01:image: elasticsearch:7.4.0container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"  ulimits:memlock:soft: -1hard: -1volumes:- ./es01/data:/usr/share/elasticsearch/data- ./es01/logs:/usr/share/elasticsearch/logs- /usr/share/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.ymlports:- 9201:9200networks:- elastices02:image: elasticsearch:7.4.0container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- ./es02/data:/usr/share/elasticsearch/data- ./es02/logs:/usr/share/elasticsearch/logs- /usr/share/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.ymlports:- 9202:9200networks:- elastices03:image: elasticsearch:7.4.0container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- ./es03/data:/usr/share/elasticsearch/data- ./es03/logs:/usr/share/elasticsearch/logs- /usr/share/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.ymlports:- 9203:9200networks:- elastickibana01:image: kibana:7.4.0container_name: kibana01links:- es01- es02- es03ports:- 5602:5601volumes:- ./kibana_config/:/usr/local/kibana/config/environment:ELASTICSEARCH_HOSTS: http://es01:9200networks:- elasticnetworks:elastic:driver: bridge

创建elasticsearch.yml文件

network.host: 0.0.0.0http.cors.enabled: true
http.cors.allow-origin: "*"

3. 修改目录文件权限

sudo chown -R 1000:1000 /root/es-cluster/

4. 运行docker-compose命令

进入/root/es-cluster目录下,执行以下名称

docker-compose up -d

如果需要停止则输入

docker-compose down

5. 安装cerebro监控ES集群

docker search cerebro docker pull yannart/cerebro docker run -d --name cerebro -p 9000:9000 yannart/cerebro

访问:
http://192.168.174.129:9000/

6. 创建索引库

创建一个test索引库,指定分片数为3,副本数为1

PUT test
{"settings": {"number_of_shards": 3, "number_of_replicas": 1}
}

7、Elasticsearch集群:JavaAPI操作集群

  1. spring-boot-data-elasticsearch,修改yml配置即可
spring:elasticsearch:rest:uris:- http://192.168.174.129:9201- http://192.168.174.129:9202- http://192.168.174.129:9203
  1. 运行导入数据的方法

发现可以正常导入数据到ES

8. Elasticsearch集群:脑裂问题

何为脑裂?

  • 一个正常es集群中只有一个主节点(Master),主节点负责管理整个集群。如创建或删除索引,并决定哪些分片分配给哪些节点。此外还跟踪哪些节点是集群的一部分。
  • 脑裂就是一个集群出现多个主节点从而使集群分裂,使得集群处于异常状态。简单来说就是一个集群里只能有一个老大来指挥工作,如果有多个老大,就乱套了。

脑裂原因

  1. 网络原因:网络延迟、网络波动
    一般es集群会在内网部署,也可能在外网部署,比如阿里云。
    内网一般不会出现此问题,外网的网络出现问题的可能性大些。
  2. Master节点负载
    主节点的角色既为master又为data。数据访问量较大时,可能会导致Master节点停止响应(假死状态)。
  3. JVM内存回收
    当Master节点设置的JVM内存较小时,引发JVM的大规模内存回收,造成ES进程失去响应

避免脑裂

脑裂产生的原因:

  • 网络原因:网络延迟较高
  • 节点负载:主节点的角色既为master又为data
  • JVM内存回收:JVM内存设置太小

避免脑裂:

  • 网络原因:discovery.zen.ping.timeout 超时时间配置大一点。默认是3S

  • 节点负载:角色分离策略

    • 主节点配置:

      node.master: true # 是否有资格参加选举成为master
      node.data: false # 是否存储数据
      
    • 数据节点配置:

      node.master: false # 是否有资格参加选举成为master
      node.data: true # 是否存储数据
      
  • JVM内存回收:修改 config/jvm.options 文件的 -Xms 和 -Xmx 为服务器的物理内存一半。

  • 还可以在选举层面解决脑裂问题(即不让第二个老大产生):

    # 声明获4得大于几票,主节点才有效,请设置为(master eligble nodes / 2) + 1
    discovery.zen.minimum_master_nodes: 5
    

9. Elasticsearch集群:故障迁移

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

1.例如一个集群结构如图:
现在,node1是主节点,其它两个节点是从节点。


2. 突然,node1发生了故障:

docker-compose stop es01

宕机后的第一件事,需要重新选主,例如选中了node2:

node2成为主节点后,会检测集群监控状态,发现:shard-1、shard-0没有副本节点。因此需要将node1上的数据迁移到node2、node3:

Elasticsearch集群:搭建集群环境相关推荐

  1. 4.2.9 Kafka集群与运维, 应用场景, 集群搭建, 集群监控JMX(度量指标, JConsole, 编程获取, Kafka Eagle)

    目录 3.1 集群应用场景 1 消息传递 2 网站活动路由 3 监控指标 4 日志汇总 5 流处理 6 活动采集 7 提交日志 总结 3.2 集群搭建 3.2.1 Zookeeper集群搭建 3.2. ...

  2. Elasticsearch 7.6 集群搭建

    ES集群搭建 准备工作 服务器环境 准备三台服务器集群,如下图机器的分配情况: 服务器名称 IP地址 node-1 192.168.8.190 node-2 192.168.8.185 node-3 ...

  3. 环境搭建:Windows系统下Nacos集群搭建

    环境搭建:Windows系统下Nacos集群搭建 一.环境准备 名称 版本 下载地址 nacos NACOS 1.2.0 下载地址,提取码:5555 MySQL mysql Ver 14.14 Dis ...

  4. redis-cluster集群搭建

    redis cluster集群搭建 1.环境说明 系统版本:CentOS Linux release 7.2.1511 (Core) Redis 版本:3.2.5 Ruby 版本:2.4.4 数据目录 ...

  5. python搭建分布式集群_Spark完全分布式集群搭建【Spark2.4.4+Hadoop3.2.1】

    一.安装Linux 需要:3台CentOS7虚拟机 注意: 虚拟机的网络设置为NAT模式,NAT模式可以在断网的情况下连接上虚拟机而桥架模式不行! 二.设置静态IP 跳转目录到: 修改IP设置: 备注 ...

  6. 不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码...

    作者 | chen_01_c 责编 | Carol 来源 | CSDN 博客 封图 | CSDN付费下载于视觉中国 hadoop介绍 Hadoop 是 Lucene 创始人 Doug Cutting, ...

  7. RocketMq单机和集群搭建教程

    文章目录 1. rocketMQ单机版安装 2. rocketMQ集群方案 3. rocketMQ集群搭建 4. Dleger搭建rokcetMQ高可用集群 5. 启动rockerMQ控制台界面 6. ...

  8. 大数据Hadoop集群搭建

    大数据Hadoop集群搭建 一.环境 服务器配置: CPU型号:Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz CPU核数:16 内存:64GB 操作系统 版本:CentO ...

  9. ceph实战之ceph集群搭建

    Ceph基础 一.ceph起源 Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区.在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用 ...

  10. 大数据技术之_17_Storm学习_Storm 概述+Storm 基础知识+Storm 集群搭建+Storm 常用 API+Storm 分组策略和并发度

    大数据技术之_17_Storm学习 一 Storm 概述 1.1 离线计算是什么? 1.2 流式计算是什么? 1.3 Storm 是什么? 1.4 Storm 与 Hadoop 的区别 1.5 Sto ...

最新文章

  1. html追加行clone,调用clone()方法后就可以将复制的节点追加到body元素内。( ) 答案:√...
  2. dreamweaver2020中文版
  3. 用AWStats分析网站日志
  4. 关于Servlet的原理以及常用类
  5. 【深度学习】修改每张人像---ImageNet 的衰落
  6. bzoj 2342: 双倍回文 回文自动机
  7. java 8 lambda_Java 8的烹调方式– Lambda项目
  8. mfc编程淘汰了吗_四种基本的编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法)...
  9. Swing 添加超链接 打开页面
  10. vb 字符串长度_学习VB编程第5天 基础知识需要一点点积累
  11. Thinkphp if标签不支持3层以上嵌套
  12. ipsec nat-t
  13. 族谱软件系统的使用介绍
  14. WM安装windows7超详细教程
  15. matlab脚本栏中间有条线,word中间有一根线 word中间有一条线如何去掉
  16. 轻松拥有自己的站内搜索引擎
  17. Java编程思想 - 并发
  18. EfficientNet与EfficientDet的详解
  19. linux 检查openssl,linux – 如何检查OpenSSL中的FIPS 140-2支持?
  20. 以全局产业观领航智慧城市建设

热门文章

  1. python爬虫快速入门
  2. 阿里云企业邮箱标准版用户数功能说明
  3. 如何一周通过软件设计师考试?
  4. android 黑名单 短信拦截
  5. 苹果 macOS Big Sur 11.3 正式版发布
  6. IoC和AOP的理解
  7. 常用的设计模式的学习与理解心得
  8. Java语言高级(第一部分)常用API 继承与多态 ->(个人学习记录笔记)
  9. 实用生活英语句子 174句
  10. XGBOOST算法过程