三台机器

192.168.56.105
192.168.56.106
192.168.56.107

所有之前先运行下面指令,(防止jvm报错)

1
2
3
4
5
sysctl -w vm.max_map_count=262144

#只是测试,所以临时修改,永久修改使用下面
echo vm.max_map_count=262144 >> /etc/sysctl.conf
sysctl -p
  • es-node1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # 集群名称,相同名称为一个集群
    cluster.name: elasticsearch-cluster
    # 节点名称,集群模式下每个节点名称唯一
    node.name: es-node1
    # 监听地址,用于访问该es,0.0.0.0代表不限制
    network.host: 0.0.0.0
    # 表示这个节点是否可以充当主节点
    node.master: true
    # 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)
    network.publish_host: 192.168.56.105
    # 设置对外服务的http端口,默认为9200
    http.port: 9200
    # 设置节点间交互的tcp端口,默认是9300
    transport.tcp.port: 9300
    # 是否支持跨域,默认为false
    http.cors.enabled: true
    # 当设置允许跨域,默认为*,表示支持所有域名,如果只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
    http.cors.allow-origin: "*"
    # 是否充当数据节点
    node.data: false
    #es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点,这个是 transport.tcp.port 端口,而不是 http.port
    discovery.zen.ping_timeout: 10s #设置集群中自动发现其他节点时ping连接的超时时间
    discovery.seed_hosts: ["192.168.56.105:9300","192.168.56.106:9300","192.168.56.107:9300"]
    #es7.x 之后新增的配置,初始化几个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["192.168.56.105"]
    # 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Lengt
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Lengt
    #锁内存,提前占用内存(todo:bootstrap checks failed. You must address the points described in the following)
    #bootstrap.memory_lock: true
  • es-node2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # 集群名称,相同名称为一个集群
    cluster.name: elasticsearch-cluster
    # 节点名称,集群模式下每个节点名称唯一
    node.name: es-node2
    # 监听地址,用于访问该es,0.0.0.0代表不限制
    network.host: 0.0.0.0
    # 表示这个节点是否可以充当主节点
    node.master: false
    # 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)
    network.publish_host: 192.168.56.106
    # 设置对外服务的http端口,默认为9200
    http.port: 9200
    # 设置节点间交互的tcp端口,默认是9300
    transport.tcp.port: 9300
    # 是否支持跨域,默认为false
    http.cors.enabled: true
    # 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
    http.cors.allow-origin: "*"
    # 是否充当数据节点
    node.data: true
    #es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点,注意这个是 transport.tcp.port 端口,而不是 http.port
    discovery.zen.ping_timeout: 10s #设置集群中自动发现其他节点时ping连接的超时时间
    discovery.seed_hosts: ["192.168.56.105:9300","192.168.56.106:9300","192.168.56.107:9300"]
    #es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["192.168.56.105"]
    # 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Lengt
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Lengt
    #锁内存,提前占用内存
    #bootstrap.memory_lock: true
  • es-node3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # 集群名称,相同名称为一个集群
    cluster.name: elasticsearch-cluster
    # 节点名称,集群模式下每个节点名称唯一
    node.name: es-node3
    # 监听地址,用于访问该es,0.0.0.0代表不限制
    network.host: 0.0.0.0
    # 表示这个节点是否可以充当主节点
    node.master: false
    # 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)
    network.publish_host: 192.168.56.107
    # 设置对外服务的http端口,默认为9200
    http.port: 9200
    # 设置节点间交互的tcp端口,默认是9300
    transport.tcp.port: 9300
    # 是否支持跨域,默认为false
    http.cors.enabled: true
    # 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
    http.cors.allow-origin: "*"
    # 是否充当数据节点
    node.data: true
    #es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点,注意这个是 transport.tcp.port 端口,而不是 http.port
    discovery.zen.ping_timeout: 10s #设置集群中自动发现其他节点时ping连接的超时时间
    discovery.seed_hosts: ["192.168.56.105:9300","192.168.56.106:9300","192.168.56.107:9300"]
    #新集群初始时的候选主节点,es7的新增配置
    cluster.initial_master_nodes: ["192.168.56.105"]
    # 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Lengt
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Lengt
    #锁内存,提前占用内存
    # bootstrap.memory_lock: true

docker

docker-compose up -d

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: '3'
services:
elasticsearch:
image: elasticsearch:7.14.0
container_name: elasticsearch
privileged: true
logging:
driver: "json-file"
options:
max-size: "200m"
environment:
- ES_JAVA_OPTS=-Xms2048m -Xmx2048m
- TZ=Asia/Shanghai
- COMPOSE_PROJECT_NAME=elk-server
volumes:
- /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /mydata/elasticsearch/data:/usr/share/elasticsearch/data
- /mydata/elasticsearch/logs:/usr/share/elasticsearch/logs
- /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300

GET /_cat/health?help -> 查看各参数含义

锁定内存后报错: bootstrap checks failed. You must address the points described in the following
参见

  1. 添加以下两行到/etc/security/limits.conf文件中
    1
    2
    user soft memlock unlimited
    user hard memlock unlimited
  2. user为运行elasticsearch的用户
  3. 对于远程连接用户(使用putty等工具登陆服务器)来说设置好后退出当前对话(session),非远程连接用户重启机器。
  4. 然后使用,命令ulimit -a检查是否设置成功