Elasticsearch环境快速搭建以及注意点

本文主要说明使用docker搭建开发用Elasticsearch的相关要点,包含有:

搭建Elasticsearch集群docker环境

搭建Kibana的docker环境

一、搭建Elasticsearch环境

docker下存在两个标准的Elasticsearch镜像,分别为elasticsearch:latest 和 docker.elastic.co/elasticsearch/elasticsearch ,前者目前的Elasticsearch版本为5.*,版本略微落后;后者最新版本为 7.6.0 。

本文使用后者,部署为单节点的集群,并且通过内置x-pack开通SSL安全加密和Basic账号密码登录。

1,首先,创建cert证书,并存储于本地docker volume中备用。

 1 [~/docker-compose/elasticsearch]$ cat create_certs.yaml
 2 version: "3"
 3 services:
 4   create_certs:
 5     image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
 6     command: >
 7       bash -c ‘
 8         yum install -y -q -e 0 unzip;
 9         if [[ ! -f /certs/bundle.zip ]]; then
10           bin/elasticsearch-certutil cert --silent --pem --in config/certificates/instances.yml -out /certs/bundle.zip;
11           unzip /certs/bundle.zip -d /certs;
12         fi;
13         chown -R 1000:0 /certs
14       ‘
15     user: "0"
16     working_dir: /usr/share/elasticsearch
17     volumes:
18       - certs:/certs
19       - .:/usr/share/elasticsearch/config/certificates
20 volumes:
21   certs:

执行上述一次性命令(执行过程中,所需要的instances.yml文件参见下文),并妥善保管该volume(certs)

1 docker-compose -f create_certs.yaml run --rm create_certs

执行成功后,应该可以看见如下结果

1 [~/docker-compose/elasticsearch]$ docker volume ls
2 DRIVER              VOLUME NAME
3 local               elasticsearch_certs

执行过程中,所需要的instances.yml文件如下:

1 [~/docker-compose/elasticsearch]$ cat instances.yml
2 instances:
3   - name: es01
4     dns:
5       - es01
6       - localhost
7     ip:
8       - 127.0.0.1%

注意,其中的es01,应该对应部署es集群节点的服务器的主机名,此处由于是docker环境,因此应该为docker-compose的service的名字(以在docker container中可以正常ping通该字符串到对应container为标准),若集群存在多个节点,则应该列出多个主机名

然后正式启动Elasticsearch集群:

 1 [~/docker-compose/elasticsearch]$ cat docker-compose.yaml
 2 version: "3"
 3 services:
 4   es01:
 5     image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
 6     environment:
 7       # - "discovery.type=single-node"
 8       - node.name=es01
 9       - cluster.name=es-docker-cluster
10       - discovery.seed_hosts=es01
11       - cluster.initial_master_nodes=es01
12       - cluster.max_shards_per_node=10000
13       - bootstrap.memory_lock=true
14       - action.destructive_requires_name=false
15       - ELASTIC_PASSWORD=abc
16       # - ELASTIC_PASSWORD_FILE=/run/secrets/bootstrapPassword.txt
17       - xpack.security.enabled=true
18       - xpack.security.http.ssl.enabled=true
19       - xpack.security.http.ssl.key=/usr/share/elasticsearch/config/certs/es01/es01.key
20       - xpack.security.http.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/ca/ca.crt
21       - xpack.security.http.ssl.certificate=/usr/share/elasticsearch/config/certs/es01/es01.crt
22       - xpack.security.transport.ssl.enabled=true
23       - xpack.security.transport.ssl.verification_mode=none
24       - xpack.security.transport.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/ca/ca.crt
25       - xpack.security.transport.ssl.certificate=/usr/share/elasticsearch/config/certs/es01/es01.crt
26       - xpack.security.transport.ssl.key=/usr/share/elasticsearch/config/certs/es01/es01.key
27       - reindex.remote.whitelist=10.20.1.*:9200,127.0.10.*:9200, localhost:*
28       - "http.cors.enabled=true"
29       - "http.cors.allow-origin=*"
30       - "http.cors.allow-headers=Authorization,X-Requested-With,Content-Length,Content-Type"
31       - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
32     ports:
33       - "9200:9200"
34       - "9300:9300"
35     ulimits:
36       memlock:
37         soft: -1
38         hard: -1
39     volumes:
40       - ./data01:/usr/share/elasticsearch/data
41       - certs:/usr/share/elasticsearch/config/certs
42       - ./plugins:/usr/share/elasticsearch/plugins
43 volumes:
44   certs:
45     driver: local

此处挂载前面步骤创建的certs volume进行使用;

注意:

1)若在前面的步骤中,不创建volume而是直接将证书生成在本地目录,则此地挂在本地目录时,应该妥善处理目录以及其中文件的属主和权限;

2)certs卷必须挂载到路径 /usr/share/elasticsearch/config 下,否则启动时报错,原因为ES安全规则不允许;但若直接挂载为 /usr/share/elasticsearch/config 目录则会覆盖该目录中的其他默认配置文件,因此此处挂载为其子目录

3)对于ES标准配置文件中支持的配置,均可以在environment节中通过环境变量的方式进行配置,当然,也可以提供自己的完整的配置文件(对于docker镜像elasticsearch:latest,提供这些配置的方式为提供command段,以- -Exxxx: xxxx的方式处理)

至此,ES成功启动,可在浏览器中通过  https://localhost:9200 地址进行访问,默认的用户名为  elastic  ,密码在上述配置文件中配置,为 abc  。

注意:

1)在Firefox浏览器和Safari中,需要按照页面提示忽略证书警告

