【Elasticsearch管理】网络配置

文章目录

  • HTTP
    • 高级网络设置
    • 高级TCP设置
  • Transport
    • TCP传输概要文件
    • Transport跟踪
  • 线程池
    • fixed线程池
    • fixed_auto_queue_size
    • scaling
    • 处理器设置

HTTP

Elasticsearch只在默认情况下绑定到本地主机。对于运行本地开发服务器(如果在同一台机器上启动多个节点,甚至可以运行开发集群)来说,这已经足够了,但是为了跨多个服务器运行实际的生产集群,将需要配置一些基本的网络设置。

永远不要将未受保护的节点暴露给公共internet。

是否绑定专属IP是分辨是否是开发模式和生产模式的标准。

network.host 节点将绑定到此主机名或IP地址,并将此主机发布(广告)给集群中的其他节点。
接受IP地址、主机名、特殊值或任意组合的数组。
注意,任何包含:的值(例如,一个IPv6地址或包含一个特殊值)必须用引号括起来,因为:在YAML中是一个特殊字符。0.0.0.0是一个可接受的IP地址,它将绑定到所有网络接口。值0与值0.0.0.0具有相同的效果。
默认 _local_.
discovery.zen.ping.unicast.hosts 为了加入一个集群,节点需要知道集群中至少一些其他节点的主机名或IP地址。此设置提供此节点将尝试联系的其他节点的初始列表。接受IP地址或主机名。
如果主机名查找解析为多个IP地址,那么将使用每个IP地址进行发现。
循环DNS——在每次查找时从列表中返回不同的IP——可以用于发现;
不存在的IP地址将抛出异常,并导致下一轮ping时再次查找DNS(取决于JVM DNS缓存)。
默认值 ["127.0.0.1", "[::1]"]。
http.port 
要绑定到传入HTTP请求的端口。接受单个值或范围。如果指定了一个范围,则节点将绑定到该范围中的第一个可用端口。
默认值9200-9300.
transport.tcp.port 
为节点间通信而绑定的端口。接受单个值或范围。如果指定了一个范围,则节点将绑定到该范围中的第一个可用端口。
默认值9300-9400.

network.host的特殊值

_[networkInterface]_网络接口的地址,例如 _en0_.
_local_系统上的任何回送地址, for example 127.0.0.1.
_site_系统上的任何站点-本地地址, for example 192.168.0.1.
_global_系统上任何全局范围的地址, for example 8.8.8.8.

禁用HTTP

可以通过设置http.enabled为false完全禁用http模块。Elasticsearch节点(和Java客户机)使用传输接口(而不是HTTP)进行内部通信。在不打算直接服务REST请求的节点上完全禁用http层可能是有意义的。

例如,如果还有打算为所有REST请求提供服务的客户机节点,那么可以在仅数据节点上禁用HTTP。但是请注意,将不能直接向禁用HTTP的节点发送任何REST请求(例如检索节点状态)。

高级网络设置

network.host网络设置中介绍的主机设置是同时设置绑定主机和发布主机的快捷方式。在高级用例中,例如在代理服务器后面运行时,可能需要将这些设置设置为不同的值:

network.bind_host 
这指定了一个节点应该绑定到哪个网络接口,以便侦听传入的请求。一个节点可以绑定到多个接口,例如两个网卡,或者一个站点本地地址和一个本地地址。默认为network.host。network.publish_host 
发布主机是节点向集群中的其他节点发布的单一接口,以便这些节点可以连接到它。当前,一个Elasticsearch节点可以绑定到多个地址,但只发布一个地址。如果没有指定,默认network.host为“最佳”地址。按IPv4/IPv6堆栈首选项排序,然后按可达性排序。如果你设置了一个网络。如果产生多个绑定地址,但依赖于节点到节点通信的特定地址,则应该显式设置network.publish_host. 

以上两个设置都可以像network一样配置。主机——接受IP地址、主机名和特殊值。

高级TCP设置

任何使用TCP的都使用以下配置:

network.tcp.no_delay启用或禁用TCP无延迟设置。默认值为true。
network.tcp.keep_alive启用或禁用TCP保持活动。默认值为true。
network.tcp.reuse_address地址是否可以重用。在非windows机器上默认为true。
network.tcp.send_buffer_sizeTCP发送缓冲区的大小(用大小单位指定)。默认情况下未显式设置。
network.tcp.receive_buffer_sizeTCP接收缓冲区的大小(用大小单位指定)。默认情况下未显式设置。

