精华内容
下载资源
问答
  • 8.2.8 SpringBoot整合elasticsearch集群 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。Spring Boot是由Pivotal团队...
  • 适用人群 开发从业人员,大数据从业人员...课程概述 ElasticSearch7.x集群Elasticsearch-head7.x官网都没有的插件整合?cerebro插件酷炫暗黑插件神器?一次搞定 官网版本 主从读写 中文分词 Head插件 cerebro插件
  • 1、配置环境参数 cat /etc/hosts 172.16.1.1 test-es01 172.16.1.2 test-es02 172.16.1.3 test-es03 # grep vm.max_map_count /...mkdir -p /data/server/elasticsearch/{esdata01,esdata02,esdata03} chown 1000.
  • 为什么es集群至少需要三个节点

    千次阅读 2021-01-13 09:05:43
    elasticsearch集群 graph LR; A(Master Node) --- B(Data Node); A --- C(Data Node); B --- C; Master: 在Elasticsearch中Master仅仅负责维护集群的状态 创建或删除索引 跟踪哪些节点是集群的一部分 决定...

    elasticsearch集群

    graph LR;
        A(Master Node) --- B(Data Node);
        A --- C(Data Node);
        B --- C;

    Master: 在Elasticsearch中Master仅仅负责维护集群的状态

    1. 创建或删除索引
    2. 跟踪哪些节点是集群的一部分
    3. 决定将哪些碎片分配给哪个节点
    4. 等集群范围的操作

    上面的一些集群信息, 是由Master节点进行维护, 但是 Master也会把节点信息, 同步给其他节点, 但是只有master节点可以修改.

    点击查看Elasticsearch节点介绍

    为什么要至少三个节点

    首先查看 Elasticsearch 的配置文件, 如下:
    Zen Discovery 官方介绍

    # 传递初始主机列表,以便在启动新节点时执行发现
    discovery.zen.ping.unicast.hosts: ["192.168.xxx.xxx:9300", "192.168.xxx.xxx:9300"]
    # 选举Maste时需要的节点数 (total number of master-eligible nodes / 2 + 1) 防止“防止脑裂”
    discovery.zen.minimum_master_nodes: 2
    # 一个节点多久ping一次,默认1s
    discovery.zen.fd.ping_interval: 1s
    # 等待ping返回时间,默认30s
    discovery.zen.fd.ping_timeout: 30s
    # ping超时重试次数,默认3次
    discovery.zen.fd.ping_retries: 3
    
    discovery.zen.minimum_master_nodes: 2
    

    其中 minimum_master_nodes 配置是为了防止脑裂

    假设 Elasticsearch 有两个节点

    graph LR;
        A(Master Node) --- B(Data Node);
    graph LR;
        A(Master Node) -.X.- B(Data Node);
    1. discovery.zen.minimum_master_nodes: 1

      此时出现网络波动, 导致 A—B 之间短暂断开连接, 根据选举规则, B将自己选举为 Master, 当网络波动结束, 就会出现两个Master的情况.

          graph LR;
           A(Master Node 宕机) --- B(Data Node);
    2. discovery.zen.minimum_master_nodes: 2

      Master 出现故障, 则 B 将永远不可能将自己选择为 Master

    Elasticsearch 有三个节点

    三节点配置: discovery.zen.minimum_master_nodes: 2

    graph LR;
        A(Master Node) -.X.- B(Data Node);
        A -.X.- C(Data Node);
        B --- C;

    出现网络波动 A 节点 和 别的节点短暂断开连接

    graph LR;
        A(Master Node -> Data Node) -.X.- B(Data Node -> Master Node);
        A -.X.- C(Data Node);
        B --- C;

    A节点降级, B和C 进行选举, 此处模拟选举B为 Master Node

    graph LR;
        A(Data Node) --- B(Master Node);
        A --- C(Data Node);
        B --- C;

    网络恢复后的节点状况.

    总结

    以上可以看出, 通过配置 minimum_master_nodes 来防止出现脑裂
    同时在生产过程中, 为了尽量保持集群高可用, 至少需要三台机器搭建集群

    展开全文
  • springboot 2.0.2集成elasticsearch5.5.1,并使用集群模式,亲测可用!!!
  • 2.创建数据挂在目录,配置ElasticSearch集群配置文件,调高JVM线程数限制数量 下面以一台节点例,其他的节点一样的步骤修改配置即可 调高JVM线程数限制数量 vim /etc/sysctl.conf 添加vm.max_map_count=262144 执行...
  • 快速搭建elasticsearch6.5.4集群和Head插件,elasticsearch分别在window、linux的系统的安装部署教程,以及相关安装包,该踩得坑一一踏平。
  • 根据研究和咨询公司大佬 本人搭建的生产环境运行的es集群配置文件,版本6.5.4,操作系统是CentOS7.6 3台es做成的集群,亲测可用。 只需要更改集群名称和每台节点的名称即可使用。
  • 本文将使用Docker容器(使用docker-compose编排)快速部署Elasticsearch 集群,可用于开发环境(单机多实例)或生产环境部署。 注意,6.x版本已经不能通过 -Epath.config 参数去指定配置文件的加载位置,文档说明: ...
  • 主要介绍了详解ElasticSearch6.4.0集群搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 本文档,详细介绍了搭建elk主备集群的方法,测试验证有效,图文配置,一目了然。操作简单,
  • CentOS 7 部署 Elasticsearch7.4 集群并进行安全认证.docx
  • ElasticSearch7.1.1集群搭建

    千次阅读 2019-08-07 13:49:59
    1、集群简介: 首先需要三台ElasticSearch服务器,并成功安装ElasticSearch...接下来我们就可以在此基础上配置ElasticSearch集群了,均用于保存数据且可被选master节点。 服务版本: 服务 版本 ...

    1、集群简介:
    ElasticSearch集群配置一般情况下需要的服务器台数为3台、5台、7台等,这里我们就以三台ElasticSearch服务器为例,并成功安装ElasticSearch7.1.1,成功安装后分别启动三个ElasticSearch服务(安装方法请参考:Elasticsearch安装教程),服务启动后后测试三台服务均能正常使用。接下来我们就可以在此基础上配置ElasticSearch集群了,均用于保存数据且可被选为master节点。
    服务版本:

    服务版本
    elasticsearch7.1.1
    jdk1.8

    2、elasticsearch.yml配置说明:

    参数说明
    cluster.name集群名称,相同名称为一个集群
    node.name节点名称,集群模式下每个节点名称唯一
    node.master当前节点是否可以被选举为master节点,是:true、否:false
    node.data当前节点是否用于存储数据,是:true、否:false
    path.data索引数据存放的位置
    path.logs日志文件存放的位置
    bootstrap.memory_lock需求锁住物理内存,是:true、否:false
    bootstrap.system_call_filterSecComp检测,是:true、否:false
    network.host监听地址,用于访问该es
    network.publish_host可设置成内网ip,用于集群内各机器间通信
    http.portes对外提供的http端口,默认 9200
    transport.tcp.portTCP的默认监听端口,默认 9300
    discovery.seed_hostses7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    cluster.initial_master_nodeses7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    http.cors.enabled是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.allow-origin“*” 表示支持所有域名

    3、集群搭建:
    3.1、节点1配置:配置过程中,只需要设置elasticsearch.yml文件,其他的无须设置。

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: myes
    # 设置节点名称,集群内节点名称必须唯一。
    node.name: node1
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    path.data: /opt/elasticsearch/data
    # 日志文件存放的位置
    path.logs: /opt/elasticsearch/logs
    # 需求锁住物理内存,是:true、否:false
    bootstrap.memory_lock: true
    # 监听地址,用于访问该es
    network.host: 172.16.100.1
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    transport.tcp.port: 9300
    # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.minimum_master_nodes: 2
    # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["172.16.100.1:9300", "172.16.100.2:9300", "172.16.100.3:9300"] 
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["node1", "node2", "node3"]
    # 是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.enabled: true
    # “*” 表示支持所有域名
    http.cors.allow-origin: "*"
    action.destructive_requires_name: true
    action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
    xpack.security.enabled: false
    xpack.monitoring.enabled: true
    xpack.graph.enabled: false
    xpack.watcher.enabled: false
    xpack.ml.enabled: false
    

    3.2、节点2配置:配置过程中,只需要设置elasticsearch.yml文件,其他的无须设置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: myes
    # 设置节点名称,集群内节点名称必须唯一。
    node.name: node1
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    path.data: /opt/elasticsearch/data
    # 日志文件存放的位置
    path.logs: /opt/elasticsearch/logs
    # 需求锁住物理内存,是:true、否:false
    bootstrap.memory_lock: true
    # 监听地址,用于访问该es
    network.host: 172.16.100.2
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    transport.tcp.port: 9300
    # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.minimum_master_nodes: 2
    # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["172.16.100.1:9300", "172.16.100.2:9300", "172.16.100.3:9300"] 
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["node1", "node2", "node3"]
    # 是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.enabled: true
    # “*” 表示支持所有域名
    http.cors.allow-origin: "*"
    action.destructive_requires_name: true
    action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
    xpack.security.enabled: false
    xpack.monitoring.enabled: true
    xpack.graph.enabled: false
    xpack.watcher.enabled: false
    xpack.ml.enabled: false
    

    3.3、节点3配置:配置过程中,只需要设置elasticsearch.yml文件,其他的无须设置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: myes
    # 设置节点名称,集群内节点名称必须唯一。
    node.name: node1
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    path.data: /opt/elasticsearch/data
    # 日志文件存放的位置
    path.logs: /opt/elasticsearch/logs
    # 需求锁住物理内存,是:true、否:false
    bootstrap.memory_lock: true
    # 监听地址,用于访问该es
    network.host: 172.16.100.3
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    transport.tcp.port: 9300
    # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.minimum_master_nodes: 2
    # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["172.16.100.1:9300", "172.16.100.2:9300", "172.16.100.3:9300"] 
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["node1", "node2", "node3"]
    # 是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.enabled: true
    # “*” 表示支持所有域名
    http.cors.allow-origin: "*"
    action.destructive_requires_name: true
    action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
    xpack.security.enabled: false
    xpack.monitoring.enabled: true
    xpack.graph.enabled: false
    xpack.watcher.enabled: false
    xpack.ml.enabled: false
    

    3.4、分别启动三台elasticsearch服务。在浏览器中输入http://172.16.100.1:9200/_cat/nodes,执行如下图所示结果,则表示配置成功。
    在这里插入图片描述4、配置过程中的注意事项:
    4.1、在配置discovery.seed_hosts: [“172.16.100.1:9300”, “172.16.100.2:9300”, “172.16.100.3:9300”]需要注意如下图所示内容中的空格不能去掉,否则集群搭建不成:
    在这里插入图片描述 4.2、在启动的elasticsearch服务的过程有时候报如下面代码所示错误:

    [2017-08-13T23:28:10,458][DEBUG][o.e.a.ActionModule       ] Using REST wrapper from plugin org.elasticsearch.xpack.XPackPlugin
    [2017-08-13T23:28:21,144][ERROR][o.e.b.Bootstrap          ] Exception
    org.elasticsearch.ElasticsearchException: Failed to create native process factories for Machine Learning
    	at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:289) ~[?:?]
    	at org.elasticsearch.xpack.XPackPlugin.createComponents(XPackPlugin.java:288) ~[?:?]
    	at org.elasticsearch.node.Node.lambda$new$7(Node.java:411) ~[elasticsearch-5.5.1.jar:5.5.1]
    	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) ~[?:1.8.0_131]
    	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[?:1.8.0_131]
    	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_131]
    	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_131]
    	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_131]
    	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_131]
    	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_131]
    	at org.elasticsearch.node.Node.<init>(Node.java:413) ~[elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.node.Node.<init>(Node.java:244) ~[elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:232) ~[elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:232) ~[elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.5.1.jar:5.5.1]
    	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.5.1.jar:5.5.1]
    Caused by: java.io.FileNotFoundException: \\.\pipe\controller_log_4992 (系统找不到指定的文件。)
    	at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_131]
    	at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_131]
    	at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_131]
    	at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[?:1.8.0_131]
    	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper$PrivilegedInputPipeOpener.run(NamedPipeHelper.java:297) ~[?:?]
    	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper$PrivilegedInputPipeOpener.run(NamedPipeHelper.java:286) ~[?:?]
    	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_131]
    	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper.openNamedPipeInputStream(NamedPipeHelper.java:139) ~[?:?]
    	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper.openNamedPipeInputStream(NamedPipeHelper.java:106) ~[?:?]
    	at org.elasticsearch.xpack.ml.job.process.ProcessPipes.connectStreams(ProcessPipes.java:140) ~[?:?]
    	at org.elasticsearch.xpack.ml.job.process.NativeController.<init>(NativeController.java:67) ~[?:?]
    	at org.elasticsearch.xpack.ml.job.process.NativeControllerHolder.getNativeController(NativeControllerHolder.java:50) ~[?:?]
    	at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:279) ~[?:?]
    	... 21 more
    

    解决办法:在Elasticsearch/config/elasticsearch.yml配置文件中加入如下参数,并重启即可。

    action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
    xpack.security.enabled: false
    xpack.monitoring.enabled: true
    xpack.graph.enabled: false
    xpack.watcher.enabled: false
    xpack.ml.enabled: false
    

    4.3、transport.tcp.port端口未开启问题:
    测试是否开启的方法:在cmd输入框中 1)、先输入 ping 172.16.100.1(ping ip地址);2)、然后再输入 telnet 172.16.100.1 9300 (测试端口号是否开启)。
    如果未开启则需要我们进行如下操作进行开启:
    1)、依次打开,【控制面板】\【系统和安全】\【Windows 防火墙】,点击下图中的【高级设置】按钮。
    在这里插入图片描述
    2)、点击后,弹出如下图页面所示,在此页面中配置【入站规则】和【出站规则】,因为两种规则配置方式类似,所以接下来只介绍一下配置【入站规则】的方法。
    在这里插入图片描述
    3)、点击如上图中选择的【入站规则】按钮,点击【新建规则】按钮,弹出如下所示页面,选中【端口】并执行【下一步】操作。
    在这里插入图片描述
    4)、选中【TCP】并选择【特定本地端口】输入端口,并执行【下一步】操作。
    在这里插入图片描述
    5)、选中【端口】并执行【下一步】操作。
    在这里插入图片描述
    6)、全选中【域】、【专用】、【公用】并执行【下一步】操作。

    在这里插入图片描述
    7)、输入入站规则名称,执行【下一步】操作即可完成入站规则配置操作。

    在这里插入图片描述
    8)、配置【出站规则】。配置完成后TCP端口就开启了。

    展开全文
  •   ElasticSearch(以下简称 ES) 作为一个搜索引擎,能存储海量数据并且可以在非常短的时间内查询到应用系统想的信息,且组件开源,因而使用比较广泛。在项目中使用 ES 时,一般都使用集群模式,而非单机模式,...

      ElasticSearch(以下简称 ES) 作为一个搜索引擎,能存储海量数据并且可以在非常短的时间内查询到应用系统想要的信息,且组件开源,因而使用比较广泛。在项目中使用 ES 时,一般都使用集群模式,而非单机模式,为什么呢?集群模式与单机模式相比,有什么优势呢?简单总结如下。

    1. 高可用性

      ES 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息。所以第一步我们需要保证的就是 ES 的高可用性。什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是 100%,如果系统在某个时刻宕掉了,比如某个网站在某个时间挂掉了,那么就可以说它临时是不可用的。所以,为了保证 ES 的高可用性,我们就应该尽量减少 ES 的不可用时间。
      那么怎样提高 ES 的高可用性呢?这时集群的作用就体现出来了。假如 ES 只放在一台服务器上,即单机运行,假如这台主机突然断网了或者被攻击了,那么整个 ES 的服务就不可用了。但如果改成 ES 集群的话,有一台主机宕机了,还有其他的主机可以支撑,这样就仍然可以保证服务是可用的。
      那可能有的小伙伴就会说了,那假如一台主机宕机了,不就无法访问这台主机的数据了吗?那假如我要访问的数据正好存在这台主机上,那不就获取不到了吗?难道其他的主机里面也存了一份一模一样的数据?那这岂不是很浪费吗?
      为了解答这个问题,这里就引出了 ES 的信息存储机制了。首先解答上面的问题,一台主机宕机了,这台主机里面存的数据依然是可以被访问到的,因为在其他的主机上也有备份,但备份的时候也不是整台主机备份,是分片备份的,那这里就又引出了一个概念:分片。
      分片,英文叫做 Shard,顾名思义,分片就是对数据切分成了多个部分。我们知道 ES 中一个索引(Index)相当于是一个数据库,如存某网站的用户信息,我们就建一个名为 user 的索引。但索引存储的时候并不是整个存一起的,它是被分片存储的,ES 默认会把一个索引分成五个分片,当然这个数字是可以自定义的。分片是数据的容器,数据保存在分片内,分片又被分配到集群内的各个节点里。当你的集群规模扩大或者缩小时, ES 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里,所以相当于一份数据被分成了多份并保存在不同的主机上。
      那这还是没解决问题啊,如果一台主机挂掉了,那么这个分片里面的数据不就无法访问了吗?别的主机都是存储的其他的分片。其实是可以访问的,因为其他主机存储了这个分片的备份,叫做副本,这里就引出了另外一个概念:副本。
      副本,英文叫做 Replica,同样顾名思义,副本就是对原分片的复制,和原分片的内容是一样的,ES 默认会生成一份副本,所以相当于是五个原分片和五个分片副本,相当于一份数据存了两份,并分了十个分片,当然副本的数量也是可以自定义的。这时我们只需要将某个分片的副本存在另外一台主机上,这样当某台主机宕机了,我们依然还可以从另外一台主机的副本中找到对应的数据。所以从外部来看,数据结果是没有任何区别的。
      一般来说,ES 会尽量把一个索引的不同分片存储在不同的主机上,分片的副本也尽可能存在不同的主机上,这样可以提高容错率,从而提高高可用性。
      假如你只有一台主机,那不就没办法了吗?分片和副本其实是没意义的,一台主机挂掉了,就全挂掉了。

    2. 健康状态

      针对一个索引,ES 中其实有专门的衡量索引健康状况的标志,分为如下三个等级。

    • green。绿色,代表所有的主分片和副本分片都已分配。集群是 100% 可用的。
    • yellow。黄色,代表所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把 yellow 想象成一个需要及时调查的警告。
    • red。红色,代表至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据,搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。

      如果你只有一台主机的话,其实索引的健康状况也是 yellow,因为只有一台主机,没有其他的主机可以放置副本,所以说,这就是一个不健康的状态,因此集群也是十分有必要的。

    3. 存储空间

      既然是集群,那么存储空间肯定也是联合起来的,假如一台主机的存储空间是固定的,那么集群相对于单机也有更多的存储空间,可存储的数据量也更大。

      所以综上所述,项目中使用 ES 时,一般采用集群模式,而非单机模式。

    文章参考:

    展开全文
  • Elasticsearch 7.6 集群搭建

    千次阅读 2020-05-14 16:11:32
    ES集群搭建 准备工作 服务器环境 准备三台服务器集群,如下图机器的分配情况: 服务器名称 IP地址 node-1 192.168.8.190 node-2 192.168.8.185 node-3 192.168.8.183 下载Elasticsearch压缩包 下载...

    ES集群搭建

    准备工作

    服务器环境

    准备三台服务器集群,如下图机器的分配情况:

    服务器名称IP地址
    node-1192.168.8.190
    node-2192.168.8.185
    node-3192.168.8.183

    下载Elasticsearch压缩包
    下载地址: https://www.elastic.co/cn/downloads/elasticsearch

    创建路径module用来存放elasticsearch安装文件。

    mkdir /home/elasticsearch/module
    

    打开xshell中的文件传输 , 将下载的压缩包传到每台服务器。(路径为/home/elasticsearch/module)

    我们以192.168.8.190机器安装为例,其他两台只是配置文件的IP地址不一样

    解压安装

    进入module路径,解压安装文件

    cd home/elasticsearch/module
    
    tar -zxvf elasticsearch-7.6.0-linux-x86_64.tar.gz
    mv elasticsearch-7.6.0 elasticsearch
    
    

    单主机配置

    修改配置文件 elasticsearch.yml

    cd /home/elasticsearch/module/elasticsearch
    vim config/elasticsearch.yml
    

    修改一下配置

    cluster.name: myes    # 同一集群内cluster.name 相同
    
    path.data: /home/elasticsearch/module/elasticsearch/data	     # 数据的默认存放路径 
    
    path.logs: /home/elasticsearch/module/elasticsearch/logs	# 日志的默认存放路径
    
    node.name: node-1    #每个节点名称不一样 
    
    network.host: 192.168.8.190   #### 实际服务器ip地址
    
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    #transport.tcp.port: 9300
    cluster.initial_master_nodes: ["node-1"]          #单机只添加自己
    
    

    创建对应data文件路径

    mkdir data
    

    操作系统调优

    (必须配置,否则ES启动报错)

    内存优化
    在/etc/sysctl.conf添加如下内容

    sudo vim /etc/sysctl.conf

    fs.file-max=65536
    vm.max_map_count=262144
    

    使用sysctl -p使条件生效

    修改 limits.conf 配置文件

    vim /etc/security/limits.conf
    

    添加如下配置

    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 65536
    * hard nproc 65536
    * soft memlock unlimited
    * hard memlock unlimited
    

    登出当前用户,让上述配置启动。

    单主机启动

    ./bin/elasticsearch
    

    在这里插入图片描述

    在这里插入图片描述
    浏览器访问指定端口9200

    显示单机elasticsearch启动成功

    集群配置

    修改192.168.8.190 服务器配置文件

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: myes
    
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    path.data: /home/elasticsearch/module/elasticsearch/data
    # 日志文件存放的位置
    path.logs: /home/elasticsearch/module/elasticsearch/logs
    
    node.name: node-1    #每个节点名称不一样 其他两台为node-2 ,node-3
    
    network.host: 192.168.8.190   #### 实际服务器ip地址
    
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    #transport.tcp.port: 9300
    
    discovery.seed_hosts: ["192.168.8.190", "192.168.8.185","192.168.9.183"]
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    #
    cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
    #
    
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    修改192.168.8.185 服务器配置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: myes
    
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    path.data: /home/elasticsearch/module/elasticsearch/data
    # 日志文件存放的位置
    path.logs: /home/elasticsearch/module/elasticsearch/logs
    
    node.name: node-2    #每个节点名称不一样 其他两台为node-2 ,node-3
    
    network.host: 192.168.8.185   #### 实际服务器ip地址
    
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    #transport.tcp.port: 9300
    
    discovery.seed_hosts: ["192.168.8.190", "192.168.8.185","192.168.9.183"]
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    #
    cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
    #
    

    修改192.168.8.183 服务器配置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: myes
    
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    path.data: /home/elasticsearch/module/elasticsearch/data
    # 日志文件存放的位置
    path.logs: /home/elasticsearch/module/elasticsearch/logs
    
    node.name: node-3    #每个节点名称不一样 其他两台为node-2 ,node-3
    
    network.host: 192.168.8.183   #### 实际服务器ip地址
    
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    #transport.tcp.port: 9300
    
    discovery.seed_hosts: ["192.168.8.190", "192.168.8.185","192.168.9.183"]
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    #
    cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
    #
    

    分别启动三台Elasticsearch
    注意:请使用非root用户启动

    ./elasticsearch/bin/elasticsearch 
    

    在这里插入图片描述

    如图显示elastic search集群加载成功,节点分别加入。

    浏览器访问或使用elasticsearch head 插件访问服务器9200端口

    在这里插入图片描述

    展开全文
  • 在elastic下载中心找到我们安装的版本,地址:https://elasticsearch.cn/download/ 2.安装 下载完后解压到安装目录,然后复制2份 3.节点配置 在config目录下,修改每个节点的elasticsearch.yml node-1节点...
  • ElasticSearch 7.10.1 集群搭建

    千次阅读 2020-12-23 17:43:09
    操作系统: centos7 准备: 4台物理主机 主机名 IP noed1 192.168.0.127 noed2 192.168.0.128 noed3 192.168.0.129 noed4 192.168.0.130 ...下载ElasticSearch RPM版本安装包 curl -O https://
  • 本篇文章详细记录了CentOS7下Elasticsearch高可用集群方案-完整部署过程,可作为线上长期的实操手册。特在此分享,希望能帮助到有用到的朋友。
  • 制作方法见博客https://blog.csdn.net/wenyichuan/article/details/110531668 新加节点按照博客内容改一下配置文件字段就可以。
  • elasticsearch 7.8.1下载 方式一 linux执行以下命令 wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz 方式二 在windows上登录网站下载linux版本,在上传至服务器(相对耗时) ...
  • bigdesk是elasticsearch集群的监控插件,可以监控集群里的CPU,内存,HTTTP连接数
  • ElasticSearch 7.4集群部署

    千次阅读 2019-10-16 17:20:20
    2台机器,系统均Centos 7.2,主节点IP10.45.154.236,第二...到官网上下载最新版本ElasticSearch 7.4,https://www.elastic.co/cn/downloads/elasticsearch 我选择的是RPM包 下载最新的JDK 13 https://www.oracle....
  • windows下复制三个节点: 注意:如果出现三个服务都正常,但是无法互相发下对方,也就是只显示一个主节点的问题解决方法复制时也把data目录下的数据复制了一份,...cluster.name: elasticsearch #节点名称 node.nam
  • ELasticsearch中,会采用计算的方式来确定存储到哪个节点,计算公式如下: shard = hash(routing) % number_of_primary_shards routing值是一个任意字符串,它默认是_id但也可以自定义。 这个routing字符串通过...
  • windows ElasticSearch 7.6.0集群搭建

    千次阅读 2020-03-10 13:48:28
    windows ElasticSearch 7.6.0集群搭建1、下载elasticsearch 7.6.02、解压elasticsearch 7.6.03、节点配置3.1 node1节点配置3.2 node2节点配置3.3 node3节点配置4、分别启动三台elasticsearch7.6.0节点5、安装集群...
  • ElasticSearch7.x高可用集群版搭建

    千次阅读 2020-12-13 16:36:03
    若之前未了解过ElasticSearch的安装,在安装集群版之前,建议先了解一下单机版创建。集群版无非就是拷贝了几套单机版的安装包,配置稍加改。 单机版安装详细教程以及安装过程容易遇到的问题 详见:ElasticSearch单机...
  • 文章目录环境准备安装docker操作系统限制修改创建es配置启动es安装es-head 环境准备 节点名称 ip地址 node1 192.168.130.20 node2 192.168.130.19 node2 192.168.130.21 安装docker 略 操作系统限制...
  • 上面一片文章我们叙述了,如何搭建一个es集群,也仅仅是搭建了一个集群。 centos搭建es集群 诸如如何选择master节点个数,如何防止负载,如何防止脑裂这些问题,都没有考虑在内, 这篇文章旨在完善上面的群集,限于...
  • ElasticSearch集群脑裂优化设置,配合博文ES集群优化。
  • 使用docker搭建esElasticSearch集群 准备环境 在生产环境中在Docker中运行Elasticsearch时,以下要求和建议适用。 防止jvm报错:该vm.max_map_count内核设置必须至少设置262144用于生产。 Linux系统: 该vm....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,418
精华内容 33,367
关键字:

为什么es要集群