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 对话。
到此为止,我们已经启动了一个可运行的elasticsearch服务了。我们的elasticsearch所保存的数据,如果是敏感的,一般不能随意让任何人都能够访问到,我们需要做下安全设置。
安全设置
注册证书
首先,我们需要注册一个证书。官方给了我们几个等级的证书,示例只需用到基础证书。我们需要在elasticsearch.yml文件中开启。
传送门
1
| xpack.license.self_generated.type: basic
|
如果你想体验更多功能,官方提供了30天免费的试用版证书,类型改为trial。
启动elasitcsearch安全设置
在注册证书的前提下,系统默认是不开启安全设置,我们需要使用到服务的安全特性时,需要修改配置。这里以官方给的最小安全设置为准,为服务的内建用户分配密码。设置成功后,所有和elasticsearch链接的服务,都需要凭借用户名和密码。
1
| xpack.security.enabled: true
|
我当前是只有一个节点的,所以配置为:
1
| discovery.type: single-node
|
此设置可确保您的节点不会无意中连接到可能在您的网络上运行的其他集群。
当前比较重要的是elastic、kibana_system两个内建用户
我们确保elasticsearch已经起来了
然后启动密码设置程序,使用 auto 参数将随机生成的密码输出到控制台,您可以稍后根据需要进行更改
1
| ./bin/elasticsearch-setup-passwords auto
|
如果想直接自己设置密码,将auto改成interactive, 会有引导协助你完成密码的设置。
当我们完成所有密码设置之后,其他服务连上elasticsearch都需要密码了。接下来是kibana的连接设置
启动Kibana的安全设置
我们找到kibana的配置文件,添加以下的配置项:
1
| elasticsearch.username: "kibana_system"
|
1
| elasticsearch.username: "kibana_system"
|
1
| ./bin/kibana-keystore add elasticsearch.password
|
该步骤会让你输入此前你为kibana_system用户录入的密码。
我们重新访问http://localhost:5601。
发现页面变成了登录页,用elastic用户,即可登录。