2)在Chrome内核系列浏览器,则根据不同环境和版本而不同,部分可以按照页面提示忽略证书警告,部分需要将浏览器地址栏前报警的SSL证书导入信任证书列表

启动kibana

使用如下docker-compose.yaml启动kibana

 1   kibana:
 2     image: docker.elastic.co/kibana/kibana:7.6.0
 3     environment:
 4       # SERVER_HOST: "0.0.0.0"
 5       ELASTICSEARCH_HOSTS: "https://es01:9200"
 6       ELASTICSEARCH_SSL_VERIFICATIONMODE: none
 7       ELASTICSEARCH_USERNAME: elastic
 8       ELASTICSEARCH_PASSWORD: abc
 9       I18N_LOCALE: zh_CN
10     links:
11       - "es01"
12     ports:
13       - 5601:5601

注意点:

1)kibana的镜像版本需要与ES的版本保持一致;若不一致,不保证不出问题

2)标准kibana的配置文件kibana.yml中的配置,均可以使用Spring的标准配置项的环境变量映射方式在 environment 段进行配置;具体标准简述:字母一律转换为大写,分割用的 . 号和中划线 - 一律转换为下划线 _

至此,部署完毕。

原文地址:https://www.cnblogs.com/oilamp/p/12430814.html

时间: 2024-10-06 12:21:24

Elasticsearch环境快速搭建以及注意点的相关文章

使用logstash+elasticsearch+kibana快速搭建日志平台

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数.执行时间.成功率等 异常数据自动触发消息通知 基于日志的数据挖掘 很多团队在日志方面可能遇到的一些问题有: 开发人员不能登录线上服务器查看详细日志,经过运维周转费时费力 日志数据分散在多个系统,难以查找 日志数据量大,查询速度慢 一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据 数据不够实时 常见的一些重量级的开源

【转载】使用logstash+elasticsearch+kibana快速搭建日志平台

原文链接:http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html 日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数.执行时间.成功率等 异常数据自动触发消息通知 基于日志的数据挖掘 很多团队在日志方面可能遇到的一些问题有: 开发人员不能登录线上服务器查看详细日志,经过运维周转费时费力

maven环境快速搭建(转)

最近,开发中要用到maven,所以对maven进行了简单的学习.因为有个maven高手在身边,所以,很快就上手了,我这里算是自我总结吧.关于maven是什么东东,请参考其它文章. ----------------准备工作------------- Jdk  1.6 java开发环境. Eclipse IDE 一个. Maven 3.1.1 ----//快速搭建步骤 第一步:配置maven环境 将下载文件解压,然后设置maven环境 如果你配置过jdk的话,这里对你应该不难.如我的maven环境为

ubuntu下php开发环境快速搭建

关于快速搭建php环境的步骤:https://jingyan.baidu.com/article/ca00d56c42b78ee99eebcf3c.html. 我遇到的一些问题: 在安装了apache服务器之后,默认apache网站root目录并不是网上所说的 /var/www目录. 解决办法: 使用命令查看相关配置文件: 1 sudo gedit /etc/apache2/apache2.conf 2 sudo gedit /etc/apache2/httpd.conf 3 sudo gedi

vagrant+docker:开发环境快速搭建

快速搭建以下的环境: 目录 VirtualBox Vagrant docker MySQL redis VirtualBox VM环境 Vagrant 成品镜像 $ vagrant box add centos-7 ./centos-7.0-x86_64.box $ vagrant init centos-7 $ vagrant up $ vagrant ssh 修改端口 管理员 $ su root # 密码 vagrant $ whoami 入门案例:https://www.cnblogs.c

Java 以及JEE环境快速搭建

吐槽一下 博主最近找了一个Java Development的实习,加上上个月末的考试周,所以很久没有更新博客. 上了一周的班,还没有在熟悉项目的阶段. 感想:哇,读别人的代码是一件很费力的事情啊!!! 还有就是博主在公司拿到的是新机子,所以所有环境都要重新搭建,故写一篇这个东西来造福一下小白们. IDE 博主一般使用IDEA和Eclipse,所以就以这两个IDE为蓝本来说吧. Java 环境的配置 一定要注意JDK版本问题,应和项目组保持一致. 安装完毕之后,当然就是设置环境变量了. (一)新建

webpack 通用环境快速搭建

能用babel编译es2015 . 能热编译.能加载静态资源(js/css/font/image).是一个很通用的开发环境,虽然不智能.但很好扩展 npm 安装列表: npm install babel-cli babel-core babel-loader babel-preset-es2015 babel-preset-stage-2 css-loader style-loader file-loader webpack-dev-server html-webpack-plugin --sa

Linux平台 Oracle 11g DG测试环境快速搭建参考

环境现状: 两台虚拟主机A和B: 1. A机器已安装ASM存储的Oracle 11g 实例 参考:http://www.cnblogs.com/jyzhao/p/4332410.html 2. B机器已安装系统,配置以及目录结构均和A机器保持一致 /u01 + 3块ASM盘 DG部署规划:   primary standby 主机 JY-DB JY-DBS db_name jyzhao jyzhao db_unique_name jyzhao jyzhao_s instance_name jyz

Linux环境快速搭建RocketMQ双Master模式

RocketMQ的集群部署方式有多种,其中包括单个Master.多个Master.多Master多Slave模式(异步复制)以及多Master多Slave模式(同步双写).本次以多Master集群模式为例搭建一个双机Master的RocketMQ集群环境. 1.双机Master服务器环境 序号 ip 用户名 密码 角色 模式 (1) 10.43.98.34 root nameServer1,brokerServer1 Master1 (2) 10.43.98.38 root nameServer