ES在docker中部署

部署Elasticsearch

拉取部署Elasticsearch:

1
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0

运行:

1
2
PS C:\Users\hua> docker run -d --name Elasticsearch-7.3 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.0
0c93badc5f5f3474e79ebd5711e4173a8492c5cc66a39540be44db0f5a5e0d0d

配置跨域:

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
PS C:\Users\hua> docker exec -it Elasticsearch-7.3 /bin/bash
[root@0c93badc5f5f elasticsearch]# ls
LICENSE.txt NOTICE.txt README.textile bin config data jdk lib logs modules plugins

[root@0c93badc5f5f elasticsearch]# cd config/
[root@0c93badc5f5f config]# ll
total 28
-rw-rw---- 1 elasticsearch root 199 Aug 14 05:42 elasticsearch.keystore
-rw-r--r-- 1 elasticsearch root 53 Jul 24 18:32 elasticsearch.yml
-rw-rw---- 1 elasticsearch root 3524 Jul 24 18:26 jvm.options
-rw-r--r-- 1 elasticsearch root 7543 Jul 24 18:32 log4j2.properties
-rw-rw---- 1 elasticsearch root 473 Jul 24 18:32 role_mapping.yml
-rw-rw---- 1 elasticsearch root 197 Jul 24 18:32 roles.yml
-rw-rw---- 1 elasticsearch root 0 Jul 24 18:32 users
-rw-rw---- 1 elasticsearch root 0 Jul 24 18:32 users_roles
[root@0c93badc5f5f config]# vi elasticsearch.yml

# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

#保存退出
[root@0c93badc5f5f config]# exit
exit
#重启
PS C:\Users\hua> docker restart Elasticsearch-7.3
Elasticsearch-7.3

浏览,http://127.0.0.1:9200/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"name" : "0c93badc5f5f",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "C1imvsbpT36iC98Yd2nEyQ",
"version" : {
"number" : "7.3.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "de777fa",
"build_date" : "2019-07-24T18:30:11.767338Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
部署kibana

拉取:

1
docker pull docker.elastic.co/kibana/kibana:7.3.0

部署:

1
2
3
4
5
6
7
8
9
10
11
12
13
PS C:\Users\hua> docker run --name kibana-7.3 -d -p 5601:5601 --link Elasticsearch-7.3 -e "ELASTICSEARCH_URL=http://127.0.0.1:9200" 8bcee4a4f79d
071ee706a4a22b548c409d3ee06e1890a7ed5239a56a49a85449a140b6431745
PS C:\Users\hua> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3443c83c30c4 8bcee4a4f79d "/usr/local/bin/kiba…" 32 seconds ago Up 30 seconds 0.0.0.0:5601->5601/tcp kibana-7.3
0c93badc5f5f docker.elastic.co/elasticsearch/elasticsearch:7.3.0 "/usr/local/bin/dock…" 19 minutes ago Up 8 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp Elasticsearch-7.3

#进入容器配置
PS C:\Users\hua> docker exec -it c69996736e3b /bin/bash
bash-4.2$ vi config/kibana.yml

编辑 config\kibana.yml 配置文件,将配置项 elasticsearch.hosts 的地址改成 Elasticsearch 地址。不要使用 location、127.0.0.1 或者容器名:端口,这样是无法访问的,会造成 Kibana 的 [Kibana server is not ready yet] 错误。
启动成功后访问 ip:5601 看到 Kibana 界面即表示安装成功。

浏览: http://192.168.6.238:5601

部署Head
1
2
3
PS C:\Users\hua> docker pull mobz/elasticsearch-head:5
PS C:\Users\hua> docker run -di --name myhead -p 9100:9100 b19a5c98e43b
85fc9db69f43cea485b0a61004a296469727847f4563260cf09a4561c89c8bea

Sense

Sense是一款Kibana应用。要启动并运行,首先需要下载Kibana并按照此处的说明进行安装。您将需要Kibana 4.2或更高版本。安装Kibana后,您可以从Kibana文件夹中运行Sense运行以下命令:

$./bin/kibana plugin –install elastic/sense

这将下载并安装最新版本的Sense。

你现在需要开始Kibana:

$ ./ bin / kibana
您现在应该可以使用http:// localhost:5601 / app / sense上的Web浏览器访问Sense (如果您在Kibana中以不同方式配置它们,则替换主机和端口)。

这里写图片描述

可以看到在内存为2G的主机上,Elasticsearch的运行内存为 -Xms256m -Xmx1g

内存优化

查看内存 ps -ef|grep elasticsearch
1、设置内存:指定ES_HEAP_SIZE环境变量。服务进程在启动时候会读取这个变量,并相应的设置堆的大小。设置命令:export ES_HEAP_SIZE=1g

2、可以在启动程序时限制内存大小,并不是每个情况都可以成功的,命令行如下 ./elasticsearch -Xms256m -Xmx256m -d

备注: 设置时Xmx和Xms相同,目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源,可以减轻伸缩堆大小带来的压力。 一般来说设置ES_HEAP_SIZE环境变量,比直接写-Xmx10g -Xms10g更好一点。