当前位置:首页 > 数据库 > 正文内容

Elasticsearch 在Linux下的装置布置和装备

邻居的猫1个月前 (12-09)数据库1947

环境

CentOS-7-x86_64-DVD-2009.iso

https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

elasticsearch-7.10.0-linux-x86_64.tar.gz

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-10-0

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz

装置

# mkdir -p /usr/local/elasticsearch
# chown esuser:esuser /usr/local/elasticsearch
# useradd esuser
# passwd esuser
# su - esuser
$ mv elasticsearch-7.10.0-linux-x86_64.tar.gz /usr/local/elasticsearch/
$ cd /usr/local/elasticsearch/
$ tar -xvzf elasticsearch-7.10.0-linux-x86_64.tar.gz 
$ cd elasticsearch-7.10.0
$ ls
bin  config  jdk  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.asciidoc

留意:默许情况下,不答应运用root用户运转ES,会报错:

Caused by: java.lang.RuntimeException: can not run elasticsearch as root

前台运转

$ ./bin/elasticsearch

验证是否发动成功

$ curl localhost:9200/
{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "8CLFbx4LSwW_maztFPGiTg",
  "version" : {
    "number" : "7.10.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
    "build_date" : "2020-11-09T21:30:33.964949Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

阐明:拜访地址要和config/elasticsearch.ymlnetwork.host装备坚持一致

后台运转

要将ES作为看护进程运转,请在指令行上指定-d,并运用-p选项将进程ID记载在文件中:

假如对ES密钥库进行了暗码保护,体系将提示你输入密钥库的暗码。有关更多详细信息,请参阅安全设置。日志音讯能够在$ES_HOME/logs/目录中找到。

$ ./bin/elasticsearch -d -p pid

封闭以看护进程办法发动的ES,,杀死pid文件中记载的进程ID:

$ pkill -F pid

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/install-elasticsearch.html

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/targz.html#install-linux

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/targz.html#targz-running

装备

重要的Elasticsearch装备

Path装备

ES将索引的数据写入索引,并将数据流写入 data目录。ES将自己的运用程序日志写入logs目录,其间包含有关集群健康和操作的信息。

关于macOS.tar.gz、Linux.tar.gz和Windows.zip装置,默许情况下datalogs$ES_HOME的子目录。可是,$ES_HOME中的文件在晋级进程中有被删去的危险。

在出产环境中,强烈主张将$ES_HOME/config/elasticsearch.yml中的path.datapath.logs设置为$ES_HOME之外的方位

类Unix体系中装备示例:

path:
  data: /var/data/elasticsearch
  logs: /var/log/elasticsearch

假如有必要,能够在path.data中指定多个途径。ES在全部供给的途径上存储节点的数据,但将每个分片的数据坚持在同一途径上。

留意:

ES不会在节点的数据途径上均衡分片。单个途径中的高磁盘运用率会触发整个节点磁盘运用率高水位。假如触发,ES将不会向节点添加分片,即便节点的其他途径有可用的磁盘空间。假如需求额定的磁盘空间,主张添加一个新节点,而不是额定的数据途径。

Linux和macOS装置path.data支撑多个类Unix风格途径:

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

集群称号装备

一个节点只要在与集群中的全部其他节点同享其cluster.name时才干参加集群。默许称号是elasticsearch,但应该将其更改为描绘集群用处的恰当称号。

cluster.name: logging-prod

节点称号装备

ES运用node.name作为ES特定实例的易读标识符。此称号包含在许多API的呼应中。ES发动时,节点名默许为机器的主机名,但能够在elasticsearch.yml中显式装备:

node.name: prod-data-2

网络主机装备

默许情况下,ES只绑定到环回地址,如127.0.0.1[::1]。此绑定足以在服务器上运转单个开发环境节点

留意:

能够从单个节点上的相同$ES_HOME方位发动多个节点。此设置可用于测验ES构成集群的才干,但不主张用于出产环境。

要与其他服务器上的节点构成集群,节点需求绑定到非环回地址。虽然有许多网络设置,但一般只需装备network.host即可:

network.host: 192.168.1.10

network.host设置还能够了解一些特别值,如 _local_, _site_, _global_ 和修饰符,如 :ip4:ip6。请参阅network.host特别值。

Discovery和集群信息装备

在投入出产之前,装备两个重要的集群发现和构成设置,以便集群中的节点能够互相发现并挑选master节点。

discovery.seed_hosts

开箱即用,无需任何网络装备,ES将绑定到可用的环回地址,并扫描本地端口93009305,以与同一服务器上运转的其他节点衔接。这种行为供给了一种主动集群体会,而无需进行任何装备。
当期望与其他主机上的节点构成集群时,运用静态“ discovery.seed_hosts设置。此设置供给集群中其他节点的列表,这些节点契合master节点资历,或许处于活动状况并可联络,以发动发现进程. 此设置承受集群中全部契合master节点条件的节点的YAML序列或地址数组。每个地址能够是IP地址,也能够是经过DNS解析为一个或多个IP地址的主机名。

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 
   - [0:0:0:0:0:ffff:c0a8:10c]:9301 
  • 端口号可选,默许为 9300, 可修正。
  • 假如主机名解析为多个IP地址,则节点将测验在全部已解析的地址上发现其他节点。
  • IPv6地址有必要括在方括号内

假如契合master节点条件的节点没有固定的称号或地址,运用可选主机供给商 动态查找其地址。

cluster.initial_master_nodes

第一次发动ES集群时,cluster bootstrapping过程确认了在第一次推举中投票的契合master节点资历的节点集。在开发形式下,在没有装备发现设置的情况下,此过程由节点自身主动履行。

由于主动引导本质上是不安全的,在出产形式下发动新集群时,有必要清晰列出契合master节点资历的节点,这些节点的投票应在第一次推举中被核算。能够运用cluster.initial_master_nodes设置来设置此列表。

在集群初次成功树立后,从每个节点的装备中删去cluster.initial_master_nodes设置。从头发动群集或向现有群集添加新节点时,请勿运用此设置。

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11
   - seeds.mydomain.com
   - [0:0:0:0:0:ffff:c0a8:10c]:9301
cluster.initial_master_nodes: 
   - master-node-a
   - master-node-b
   - master-node-c

经过node.name标识初始master节点(https://www.elastic.co/guide/en/elasticsearch/reference/7.10/important-settings.html#node-name),默许为其主机名。保证cluster.initial_master_nodes中的值与node.name彻底匹配。假如运用彻底约束域名(FQDN)作为节点称号,例如master-node-a.example.com,则有必要运用此列表中的FQDN。相反,假如node.name是一个没有任何跟随约束符的裸主机名,则还有必要省掉cluster.initial_master_nodes中的跟随约束符。

查阅bootstrapping a cluster

堆巨细装备

默许情况下,ES告知JVM运用一个最小和最大值都为1GB的堆。当布置到出产环境时,装备堆巨细以保证ES有满足的可用堆空间十分重要。

ES将经过Xms(最小堆巨细)和Xmx(最大堆巨细)设置分配jvm.options中指定的整个堆。XmsXmx设置有必要互相持平。

这些设置的值取决于服务器上可用的RAM量:

  • XmxXms设置为不超越物理RAM的50%。ES需求内存用于JVM堆以外的意图,为此留出空间十分重要。例如,ES运用堆外缓冲区进行高效的网络通讯,依赖于操作体系的文件体系缓存来高效拜访文件,JVM自身也需求一些内存。ES进程运用的内存超越运用Xmx设置装备的约束是正常的。

  • XmxXms设置为不超越JVM用于紧缩目标指针的阈值。切当的阈值各不相同,但挨近32GB。能够经过在日志中查找相似以下行来验证是否低于阈值:

    heap size [1.9gb], compressed ordinary object pointers [true]
    
  • XmxXms设置为不超越从零开始的紧缩oops的阈值。切当的阈值各不相同,但26 GB在大多数体系上是安全的,在某些体系上或许高达30 GB。能够经过运用JVM选项-XX:+UnlockDiagnosticVMOptions-XX:+PrintCompressedOopsMode 发动ES,并查找相似以下行来验证是否低于此阈值:

    heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops
    

    此行显现启用了从零开始的紧缩oops。假如未启用从零开始的紧缩oops,你将看到相似以下行:

    heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000
    

ES可用的堆越多,它能够用于内部缓存的内存就越多,但留给操作体系用于文件体系缓存的内存越少。此外,较大的堆或许会导致废物搜集暂停时刻更长。

下面是一个怎么经过config/jvm.options.d/文件设置堆巨细的示例:

-Xms2g 
-Xmx2g 

将最小堆内存和最大堆内存都设置为 2g。

运用jvm.options.d是装备出产布置堆巨细的首选办法。

补白:默许情况下,jvm.options.d为空目录,能够在该目录下手动新建装备,如jvm.options,文件格局可参阅config/jvm.options

还能够经过ES_JAVA_OPTS环境变量设置堆巨细。这一般不主张用于出产布置,但关于测验很有用,由于它掩盖了设置JVM选项的全部其他办法。

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch 
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch 

1 设置最小堆内存和最大堆内存都为 2g。

2 设置最小堆内存和最大堆内存都为 4000 MB。

JVM 堆 dump途径设置

默许情况下,ES 装备JVM 将内存不足的堆dump到默许数据目录。RPM以及Debian包,数据目录为/var/lib/eelasticsearch。在Linux 和 MacOS 和Windows发行版中,data目录坐落ES装置的根目录下。假如此途径不适合接纳堆dump,则修正 jvm.options-XX:HeapDumpPath=…条目:

  • 假如指定了一个目录,JVM将依据运转实例的PID为堆dump生成一个文件名。
  • 假如指定固定文件名而不是目录,则当JVM需求对内存不足的反常履行堆dump时,该文件有必要不存在。不然,堆dump将失利。

GC日志装备

默许情况下,ES启用废物搜集(GC)日志。这些是在jvm.options装备的而且输出到与ES日志相同的默许方位。默许装备每64 MB轮换一次日志,最多可耗费2 GB的磁盘空间。

能够运用JEP 158: 一致JVM日志中描绘的指令行选项从头装备JVM日志记载。除非直接更改默许的jvm.options文件,不然除了你自己的设置外,还会运用ES默许装备。要禁用默许装备,首要经过供给-Xlog:disable选项禁用日志,然后供给自己的指令行选项。这将禁用全部JVM日志,因而有必要查看可用选项并启用所需的全部。

要查看原始JEP中未包含的更多选项,请参阅运用JVM一致日志结构启用日志。

Examples

经过创立带有一些示例选项的$ES_HOME/config/jvm.options.d/GC.options,将默许GC日志输出方位更改为/opt/my-app/gc.log

# 封闭之前全部的日志记载装备
-Xlog:disable

# JEP 158的默许设置,除了运用“utctime”而不是“uptime”来匹配下一行 
-Xlog:all=warning:stderr:utctime,level,tags

# 运用各种选项将GC日志记载到自定义方位
-Xlog:gc*,gc+age=trace,safepoint:file=/opt/my-app/gc.log:utctime,pid,tags:filecount=32,filesize=64m

装备ESDocker容器将GC调试日志发送到规范过错(stderr)。这使容器编列器能够处理输出。如需运用ES_JAVA_OPTS环境变量,请指定:

MY_OPTS="-Xlog:disable -Xlog:all=warning:stderr:utctime,level,tags -Xlog:gc=debug:stderr:utctime"
docker run -e ES_JAVA_OPTS="$MY_OPTS" # etc

暂时目录设置

默许情况下,ES运用发动脚本在体系暂时目录下创立的私有暂时目录。

在某些Linux发行版上,体系实用程序会将最近没有拜访过的文件和目录将从/tmp中删去。这将导致ES运转期间私有暂时目录被删去,假如需求运用暂时目录的功用长时刻未运用的话。后续假如某些功用运用需求此暂时目录,将会发生问题。

假如运用.deb.rpm包装置ES,并在systemd下运转它,ES运用的私有暂时目录将被扫除在定时整理之外。

假如打算在Linux或MacOS上长时刻运转.tar.gz发行版,考虑为ES创立一个专用的暂时目录,将该目录设置在不会从中铲除旧文件和目录的途径下。此目录应设置权限,以便只要运转ES的用户能够拜访它。然后,在发动ES之前,将$ES_TMPDIR环境变量设置为指向此目录

JVM丧命过错日志设置

默许情况下,ES装备JVM将丧命过错日志写入默许日志目录。针对RPM以及Debian包,该目录为/var/log/elasticsearch。针对Linux,MacOS和Windows发行版中,logs目录坐落ES装置目录的根目录下。

这些日志是JVM在遇到丧命过错(如分段过错)时生成的日志。假如此途径不适合接纳日志,则修正jvm.options-XX:ErrorFile=…条目

集群备份

快照能够避免由于灾祸导致的永久数据丢掉。快照生命周期办理是对集群进行定时备份的最简略办法。有关更多信息,请参阅集群备份.
留意:

不能经过简略地仿制ES集群全部节点的数据目录来备份ES。ES在运转时或许会对其数据目录的内容进行更改;仿制其数据目录不能保证其内容的一致性。备份群集的仅有牢靠办法是运用快照和复原功用。

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/important-settings.html

重要的体系装备

装备体系设置

在哪装备体系设置取决于用于装置ES的软件包以及运用的操作体系。

当运用.zip.tar.gz包时,能够装备体系设置:

  • 运用ulimit暂时装备,或
  • /etc/security/limits.conf中永久装备

运用RPM或Debian软件包时,大多数体系设置都在 体系装备文件 中设置. 然后,运用systemd的体系要求在 systemd装备文件 中指定体系约束

ulimit

在Linux体系上,ulimit可用于暂时更改资源约束。一般需求在运转ES的用户发动ES前,切换为root,以装备资源约束。例如,要将翻开的文件句柄数(ulimit-n)设置为65536,能够履行以下操作:

sudo su  
ulimit -n 65535 
su esuser 

新的资源装备仅运用于当时会话。可经过 ulimit -a 查询当时全部约束。

/etc/security/limits.conf

在Linux体系上,能够经过修改/etc/security/limits.conf文件为特定用户设置耐久约束。例如,要将esuser用户的最大翻开文件数设置为65535,在limits.conf文件中添加以下行:

esuser  -  nofile  65535

此更改仅在elasticsearch用户下次翻开新会话时收效。

Ubuntu下的limits.conf

Ubuntu会疏忽由init.d发动的进程的limits.conf文件。要启用limits.conf文件,请修改/etc/pam.d/su并撤销注释以下行:

# session    required   pam_limits.so
体系装备文件

运用RPM或Debian软件包时,能够在体系装备文件中指定体系设置和环境变量,该文件坐落:

包类型 体系装备文件途径
RPM /etc/sysconfig/elasticsearch
Debian /etc/default/elasticsearch

可是,关于运用systemd的体系,需求经过systemd指定体系约束

Systemd装备

在运用systemd的体系上运用RPM或Debian软件包时,有必要经过systemd指定体系约束。

systemd服务文件(/usr/lib/systemd/system/eelasticsearch.service)包含默许运用的约束。

要掩盖它们,添加一个名为/etc/systemd/system/exelasticsearch.service.d/overrid.conf的文件(或许,运转sudo systemctl edit elasticsearch,会在默许修改器中主动翻开该文件)。在此文件中设置任何需求的改变,例如:

[Service]
LimitMEMLOCK=infinity

一旦完结更改,运转以下指令以重载服务单元:

sudo systemctl daemon-reload
参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/setting-system-settings.html

禁用交流(swapping)

大多数操作体系都企图将尽或许多的内存用于文件体系缓存,并急迫地交流掉未运用的运用程序内存。这或许会导致JVM堆的一部分,乃至其可履行页面被换出到磁盘。

swapping 对功用和节点稳定性十分晦气,应该不惜全部代价避免。它或许会导致废物搜集继续分钟而不是毫秒,并或许导致节点呼应缓慢,乃至与集群断开衔接。在弹性分布式体系中,更简单导致操作体系杀死节点。

有三种办法能够禁用交流。首选项是彻底禁用交流。假如这不是一种挑选,那么是挑选最小化swappiness仍是挑选内存确定取决于你的环境

禁用全部swap文件

一般,ES是在机器上运转的仅有服务,其内存运用由JVM选项操控。不需求启用交流。

在Linux体系上,能够经过运转以下指令暂时禁用交流::

sudo swapoff -a

这不需求从头发动Elasticsearch。

要永久禁用,则需求修改/etc/fstab文件,并注释掉任何包含单词swap的行。

在Windows上,能够经过体系特点→高档→功用→高档→虚拟内存彻底禁用分页文件来完结等效功用。

装备swappiness

Linux体系上可用的另一个挑选是保证sysctlvm.swappiness设置为1。这减少了内核交流的倾向,在正常情况下不该导致交流,一起依然答应整个体系在紧迫情况下交流。

敞开bootstrap.memory_lock

另一种挑选是在Linux/Unix体系上运用mlockall,在Windows上运用VirtualLock,以测验将进程地址空间确定到RAM中,避免任何ES堆内存被换出。

一些渠道在运用内存锁时依然会交流堆内存。为了避免堆外内存交流,取而代之,禁用全部交流文件。

要启用内存锁,需在elasticsearch.yml中将bootstrap.memory_lock设置为true

bootstrap.memory_lock: true

假如mlockall企图分配的内存超越可用内存,则或许会导致JVM或shell会话退出!

发动Elasticsearch后,能够经过查看此恳求输出中mlockall值来查看此设置是否已成功运用:

GET _nodes?filter_path=**.mlockall

假如看到mlockallfalse,则意味着mlockall恳求失利。还将在日志中看到一行包含更多信息,带有单词Unable to lock JVM Memory的日志。

在Linux/Unix体系上,最或许的原因是运转Elasticsearch的用户没有确定内存的权限。能够按如下办法授权:

  • 运用.zip.tar.gz装置包

    发动ES前以root用户履行ulimit -l unlimited。可选的,设置/etc/security/limits.conf memlockunlimited

    # allow user 'elasticsearch' mlockall
    elasticsearch soft memlock unlimited
    elasticsearch hard memlock unlimited
    
  • RPM 和 Debian

    体系装备文件中设置 MAX_LOCKED_MEMORYunlimited

  • 运用systemd的体系

    systemd装备中设置LimitMEMLOCKinfinity

mlockall失利的另一个或许原因是JNA暂时目录(一般是/tmp的子目录)是用noexec选项挂载的。这能够经过运用ES_JAVA_OPTS环境变量为JNA指定一个新的暂时目录来处理:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djna.tmpdir=<path>"
./bin/elasticsearch

或许在 jvm.options装备文件中设置该JVM标识。

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/setup-configuration-memory.html

文件描绘符

这仅适用于Linux和MacOS,假如在Windows上运转ES,能够安全地疏忽它。在Windows上,JVM运用仅受可用资源的约束的API。

ES运用了很多的文件描绘符或文件句柄。文件描绘符竭尽或许是灾难性的,很或许会导致数据丢掉。保证将运转ES的用户的翻开文件描绘符数量约束添加到65536或更高。

关于.zip.tar.gz 包,在发动ES之前以root用户设置ulimit -n 65535,或许在/etc/security/limits.conf中将nofile设置为65535

在MacOS上,还有必要将JVM选项-XX:-MaxFDLimit传递给ES,以便运用更高的文件描绘符约束。

RPM和Debian软件包现已将文件描绘符的最大数量默许为65535,不需求进一步装备。

能够运用Nodes stats查看为每个节点装备的max_file_descriptors:

GET _nodes/stats/process?filter_path=**.max_file_descriptors
参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/file-descriptors.html

虚拟内存

默许情况下,ES运用mmapfs目录用于存储其索引。默许操作体系对mmap计数的约束或许太低,这或许会导致内存不足反常。

在Linux上,能够经过以 root身份运转以下指令来添加约束。

sysctl -w vm.max_map_count=262144

要永久设置该值,需更新/etc/sysctl.conf中的vm.max_map_count设置。要在从头发动后进行验证,请运转sysctl vm.map_map_count

RPM和Debian软件包将主动装备此设置。无需进一步装备。CentOS7.9中验证,该装备项默许为65535,无法正常发动

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/vm-max-map-count.html

线程数量

ES为不同类型的操作运用了许多线程池。重要的是,它能够在需求时创立新线程。保证Elasticsearch用户至少可创立4096个线程。

这能够经过在发动Elasticsearch之前以root用户运转ulimit -u 4096来完结 ,或许在/etc/security/limits.conf中将nproc设置为4096

发行包在systemd下作为服务运转时,将主动装备ES进程的线程数。不需求额定的装备。

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/max-number-of-threads.html

DNS缓存设置

ES运转时有一个安全办理器。有了安全办理器,JVM默许无限期缓存正向主机名解析,默许缓存反向主机名解析10秒。ES运用默许值掩盖此行为,以缓存正向解析60秒,反向解析10秒。这应适用于大多数环境,包含DNS解析随时刻改变的环境。假如没有掩盖此装备,能够修改JVM选项中的es.networkaddress.cache.ttles.networkaddress.cache.negative.ttl。留意,ES会疏忽 Java安全策略 中的 networkaddress.cache.ttl=networkaddress.cache.negative.ttl= 。除非移除es.networkaddress.cache.ttles.networkaddress.cache.notanegative.ttl设置。

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/networkaddress-cache-ttl.html

JNA暂时目录未运用noexec挂着

这仅适用于Linux。

ES运用Java Native Access(JNA)库来履行一些依赖于渠道的本地代码。在Linux上,支撑此库的本地代码在运转时从JNA存档中提取。默许情况下,此代码被提取到ES暂时目录,该目录默许为/tmp的子目录。可选的,能够运用JVM标志-Djna.tmpdir=<path>操控此方位。由于本地库作为可履行文件映射到JVM虚拟地址空间,因而提取此代码的方位的底层挂载点不能运用noexec挂载,由于这会阻挠JVM进程将此代码映射为可履行文件。在一些强化的Linux装置中,这是/tmp的默许挂载选项。底层挂载是用noexec挂载的一个迹象是,在发动时,JNA将无法加载,提示java.lang.UnsatisfiedLinkerError反常,并显现一条相似failed to map segment from shared object的提示信息。留意,音讯或许因JVM版别差异而不同。此外,依赖于经过JNA履行本地代码的ES组件将失利,并显现because JNA is not available的提示。假如看到此类过错信息,则有必要从头挂载用于JNA的暂时目录,而且不运用noexec挂载。

参阅链接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/executable-jna-tmpdir.html

TCP重传超时

集群中的每对节点都经过许多TCP衔接进行通讯,这些TCP衔接 坚持翻开状况 直到其间一个节点封闭或节点之间的通讯因底层根底结构毛病而中止。

TCP经过向通讯运用程序躲藏暂时网络中止,在偶然不牢靠的网络上供给牢靠的通讯。在告诉发送者任何问题之前,操作体系将屡次从头传输任何丢掉的音讯。大多数Linux发行版默许从头传输任何丢掉的数据包15次。重传呈指数级推延,因而这15次重传需求900多秒才干完结。这意味着运用此办法检测网络分区或毛病节点需求耗费Linux几分钟的时刻。Windows默许只重传5次,超时时刻约为6秒。

Linux默许答应在或许阅历很长一段时刻数据包丢掉的网络上进行通讯,但关于单个数据中心内的出产网络来说,这个默许值是过高的,正如大多数Elasticsearch集群相同。高可用集群有必要能

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=574

分享给朋友:

“Elasticsearch 在Linux下的装置布置和装备” 的相关文章

万字长文带你深化Redis底层数据结构

万字长文带你深化Redis底层数据结构

Redis数据库的数据结构 Redis 的键值对中的 key 便是字符串目标,而 value 便是指Redis的数据类型,可所以String,也可所以List、Hash、Set、 Zset 的数据类型。 其实是Redis 底层运用了一个大局哈希表保存一切键值对,哈希表的最大长处便是 O(1) 的时刻...

oracle切换用户, 使用SQLPlus切换用户

oracle切换用户, 使用SQLPlus切换用户

在Oracle数据库中,你可以使用`ALTER SESSION SET`命令来切换用户。这个命令可以改变当前会话的用户,但需要注意的是,你必须在具有适当权限的情况下才能切换到其他用户。以下是一个简单的例子,演示如何使用`ALTER SESSION SET`命令来切换用户:```sqlALTER SE...

中文生物医学期刊数据库,中文生物医学期刊数据库在医学研究中的应用与价值

中文生物医学期刊数据库,中文生物医学期刊数据库在医学研究中的应用与价值

以下是几个主要的中文生物医学期刊数据库,供您参考:1. 中国生物医学文献服务系统(SinoMed) 简介:该系统由中国医学科学院医学信息研究所/图书馆开发研制,整合了中国生物医学文献数据库(CBM)、西文生物医学文献数据库(WBM)、北京协和医学院博硕学位论文库等多种资源,提供全面的生物医学文...

数据库是干什么的,什么是数据库?

数据库是干什么的,什么是数据库?

数据库(Database)是计算机系统中用于存储、管理和检索数据的软件系统。它为用户提供了一种结构化的方式来组织、访问和操作大量数据。数据库通常用于处理数据记录,如账户信息、交易记录、客户信息等,并支持数据的查询、更新、删除和插入等操作。数据库的主要功能包括:1. 数据存储:数据库提供了一个持久化的...

mysql查看执行计划,mysql官方网站

mysql查看执行计划,mysql官方网站

MySQL 查看执行计划主要是通过 `EXPLAIN` 或 `EXPLAIN ANALYZE` 命令来完成的。这两个命令可以帮助你理解 MySQL 如何执行一个查询,包括如何使用索引、连接表的方式、预估的行数等。下面是一个基本的例子:```sqlEXPLAIN SELECT FROM users...

数据库的存储方式,数据库存储方式概述

数据库的存储方式,数据库存储方式概述

数据库的存储方式主要有以下几种:1. 文件存储:将数据存储在文件系统中,每个文件对应一个数据表。这种方式的优点是实现简单,缺点是查询效率低,安全性差。2. 内存存储:将数据存储在内存中,这种方式可以提高查询效率,但缺点是数据易丢失,需要定期将数据保存到磁盘上。3. 磁盘存储:将数据存储在磁盘上,这是...