elasticsearch安装

elasticsearch 安装

这里主要是讲docker方式的安装部署

通过Docker安装Elasticsearch

1
2
3
docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.13.3
docker run -itd --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.13.3

如果希望在主机上管理容器的配置,
可新增-v $PWD/conf/:/usr/share/elasticsearch/config/,
把主机当前目录下的conf文件夹挂载容器的配置文件夹

1
docker run -itd --name es01-test --net elastic -v $PWD/conf/:/usr/share/elasticsearch/config/ -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.13.3

如果需要可视化管理,可安装Kibana,和elasticsearch在同一个网络中,同理,如需管理配置,可加卷-v

1
2
docker pull docker.elastic.co/kibana/kibana:7.13.3
docker run -itd --name kib01-test --net elastic -p 5601:5601 -v $PWD/conf/:/usr/share/kibana/config/ -e "ELASTICSEARCH_HOSTS=http://es01-test:9200" docker.elastic.co/kibana/kibana:7.13.3

过一段时间后,可访问http://localhost:5601。

用docker-compose 启动一个集群

  • 这里是启动一个有三个elasticsearch节点的集群的docker-compose.yml
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.3
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.3
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.3
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic

volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local

networks:
elastic:
driver: bridge

此示例 docker-compose.yml 文件使用 ES_JAVA_OPTS 环境变量手动将堆大小设置为 512MB。Docker Compose 文件启动了一个三节点 Elasticsearch 集群。节点 es01 侦听 localhost:9200 并且 es02 和 es03 通过 Docker 网络与 es01 对话。

  • 通过指令启动容器
1
docker-compose up

到此为止,我们已经启动了一个可运行的elasticsearch服务了。我们的elasticsearch所保存的数据,如果是敏感的,一般不能随意让任何人都能够访问到,我们需要做下安全设置。

安全设置

注册证书

首先,我们需要注册一个证书。官方给了我们几个等级的证书,示例只需用到基础证书。我们需要在elasticsearch.yml文件中开启。

传送门

1
xpack.license.self_generated.type: basic

如果你想体验更多功能,官方提供了30天免费的试用版证书,类型改为trial

启动elasitcsearch安全设置

在注册证书的前提下,系统默认是不开启安全设置,我们需要使用到服务的安全特性时,需要修改配置。这里以官方给的最小安全设置为准,为服务的内建用户分配密码。设置成功后,所有和elasticsearch链接的服务,都需要凭借用户名和密码。

  • 首先启动安全设置
1
xpack.security.enabled: true
  • 指明当前elasticsearch的节点架构

我当前是只有一个节点的,所以配置为:

1
discovery.type: single-node

此设置可确保您的节点不会无意中连接到可能在您的网络上运行的其他集群。

  • 为内建用户创建密码

当前比较重要的是elastickibana_system两个内建用户

我们确保elasticsearch已经起来了

1
./bin/elasticsearch

然后启动密码设置程序,使用 auto 参数将随机生成的密码输出到控制台,您可以稍后根据需要进行更改

1
./bin/elasticsearch-setup-passwords auto

如果想直接自己设置密码,将auto改成interactive, 会有引导协助你完成密码的设置。

当我们完成所有密码设置之后,其他服务连上elasticsearch都需要密码了。接下来是kibana的连接设置

启动Kibana的安全设置

  • 指定elasticsearch的内建用户

我们找到kibana的配置文件,添加以下的配置项:

1
elasticsearch.username: "kibana_system"
  • 为该用户创密钥库,并认证该用户
1
elasticsearch.username: "kibana_system"
1
./bin/kibana-keystore add elasticsearch.password

该步骤会让你输入此前你为kibana_system用户录入的密码。

  • 重启kibana
1
./bin/kibana

我们重新访问http://localhost:5601。
发现页面变成了登录页,用elastic用户,即可登录。