zoukankan      html  css  js  c++  java
  • ElasticSearch7.6.1集群搭建

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

    服务 版本
    elasticsearch 7.6.1
    jdk 1.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_filter SecComp检测,是:true、否:false
    network.host 监听地址,用于访问该es
    network.publish_host 可设置成内网ip,用于集群内各机器间通信
    http.port es对外提供的http端口,默认 9200
    transport.tcp.port TCP的默认监听端口,默认 9300
    discovery.seed_hosts es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    cluster.initial_master_nodes es7.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: \.pipecontroller_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 (测试端口号是否开启)。
    ————————————————
    版权声明:本文为CSDN博主「smile in spring」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_27512271/article/details/98740135

  • 相关阅读:
    Title
    Title
    Title
    Title
    Title
    Title
    Title
    Title
    Title
    git 的使用
  • 原文地址:https://www.cnblogs.com/wangwenlong8/p/13191178.html
Copyright © 2011-2022 走看看