elasticsearch 配置设置事项

前言:本篇考虑 Elasticsearch 7.6 官方文档, 熟悉下 Elasticsearch的设置事项,参考资料:Elasticsearch Guide [8.9] | Elastic

一. 配置事项

  1.设置(Java虚拟机)JVM选项,需要关注的是设置堆的大小,默认1G,该文件的默认位置是config/jvm.options。

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g
-Xmx1g

   注意在windows环境下,配置可能无效,需要改为通过环境变量设置堆大小,如下所示:在启动时,添加参数manager来启动gui界面

    

  2. 日志

   Elasticsearch使用Log4j 2进行日志记录。可以使用log4j2.properties文件配置Log4j 2。通过四种方法来配置日志包括:1.命令行,2.elasticsearch.yml 文件, 3.Api设置, 4.设置log4j2.properties文件。一般修改日志选项,最好通过APi。下面简单演示一个日志选项配置修改:

    临时修改日志记录级别为trace,如下所示:  

PUT /_cluster/settings
{
  "transient": {
    "logger.org.elasticsearch.transport": "trace"
  }
}

   查看修改的设置(include_defaults=true为所有默认参数设置), ,如下所示:

GET /_cluster/settings?include_defaults=false
{
  "transient" : {
    "logger" : {
      "org" : {
        "elasticsearch" : {
          "transport" : "trace"
        }
      }
    }
  }
}

    更多设置参考:动态更新的设置列表,参考:Modules | Elasticsearch Guide [8.9] | Elastic

  3. elasticesearch监制设置

   要更改集群设置,最好调用Api, 能保证各个节点的文件能同步更新,下面开启监控数据的收集,设置可以分临时性(transient,群集重新启动后失效)和持久化(persistent),默认是关闭的。

      配置后,调取优先顺序是:临时性, 持久生,  elasticsearch.yml配置文件。

PUT /_cluster/settings
{
  "persistent": {
    "xpack.monitoring.collection.enabled": "true"
  }
}

    开启后,在kibana左边导航栏中选择“Stack Monitoring”,点击开启turn on mointoring,能看到elasticsearch的监控信息,当能也可以监控kibana和logstash。 

      如上图所示:展示了es集群的整体情况、节点情况、索引情况。点击orerview可以看到:

      Search rate:检索请求的频率,即每秒有多少个检索请求。

      Search Latency: 检索请求的时间,即平均每个检索消耗的时间。

                 Indexing rate:文档编入索引的频率,即每秒有多个少文档编入索引。

      Indexing Latency:文档编入索引的时间,即平均每个文档编入索引消耗的时间。

    其它监控设置如下,可参考:Monitoring settings in Elasticsearch | Elasticsearch Guide [8.9] | Elastic

监控参数描述
xpack.monitoring.collection.enabled
 启用数据收集,默认为false, 包括elasticsearch,Kibana,Logstash,Beats
 xpack.monitoring.elasticsearch.collection.enabled elasticsearch的数据收集,默认为true
xpack.monitoring.collection.cluster.stats.timeout
 集群统计信息的超时。默认为10s
xpack.monitoring.collection.node.stats.timeout
节点统计信息的超时时间。默认为10s
 xpack.monitoring.collection.indices 监控从哪个索引收集数据。默认为所有索引 
 xpack.monitoring.collection.index.stats.timeout 收集索引统计信息的超时。默认为10s

     通过API更多的动态更新的设置列表,参考:Modules | Elasticsearch Guide [8.9] | Elastic

二.重要的elasticsearch参数配置

  1.集群名字

    只有各节点中集群名称一致, 才能加入集群。默认名称为elasticsearch

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application

  2.节点名字

    默认为计算机在Elasticsearch启动时具有的主机名。

# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1

  3.网络主机

    默认情况下,Elasticsearch仅绑定到环回地址,只能在本机节点开发。为了与其他服务器上的节点形成集群,需要配置ip地址方便其他服务器节点访问以及客户端访问。外网改成0.0.0.0

# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 192.168.0.1

   4. Discovery 和 cluster

    在投入生产之前,因该配置这二个,以便集群中的节点可以彼此发现并选举一个主节点。 外网加上cluster.initial_master_nodes: ["node-1"]

    discovery.seed_hosts是用配置多个节点

# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]

    cluster.initial_master_nodes:首次启动全新的Elasticsearch群集时,初始一组符合主节点条件的节点。重新启动集群或将新节点添加到现有集群时,不应使用此设置。

    初始主节点应通过其标识 node.name,默认为其主机名。确保cluster.initial_master_nodes中的值与node.name完全匹配。

# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]

   5. 堆大小设置

    默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。在进入生产阶段时,配置堆大小以确保Elasticsearch有足够的可用堆非常重要。在jvm.options中指定,设置的值取决于服务器上可用的RAM数量。

    (1)设置XmxXms你的物理内存不超过50%

    (2)设置XmxXms不超过32G

  6. 注意事项

     修改配置文件,要注意前后空格,正确如下所示:

      

三.重要的系统参数设置

  3.1 禁用交换    

    交换对性能,节点稳定性非常不利,应不惜一切代价避免交换。

    在linux中,通过运行以下命令暂时禁用交换,这不需要重启Elasticsearch

    sudo swapoff -a

   在Windows上,可以通过完全禁用分页文件来实现等效功能:系统属性→高级→性能→高级→虚拟内存

  3.2 文件描述符

   这仅与Linux和macOS有关,如果在Windows上运行Elasticsearch,则可以安全地忽略它。

     Elasticsearch使用许多文件描述符(file descriptors )或文件句柄(file handles)。文件描述符用尽可能是灾难性的,很可能导致数据丢失。确保将运行Elasticsearch的用户的打开文件描述符数限制增加到65,536或更高。

     /etc/security/limits.conf中修改Configuring system settings | Elasticsearch Guide [8.9] | Elastic

   3.3 虚拟内存

    Elasticsearch mmapfs默认使用目录来存储其索引。默认的操作系统对mmap计数的限制可能太低,这可能会导致内存不足异常,Linux上,您可以通过运行以下命令来增加限制 root

  sysctl -w vm.max_map_count=262144

     要永久设置此值,请更新中的vm.max_map_count设置 /etc/sysctl.conf。要在重启后进行验证,请运行sysctl vm.max_map_count

   3.4 线程数

    Elasticsearch对不同类型的操作使用许多线程池。能够在需要时创建新线程很重要。确保Elasticsearch用户可以创建的线程数至少为4096。在linux设置路径/etc/security/limits.conf,启动Elasticsearch之前设置为root来设置

四.将节点加入群集

  当启动Elasticsearch实例时,就是在启动node。Elasticsearch 集群 是一组具有相同cluster.name属性的节点。当节点加入或离开群集时,群集会自动重新组织以在可用节点之间平均分配数据。

  如果您运行的是Elasticsearch的单个实例,那么您将拥有一个节点的集群。所有主分片都驻留在单个节点上。无法分配副本分片,因此群集状态保持黄色。群集可以完全正常运行,但是如果发生故障,则存在数据丢失的风险。

  将节点添加到群集以增加其容量和可靠性。默认情况下,节点既是数据节点,又有资格被选为控制群集的主节点。 将更多节点添加到群集时,它将自动分配副本分片。当所有主分片和副本分片均处于活动状态时,集群状态变为绿色

  要将节点添加到集群:

  (1) 设置一个新的Elasticsearch实例

  (2) 在其cluster.name属性中指定集群的名称。例如,要将节点logging-prod加入集群,在elasticsearch.yml中设置cluster.name: "logging-prod" 。

  (3) 启动Elasticsearch。节点自动发现并加入指定的集群

 五.安全设置

  5.1 第一步配置启用安全

#------------------------------security-----------------------
  xpack.security.enabled: true
  xpack.license.self_generated.type: basic
  xpack.security.transport.ssl.enabled: true
  

  5.2 bat文件第二步

  5.3 最后所有设置密码:

    5.4 如果要修改密码如下所示:

      curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值