请多多留言指教
ES7.0开始,一些变更
在添加或删除节点时,Elasticsearch会自动的通过更新集群的投票配置(voting configuration)来维持最佳的容错级别。voting configuration是一组当前可以参与投票的的候选主节点。通常,voting configurations包含集群中所有符合条件的候选主节点。所有集群状态的更新都需要有voting configurations中一半以上的节点同意。由于现在交由系统来管理voting configurations,即投票的法定数量节点,即使在添加或删除节点的时候也可以避免因错误的人工配置导致的数据丢失。
注:Elasticserch7.0开始,当一半以上的候选主节点永久丢失,集群将不会自动恢复。
因此集群配置,最少需要3个候选主节点
节点类型说明
1、候选主节点(Master-eligible node)
node.master = true #设置主节点,默认为true
node.data = false #是否允许节点存储数据,默认为true
注:处理创建索引,类型等操作。不存储数据
脑裂现象:
在某些情况下,比如网络通信出现问题、主节点因为负载过大停止响应等等,就会导致重新选举主节点,此时可能会出现集群中有多个主节点的现象,即节点对集群状态的认知不一致。
2、数据节点(Data node)
node.master = false node.data = true
注:只存储数据
数据节点负责数据的存储和相关具体操作,比如CRUD、搜索、聚合。所以,数据节点对机器配置要求比较高,首先需要有足够的磁盘空间来存储数据,其次数据操作对系统CPU、Memory和IO的性能消耗都很大。通常随着集群的扩大,需要增加更多的数据节点来提高可用性。
3、客户端节点(Client node)
node.master = false node.data = false
客户端节点就是既不做候选主节点也不做数据节点的节点,只负责请求的分发、汇总等
4. 协调节点(Coordinating node)
协调节点,是一种角色,而不是真实的Elasticsearch的节点,你没有办法通过配置项来配置哪个节点为协调节点。集群中的任何节点,都可以充当协调节点的角色。当一个节点A收到用户的查询请求后,会把查询子句分发到其它的节点,然后合并各个节点返回的查询结果,最后返回一个完整的数据集给用户。在这个过程中,节点A扮演的就是协调节点的角色。毫无疑问,协调节点会对CPU、Memory要求比较高。
集群搭建
配置2台服务器共5个节点,第一台3个节点,第二台2个节点;第一台服务器node-a-1,node-a-2为候选主节点;第二胎服务器node-b-1为候选主节点
以下配置亲测,实现了停止一个候选主节点,则会自动选择剩下的候选主节点。
(1)第1台服务器第1个节点
# 注:Elasticserch7.0开始,当一半以上的候选主节点永久丢失,集群将不会自动恢复。 # 在添加或删除节点时,Elasticsearch会自动的通过更新集群的投票配置(voting configuration)来维持最佳的容错级别。 #voting configuration是一组当前可以参与投票的的候选主节点。通常,voting configurations包含集群中所有符合条件的候选主节点。 #所有集群状态的更新都需要有voting configurations中一半以上的节点同意。 # 集群名称 cluster.name: elk_cluster # 节点名称 node.name: node-a-1 # 网络连接地址 network.host: 192.168.15.95 # 端口 http.port: 9200 # 跨域访问,elasticsearch-head提供检测 http.cors.enabled: true http.cors.allow-origin: "*" http.max_content_length: 200mb #集群通信端口 transport.tcp.port: 9300 #不运行Macos下的es(内部应该有运行xpack) xpack.ml.enabled: false #集群中主节点最少设置3个及以上 # 是否设置主节点,默认为true node.master: true # 是否允许节点存储数据,默认为true node.data: false # 7.x版本后,需要注意(cluster.initial_master_nodes,discovery.seed_hosts) # 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要。 # cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群。 # 注:如果不是候选主节点,则不需要配置此项 cluster.initial_master_nodes: ["node-a-1", "node-a-2", "node-b-1"] #发现子系统的相关配置以便节点可以互相发现 #自动发现设置,配置之后集群的主机之间可以自动发现 discovery.seed_hosts: ["192.168.15.95:9300", "192.168.15.95:9301", "192.168.15.95:9302", "192.168.15.140:9300", "192.168.15.140:9301"] #基于文件的自动发现设置,配置之后集群的主机之间可以自动发现。 #discovery.seed_providers对应旧版中的discovery.zen.hosts_provider #discovery.seed_providers: 文件 #一旦你点击3个节点,倒计时时钟开始,然后集群将在5分钟内恢复(默认值)或者如果你点击5个节点.基本上它允许您设置最小阈值(recovery_after_nodes), #并使用超时(recovery_after_time)等待所需的状态(expected_nodes).命中recovery_after_nodes后,或者当命中expected_nodes(无需额外等待)时, #您将恢复recovery_after_time – 以先到者为准. gateway.recover_after_nodes: 3 gateway.expected_nodes: 5 # 网络参数配置 network.tcp.keep_alive: true network.tcp.no_delay: true #设置是否压缩tcp传输时的数据,默认为false,不压缩。 transport.tcp.compress: true #集群内同时启动的数据任务个数,默认是2个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认4个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
(2)第1台服务器第2个节点
# 配置ES集群: 集群名称,节点名称,网络链接地址,端口 cluster.name: elk_cluster node.name: node-a-2 network.host: 192.168.15.95 http.port: 9201 # 跨域访问,elasticsearch-head提供检测 http.cors.enabled: true http.cors.allow-origin: "*" #集群通信端口 transport.tcp.port: 9301 xpack.ml.enabled: false #集群中主节点最少设置3个及以上 # 是否设置主节点,默认为true node.master: true # 是否允许节点存储数据,默认为true node.data: true # 7.x版本后,需要注意(cluster.initial_master_nodes,discovery.seed_hosts) # 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要。 # cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群。 # 注:如果不是候选主节点,则不需要配置此项 cluster.initial_master_nodes: ["node-a-1", "node-a-2", "node-b-1"] #发现子系统的相关配置以便节点可以互相发现 #自动发现设置,配置之后集群的主机之间可以自动发现 discovery.seed_hosts: ["192.168.15.95:9300", "192.168.15.95:9301", "192.168.15.95:9302", "192.168.15.140:9300", "192.168.15.140:9301"] #基于文件的自动发现设置,配置之后集群的主机之间可以自动发现。 #discovery.seed_providers对应旧版中的discovery.zen.hosts_provider #discovery.seed_providers: 文件 #一旦你点击3个节点,倒计时时钟开始,然后集群将在5分钟内恢复(默认值)或者如果你点击5个节点.基本上它允许您设置最小阈值(recovery_after_nodes), #并使用超时(recovery_after_time)等待所需的状态(expected_nodes).命中recovery_after_nodes后,或者当命中expected_nodes(无需额外等待)时, #您将恢复recovery_after_time – 以先到者为准. gateway.recover_after_nodes: 3 gateway.expected_nodes: 5 # 网络参数配置 network.tcp.keep_alive: true network.tcp.no_delay: true #设置是否压缩tcp传输时的数据,默认为false,不压缩。 transport.tcp.compress: true #集群内同时启动的数据任务个数,默认是2个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认4个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
(3)第1台服务器第3个节点
# 配置ES集群: 集群名称,节点名称,网络链接地址,端口 cluster.name: elk_cluster node.name: node-a-3 network.host: 192.168.15.95 http.port: 9202 # 跨域访问,elasticsearch-head提供检测 http.cors.enabled: true http.cors.allow-origin: "*" #集群通信端口 transport.tcp.port: 9302 xpack.ml.enabled: false #集群中主节点最少设置3个及以上 # 是否设置主节点,默认为true node.master: false # 是否允许节点存储数据,默认为true node.data: true # 7.x版本后,需要注意(cluster.initial_master_nodes,discovery.seed_hosts) # 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要。 # cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群。 # 注:如果不是候选主节点,则不需要配置此项 #cluster.initial_master_nodes: ["node-a-1", "node-a-2", "node-b-1"] #发现子系统的相关配置以便节点可以互相发现 #自动发现设置,配置之后集群的主机之间可以自动发现 discovery.seed_hosts: ["192.168.15.95:9300", "192.168.15.95:9301", "192.168.15.95:9302", "192.168.15.140:9300", "192.168.15.140:9301"] #基于文件的自动发现设置,配置之后集群的主机之间可以自动发现。 #discovery.seed_providers对应旧版中的discovery.zen.hosts_provider #discovery.seed_providers: 文件 #一旦你点击3个节点,倒计时时钟开始,然后集群将在5分钟内恢复(默认值)或者如果你点击5个节点.基本上它允许您设置最小阈值(recovery_after_nodes), #并使用超时(recovery_after_time)等待所需的状态(expected_nodes).命中recovery_after_nodes后,或者当命中expected_nodes(无需额外等待)时, #您将恢复recovery_after_time – 以先到者为准. gateway.recover_after_nodes: 3 gateway.expected_nodes: 5 # 网络参数配置 network.tcp.keep_alive: true network.tcp.no_delay: true #设置是否压缩tcp传输时的数据,默认为false,不压缩。 transport.tcp.compress: true #集群内同时启动的数据任务个数,默认是2个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认4个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
(4)第2台服务器第1个节点
# 配置ES集群: 集群名称,节点名称,网络链接地址,端口 cluster.name: elk_cluster node.name: node-b-1 network.host: 192.168.15.140 http.port: 9200 # 解决跨域问题给 elasticsearch-head 提供检测 http.cors.enabled: true http.cors.allow-origin: "*" #集群通信端口 transport.tcp.port: 9300 xpack.ml.enabled: false #集群中候选主节点最少设置3个及以上 # 是否设置主节点,默认为true node.master: true # 是否允许节点存储数据,默认为true node.data: false # 7.x版本后,需要注意(cluster.initial_master_nodes,discovery.seed_hosts) # 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要。 # cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群。 # 注:如果不是候选主节点,则不需要配置此项 cluster.initial_master_nodes: ["node-a-1", "node-a-2", "node-b-1"] #发现子系统的相关配置以便节点可以互相发现 #自动发现设置,配置之后集群的主机之间可以自动发现 discovery.seed_hosts: ["192.168.15.95:9300", "192.168.15.95:9301", "192.168.15.95:9302", "192.168.15.140:9300", "192.168.15.140:9301"] #基于文件的自动发现设置,配置之后集群的主机之间可以自动发现。 #discovery.seed_providers对应旧版中的discovery.zen.hosts_provider #discovery.seed_providers: 文件 #一旦你点击3个节点,倒计时时钟开始,然后集群将在5分钟内恢复(默认值)或者如果你点击5个节点.基本上它允许您设置最小阈值(recovery_after_nodes), #并使用超时(recovery_after_time)等待所需的状态(expected_nodes).命中recovery_after_nodes后,或者当命中expected_nodes(无需额外等待)时, #您将恢复recovery_after_time – 以先到者为准. gateway.recover_after_nodes: 3 gateway.expected_nodes: 5 # 网络参数配置 network.tcp.keep_alive: true network.tcp.no_delay: true #设置是否压缩tcp传输时的数据,默认为false,不压缩。 transport.tcp.compress: true #集群内同时启动的数据任务个数,默认是2个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认4个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
(5)第1台服务器第2个节点
# ======================== Elasticsearch Configuration ========================= # 配置ES集群: 集群名称,节点名称,网络链接地址,端口 cluster.name: elk_cluster node.name: node-b-2 network.host: 192.168.15.140 http.port: 9201 # 解决跨域问题给 elasticsearch-head 提供检测 http.cors.enabled: true http.cors.allow-origin: "*" #集群通信端口 transport.tcp.port: 9301 #选举自己为master节点,或以配置其它节点 xpack.ml.enabled: false #集群中主节点最少设置3个及以上 # 是否设置主节点,默认为true node.master: false # 是否允许节点存储数据,默认为true node.data: true # 7.x版本后,需要注意(cluster.initial_master_nodes,discovery.seed_hosts) # 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要。 # cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群。 # 注:如果不是候选主节点,则不需要配置此项 #cluster.initial_master_nodes: ["node-a-1", "node-a-2", "node-b-1"] #发现子系统的相关配置以便节点可以互相发现 #自动发现设置,配置之后集群的主机之间可以自动发现 discovery.seed_hosts: ["192.168.15.95:9300", "192.168.15.95:9301", "192.168.15.95:9302", "192.168.15.140:9300", "192.168.15.140:9301"] #基于文件的自动发现设置,配置之后集群的主机之间可以自动发现。 #discovery.seed_providers对应旧版中的discovery.zen.hosts_provider #discovery.seed_providers: 文件 #一旦你点击3个节点,倒计时时钟开始,然后集群将在5分钟内恢复(默认值)或者如果你点击5个节点.基本上它允许您设置最小阈值(recovery_after_nodes), #并使用超时(recovery_after_time)等待所需的状态(expected_nodes).命中recovery_after_nodes后,或者当命中expected_nodes(无需额外等待)时, #您将恢复recovery_after_time – 以先到者为准. gateway.recover_after_nodes: 3 gateway.expected_nodes: 5 # 网络参数配置 network.tcp.keep_alive: true network.tcp.no_delay: true #设置是否压缩tcp传输时的数据,默认为false,不压缩。 transport.tcp.compress: true #集群内同时启动的数据任务个数,默认是2个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认4个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
以上为全部的配置信息
本地下载一个ElasticSearch-head用于查看,依次启动第一台服务主节点、其它主节点服务,第二台服务主节点、其它节点即可。访问展示如下:
问题
1、在执行bin/elasticsearch.bat时报错
原因:从节点无法加入主节点
解决方案:删除data文件夹下的数据
Elasticsearch windows 集群多服务器 新增节点并自动发现
https://blog.csdn.net/wealth_123450/article/details/107843884
Elasticsearch windows 集群单服务器配置多节点
https://blog.csdn.net/wealth_123450/article/details/107841580
原文链接:https://blog.csdn.net/wealth_123450/article/details/107842800
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/5805