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
永久设置
- 修改系统资源限制
单用户可以打开的最大文件数量,可以设置为官方推荐的 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
关闭方法 请输入链接描述