version: '3'
services:
  elasticsearch:                    # 服务名称
    image: elasticsearch:7.5.1      # 使用的镜像
    container_name: elasticsearch   # 容器名称
    restart: always                 # 失败自动重启策略
    environment:
      - node.name=node1                   # 节点名称,集群模式下每个节点名称唯一
      - network.publish_host=10.0.0.105  # 用于集群内各机器间通信,其他机器访问本机器的es服务
      - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
      - discovery.seed_hosts=10.0.0.105,10.0.0.106,10.0.0.107          # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
      - cluster.initial_master_nodes=10.0.0.105,10.0.0.106,10.0.0.107  # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
      - cluster.name=es-cluster     # 集群名称,相同名称为一个集群
      - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    # 设置内存
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /www/server/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
      - /www/server/elk/data:/usr/share/elasticsearch/data  # 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
    ports:
      - 9200:9200    # http端口
      - 9300:9300    # es节点直接交互的端口,非http
volumes:
  esdata:
    driver: local    # 会生成一个对应的目录和文件,如何查看,下面有说明

否则无权限

chmod 777 /www/server/elk/data 

elasticsearch.yml配置

network.host: 0.0.0.0
http.cors.enabled: true      # 设置跨域,主要用于head插件访问es
http.cors.allow-origin: "*"  # 允许所有域名访问
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

进入容器设置密码

./bin/elasticsearch-setup-passwords interactive

永久设置

  1. 修改系统资源限制
    单用户可以打开的最大文件数量,可以设置为官方推荐的 65536 或更大些
echo "* - nofile 655360" >>/etc/security/limits.conf

单用户内存地址空间

echo "* - as unlimited" >>/etc/security/limits.conf

单用户线程数

echo "* - nproc 2056474" >>/etc/security/limits.conf

单用户文件大小

echo "* - fsize unlimited" >>/etc/security/limits.conf

单用户锁定内存

echo "* - memlock unlimited" >>/etc/security/limits.conf

单进程可以使用的最大 map 内存区域数量

echo "vm.max_map_count = 655300" >>/etc/sysctl.conf

TCP 全连接队列参数设置, 这样设置的目的是防止节点数较多(比如超过 100)的 ES 集群中,节点异常重启时全连接队列在启动瞬间打满,造成节点 hang 住,整个集群响应迟滞的情况

echo "net.ipv4.tcp_abort_on_overflow = 1" >>/etc/sysctl.conf

echo "net.core.somaxconn = 2048" >>/etc/sysctl.conf

降低 tcp alive time,防止无效链接占用链接数

echo 300 >/proc/sys/net/ipv4/tcp_keepalive_time

使/etc/sysctl.conf立即生效

sysctl -p

注意最好关闭swap
关闭方法 请输入链接描述

最后修改:2022 年 03 月 24 日 04 : 19 PM
如果觉得我的文章对你有用,请随意赞赏