Transport

传输模块用于集群内节点之间的内部通信。从一个节点到另一个节点的每个调用都使用传输模块(例如,当一个HTTP GET请求由一个节点处理,而实际上应该由持有数据的另一个节点处理)。

传输机制在本质上是完全异步的,这意味着没有等待响应的阻塞线程。使用异步通信的好处是首先解决了C10k问题,同时也是分散(广播)/收集操作(如Elasticsearch中的搜索)的理想解决方案。

TCP传输是使用TCP的传输模块的实现。它允许以下设置:

transport.tcp.port
绑定端口范围。默认为9300 - 9400。transport.publish_port
transport.bind_host
transport.publish_host
transport.host

TCP传输概要文件

Elasticsearch允许通过使用传输配置文件绑定到不同接口上的多个端口。参见下面的示例配置

transport.profiles.default.port: 9300-9400
transport.profiles.default.bind_host: 10.0.0.1
transport.profiles.client.port: 9500-9600
transport.profiles.client.bind_host: 192.168.0.1
transport.profiles.dmz.port: 9700-9800
transport.profiles.dmz.bind_host: 172.16.1.2

默认配置文件是特殊的。如果其他配置文件没有特定的配置设置集,则将其用作任何其他配置文件的回退,并且此节点是如何连接到集群中的其他节点的。

可以在每个传输配置文件上配置以下参数,如上面的示例所示:

  • port: The port to bind to
  • bind_host: The host to bind
  • publish_host: The host which is published in informational APIs
  • tcp_no_delay: Configures the TCP_NO_DELAY option for this socket
  • tcp_keep_alive: Configures the SO_KEEPALIVE option for this socket
  • reuse_address: Configures the SO_REUSEADDR option for this socket
  • tcp_send_buffer_size: Configures the send buffer size of the socket
  • tcp_receive_buffer_size: Configures the receive buffer size of the socket

Transport跟踪

传输模块有一个专用的跟踪记录器,当它被激活时,它会记录传入和传出的请求。可以通过设置org.elasticsearch.transport.TransportService的级别动态激活该日志。跟踪记录器要跟踪:

PUT _cluster/settings
{"transient" : {"logger.org.elasticsearch.transport.TransportService.tracer" : "TRACE"}
}

还可以使用一组包含和排除通配符模式来控制跟踪哪些操作。默认情况下,除故障检测外,每个请求都将被跟踪:

PUT _cluster/settings
{"transient" : {"transport.tracer.include" : "*","transport.tracer.exclude" : "internal:discovery/zen/fd*"}
}

线程池

一个节点拥有几个线程池,以便改进在节点内管理线程内存消耗的方式。许多这些池还有与它们相关联的队列,这些队列允许持有挂起的请求,而不是丢弃它们。

