kibana链接不上elasticseacher配置!!配置elasticseacher可以跨域访问!(xjh 测过)

时间:2022-08-28 18:02:54
为了能调整我们应用的性能,可能我们必须要对elasticsearch的配置文件做一些相关配置以达到我们需要的. elasticsearchjavalinux

目录[-]

  • 1.虚拟内存
  • 2.配置elasticsearch
  • 3.配置http接口的数据操作。
  • 4.设置索引缓冲区
  • 5.设置管理recovery的策略:
  • 6.设置对存储进行限流:
  • 7.network设置
  •  8.cloud-aws
  • 9.tcp设置
  • 1.虚拟内存

    在linux系统上,elasticsearch默认使用hybrid mmapfs / niofs来存储索引文件,因此操作系统主要会通过mmap来限制存储的空间,因此如果存储空间满了,那么会抛出异常,我们可以使用如下命令来更改设置

    sysctl -w vm.max_map_count=262144

    当然我们还可以修改/etc/sysctl.conf配置文件修改上述参数

    注意在linux下我们一般会设置swap,但是设置swap会对elasticsearch的node性能产生影响,因此建议把swap关闭.

    第二种方案也可以设置sysctl.conf中vm.swappiness需要设置为1

    第三种方案可以在elasticsearch.yml配置文件修改bootstrap.mlockall:true

    设置完之后,我们可以使用如下命令,查看bootstrap.mlockall是否生效

    curl http://localhost:9200/_nodes/process?pretty

    2.配置elasticsearch

    2.1在elasticsearch.yml中我们可以设置

    path:        logs:/var/logs/elasticsearch        data:/var/data/elasticsearch        plugins:/var/data/plugins        conf:/etc/conf

    因此我们可以看出我们将日志输出到/var/logs/elasticsearch,将索引数据保存在/var/data/elasticsearch目录下,插件加载的位置设置为/var/data/plugins,配置文件放置位置设置为/etc/conf。

    当然我们还能直接path.logs:/var/logs/elasticsearch这样配置

    2.2配置集群名称,节点名称

    cluster:    name:mycluster
    node:    name:mynode

    上述设置了集群名称为mycluster,当前elasticsearch的节点名称为mynode

    2.3设置索引存储方式

    index:    store:        type:memory

    在这里我们设置ile索引的存储方式是内存,其实这样设置在yml文件中不是一个很好的配置,因为配置后,会对之后我们创建的所有索引都会以memory来存储,因此最好的设置是使用http接口对指定的数据库进行配置

    比如:

    $ curl -XPUT http://localhost:9200/kimchy/ -d \'index :    store:        type: memory'

    也就是对数据库kimchy设置存储方式为memory。

    3.配置http接口的数据操作。

    3.1一般我们会通过http接口api形式对索引数据进行crud操作,这个时候我们要配置elasticsearch.yml中的http模块。

    http.enabled:true

    其他相关配置参数

    http.port http绑定端口,默认可以设置9200-9300这个范围
    http.bind_host 绑定的http服务的域名。默认跟http.host或者network.bind_host一样
    http.publish_host 客户端访问的http地址,默认和http.host或network.publish_host一致
    http.host 用来设置http.bind_host和http.publish_host
    http.max_content_length http请求的最大内容大小
    http.max_initial_line_length http地址访问url的最大长度,默认为4kb
    http.compression 是否支持压缩 (用 Accept-Encoding). 默认为false
    http.compression_level 定义压缩级别,默认为6
    http.cors.enabled 是否支持跨域,默认为false
    http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
    http.cors.max-age 浏览器发送一个“预检”OPTIONS请求,以确定CORS设置。最大年龄定义多久的结果应该缓存。默认为1728000(20天)
    http.cors.allow-methods 允许跨域的请求方式,默认OPTIONS,HEAD,GET,POST,PUT,DELETE
    http.cors.allow-headers 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Length
    http.cors.allow-credentials 是否返回设置的跨域Access-Control-Allow-Credentials头,如果设置为true,那么会返回给客户端。
    http.pipelining 是否打开HTTP管线化, 默认为true
    http.pipelining.max_events 事件的最大数量被排队在存储器之前一个HTTP连接被关闭时,默认为10000。
       

    4.设置索引缓冲区

    elasticsearch在处理索引的时候会存在一个索引缓冲buffer,我们可以为其设置需要分配的缓冲buffer内存大小,索这是一个全局设置。

    indices.memory.index_buffer_size 接受任何百分比或字节大小值。其默认值为10%,这意味着分配给一个节点的总存储器的10%将被用作索引的缓冲区大小。如果百分比被使用时,也能够设定min_index_buffer_size和max_index_buffer_size
    min_index_buffer_size (默认为48MB)
    max_index_buffer_size

    (默认为*)。

    indices.memory.index_buffer_size

    允许设置为每分片分配给它自己的索引缓冲存储器中的下限。它默认为4MB。

    indices.ttl.interval

    允许设置多久过期的文件会被自动删除。默认值是60s。

    indices.ttl.bulk_size

    设置批量处理的命令大小。默认值是10000。

    5.设置管理recovery的策略:

    indices.recovery.concurrent_streams 默认是3
    indices.recovery.file_chunk_size 默认512kb
    indices.recovery.translog_ops 默认1000
    indices.recovery.translog_size 默认true
    indices.recovery.compress 默认512kb
    indices.recovery.max_bytes_per_sec 默认20mb
    indices.recovery.max_size_per_sec 0.90.1去掉,用indices.recovery.max_bytes_per_sec代替

    6.设置对存储进行限流:

    indices.store.throttle.type 可以是merge (默认), not或者all
    indices.store.throttle.max_bytes_per_sec 默认20mb


    7.network设置

    一个节点的多个模块都用到了网络基本配置,例如transport模块和HTTP模块。 节点级别的网络配置可以用来设置所有基于网络的模块的通用配置(除了被每个模块明确覆盖的那些配置项)。

    network.bind_host用来设置绑定的ip地址, 默认绑定anyLocalAddress (0.0.0.0或者::0)。

    network.publish_host配置其他节点和本节点通信的地址。 这个当然不能是anyLocalAddress, 默认是第一个非回环地址或者本机地址。

    network.host设置是一个简化设置, 它自动设置network.bind_hostnetwork.publish_host为同一个值。

    两个设置都可以配置为主机ip地址或者主机名, 还可以设置为下表中列出来的值。

    local

    本机ip地址

    _non_loopback_

    第一个非loopback地址

    _non_loopback:ipv4_

    第一个非loopback的ipv4地址

    _non_loopback:ipv6_

    第一个非loopback的ipv6地址

    [networkInterface]

    指定网卡的IP地址. 例如 en0

    [networkInterface]:ipv4

    指定网卡的IPv4地址. 例如 en0:ipv4

    [networkInterface]:ipv6

    指定网卡的IPv6地址. 例如 en0:ipv6

    _non_loopback:ipv6_

    第一个非loopback的ipv6地址

     

     8.cloud-aws

     如果安装了cloud-aws插件, 下表列出来值也是有效的设置:

    ec2:privateIpv4 The private IP address (ipv4) of the machine
    ec2:privateDns The private host of the machines
    ec2:publicIpv4 The public IP address (ipv4) of the machine
    ec2:publicDns The public host of the machines
    ec2 Less verbose option for the private ip address
    ec2:privateIp Less verbose option for the private ip address
    ec2:publicIp Less verbose option for the public ip address

    9.tcp设置

    任何使用TCP的组件 (比如HTTP, Transport和Memcached)共享下面的设置:

    network.tcp.no_delay 启用或禁用tcp no delay。 默认是true.
    network.tcp.keep_alive 启用或禁用tcp keep alive。 默认不设置
    network.tcp.reuse_address 地址是否应该被重用,在非windows的机器上默认是true
    network.tcp.send_buffer_size tcp发送缓冲区的大小。 默认不设置
    network.tcp.receive_buffer_size tcp接收缓冲区的大小。 默认不设置