三台机器

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
  1. user为运行elasticsearch的用户
  2. 对于远程连接用户(使用putty等工具登陆服务器)来说设置好后退出当前对话(session),非远程连接用户重启机器。
  3. 然后使用,命令ulimit -a检查是否设置成功