generic
线程池类型为scalingindex
索引写入删除操作。线程池类型为fixed,大小为# of available processors,队列长度为200。search
count/search/suggest操作。类型为fixed_auto_queue_size,大小为int((# of available_processors * 3) / 2) + 1,初始值为1000.get
类型为fixed,大小为# of available processors,队列长度为1000.analyze  
类型为fixed,大小为1,队列长度为16write
single-document index/delete/update和 bulk requests。
类型为fixed,大小为# of available processors,队列长度为200。最大大小为1 + # of available processorssnapshot
snapshot/restore操作。
类型为scaling,保持活跃5m,并且最大为`min(5, (# of available processors)/2)`.warmer
segment warm-up 操作。
类型为scaling,保持活跃5m,并且最大为`min(5, (# of available processors)/2)`.refresh
类型为scaling,保持活跃5m,并且最大为`min(10, (# of available processors)/2)`.listener 
listener threaded设置为true的时候。
类型为scaling,默认为`min(10, (# of available processors)/2)`.

设置

可以通过设置特定类型的参数来更改特定的线程池;例如,改变索引线程池有更多的线程:

thread_pool:index:size: 30

fixed线程池

下面是线程池的类型及其各自的参数:

fixed:fixed持有固定大小的线程来处理请求,使用一个队列(可选绑定)处理没有线程为其服务的挂起请求。

size:size参数控制线程的数量,默认为内核数量乘以5。

queue_size:queue_size控制没有线程执行的挂起请求队列的大小。默认情况下,它被设置为-1,这意味着它是无界的。当一个请求进入并且队列已满时,它将中止该请求。

thread_pool:index:size: 30queue_size: 1000

fixed_auto_queue_size

fixed_auto_queue_size线程池持有固定大小的线程,用于处理没有线程服务的挂起请求,并使用一个有界队列处理这些请求。它类似于fixed线程池,但是,queue_size会根据Little定律的计算自动调整。每次完成auto_queue_frame_size操作时,这些计算可能会将queue_size调高或调低50。

size参数控制线程的数量,默认为内核数量乘以5。

queue_size允许控制没有线程执行的挂起请求队列的初始大小。

min_queue_size设置控制queue_size可以调整的最小值。

max_queue_size设置控制queue_size可以调整的最大数量。

auto_queue_frame_size设置控制在调整队列之前进行度量的操作数量。它应该足够大,单个操作不能过度影响计算。

target_response_time是一个时间值设置,指示线程池队列中任务的目标平均响应时间。如果任务通常超过这个时间,线程池队列将被调低,以拒绝任务。

thread_pool:search:size: 30queue_size: 500min_queue_size: 10max_queue_size: 1000auto_queue_frame_size: 2000target_response_time: 1s

scaling

可伸缩的线程池持有动态数量的线程。这个数字与工作负载成比例,并在核心参数和最大参数的值之间变化。

keep_alive参数决定一个线程在不做任何工作的情况下应该在线程池中保留多长时间。

thread_pool:warmer:core: 1max: 8keep_alive: 2m

处理器设置

自动检测处理器的数量,并根据它自动设置线程池设置。这可以通过显式设置处理器设置来实现。

processors: 2

如果在同一个主机上运行多个Elasticsearch实例,但希望Elasticsearch调整其线程池的大小,就像它只有一部分CPU一样,应该覆盖设置为所需的部分的处理器(例如,如果在一台16核的机器上运行两个Elasticsearch实例,请将处理器设置为8)。请注意,这是一个专家级的用例,其中涉及的内容远不止设置处理器设置,还有其他需要考虑的事项,如更改垃圾收集器线程的数量、将进程固定到内核等。

有时候会错误地检测到处理器的数量,在这种情况下,显式地设置处理器设置可以解决这类问题。

GET /_nodes/os

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv7基础 | 第2种方式:简化网络结构之yolov7.yaml(由104层简化为30层)

前言:Hello大家好,我是小哥谈。通过下载YOLOv7源码可知,原始的yolov7.yaml文件是拆开写的,比较混乱,也不好理解,并且为后续改进增添了很多困难。基于此种情况,笔者就给大家介绍一种将yolov7.yaml文件简化的方法,将104层简化为30层,并且参数量和计算量和原来是一致的,…

内存占用构造方法

#使用虚拟内存构造内存消耗 mkdir /tmp/memory mount -t tmpfs -o size5G tmpfs /tmp/memory dd if/dev/zero of/tmp/memory/block #释放消耗的虚拟内存 rm -rf /tmp/memory/block umount /tmp/memory rmdir /tmp/memory #内存占用可直接在/dev/shm目录下写文件

《极客时间 - 左耳听风》【文章笔记个人思考】

《极客时间 - 左耳听风》原文链接:https://time.geekbang.org/column/intro/100002201?tabcatalog 10 | 如何成为一个大家愿意追随的Leader? 10 | 如何成为一个大家愿意追随的Leader? 这里的Leader是在技术上取得优势,而不是行政…

2024年2月个人工作生活总结

本文为 2024年2月工作生活总结。 研发编码 一些警告修正记录 这个月修正了个人所负责的工程警告,这些警告其实是前人的代码遗留的,我续写的代码,除printf函数的%d、%ld格式,都在写的过程中改了。 下面记录一些典型的警告及应对…

NLP(一)——概述

参考书: 《speech and language processing》《统计自然语言处理》 宗成庆 语言是思维的载体,自然语言处理相比其他信号较为特别 word2vec用到c语言 Question 预训练语言模型和其他模型的区别? 预训练模型是指在大规模数据上进行预训练的模型,通常…

测试环境搭建整套大数据系统(七:集群搭建kafka(2.13)+flink(1.13.6)+dinky(0.6)+iceberg)

一:搭建kafka。 1. 三台机器执行以下命令。 cd /opt wget wget https://dlcdn.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz tar zxvf kafka_2.13-3.6.1.tgz cd kafka_2.13-3.6.1/config vim server.properties修改以下俩内容 1.三台机器分别给予各自的broker_id…

git操作学习记录,简单易上手

配置git 的账户邮箱 $ git config --global user.name "Firstname Lastname" $ git config --global user.email "your_emailexample.com"代码回溯 git rest --hard [commit哈希值]git log命令只能查看以当前状态为终点的历史日志 git reflog命令&#x…

Python+neo4j构建豆瓣电影知识图谱

文章目录 数据来源数据整理导入节点和关系导入使用Subgraph批量导入节点和关系 多标签实体和实体去重 数据来源 http://www.openkg.cn/dataset/douban-movie-kg 该网址拥有丰富的中文知识图谱数据集,OpenKG(Open Knowledge Graph),可供研究人员使用研究…

【golang】25、图片操作

用 “github.com/fogleman/gg” 可以画线, 框 用 “github.com/disintegration/imaging” 可以变换颜色 一、渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (st…

Python爬虫——Urllib库-3

目录 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 获取豆瓣电影前十页的数据 ajax的post请求 总结 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 首先可以在浏览器找到发送数据的接口 那么我们的url就可以在header中找到了 再加上UA这个header 进行请…

Facebook的元宇宙实践:数字化社交的新前景

近年来,元宇宙(Metaverse)这一概念备受瞩目,被认为是数字化社交的未来趋势之一。而在众多科技巨头中,Facebook(现更名为Meta)一直处于元宇宙发展的前沿。在本文中,我们将深入探讨Fac…

万字带你走过数据库的这激荡的三年

本文收集了卡内基梅隆大学计算机科学系数据库学副教授 Andy Pavlo 从 2021 到 2023 连续三年对数据库领域的回顾,希望通过连续三年的回顾让你对数据库领域的技术发展有所了解。 关于 Andy Pavlo:卡内基梅隆大学计算机科学系数据库学副教授,数…

vuepress项目侧边栏菜单配置使用

第一种菜单配置,自定义菜单名称 {text: 菜单名称,// 是否折叠collapsible: true,children: [{text: "自定义md菜单名称",sidebarDepth: 2,link: "/xxx/aa.md",children: [],}],},第二种菜单配置 标题自动生成菜单,使用需要搭配sideb…

c语言求矩阵的局部极大值

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。 输入格式: 输入在第一行中给出矩阵A的行数M和列数N(3≤…

C语言创建结构体时 什么时候需要C++引用 什么情况下下不需要引用

在C语言中,结构体通常通过传递指针来实现对结构体的修改。当在函数中需要修改结构体的内容,并且希望这些修改在调用函数后仍然保持,可以考虑使用指针。引用是C中的一种特殊机制,用于更方便地传递参数,但在纯粹的C语言中…

《springcloud alibaba》 三 sentinel流量控制

目录 sentinel准备流控规则 qpspom.xmlapllication.yml启动类controller查看结果流控提示不太友好 流控规则 线程数全局异常处理pom.xmlapplication.yml启动类实体类controller类异常类测试 关联流控模式关联jmeter 链路servicecontroller代码调整 流控效果Warm UP 熔断降级规则…

[Flutter]用16进制颜色字符串初始化Color

使用: // 使用Color的静态方法 fromARGB() 来创建颜色对象。透明度为 255(完全不透明) Color a Color.fromARGB(255, 42, 35, 72); // 使用八位的十六进制数来表示颜色,其中前两位表示透明度,后六位表示红色、绿色和…

本科毕业设计:计及并网依赖性的分布式能源系统优化研究。(C语言实现)(内包含NSGA II优化算法)(二)

目录 前言 1、sofc函数 2、光伏板函数 3、集热场函数 4、sofc电跟随策略函数 5、二分法找sofc运行点函数 6、目标函数:成本 7、目标函数:二氧化碳排放量 8、目标函数:并网依赖性 前言 本篇文章介绍的是我的毕业设计,我将C…

JavaScript DOM操作笔记记录回忆总结

一、什么是DOM? 1、通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。 2、当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model) 二、操作DOM 1、在操作DOM之前,我们需要先获取到…

DOM 创建节点、添加节点和删除节点

创建元素节点 document.createElement(‘标签名’) 创建文本节点document.createTextNode ( 内容 ) 根据传入的标签名创建出一个空的元素对象创建出来的默认不显示,要成为别人的子元素才能显示,所以要结合appendChild使用 添加节点(后面&am…