docker部署elasticsearch(代码片段)

chinalxx chinalxx     2023-03-03     792

关键词:

前言

本篇文章记录下自己部署ES引擎的步骤。希望能给各位带来一点帮助。

安装Docker

yum install docker
  • 默认docker镜像文件及数据文件存放位置在/var/lib/docker目录下面

    若该磁盘下容量不大,修改docker的数据卷位置(例:迁移到/data/docker目录下):

systemctl disable docker
systemctl stop docker
mkdir /data/docker
cp -R /var/lib/docker /data/docker
vi /lib/systemd/system/docker.service
在ExecStart 后面添加 --graph /data/docker
systemctl daemon-reload
systemctl start docker 
systemctl enable docker

可以通过docker info 查看Docker Root Dir 来查看是否修改成功

安装ES

制作镜像文件

中文插件使用IK插件,使用Dockerfile来制作镜像文件,Dockerfile如下:

FROM elasticsearch:6.5.3

RUN ./bin/elasticsearch-plugin install -b https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.3/elasticsearch-analysis-ik-6.5.3.zip

EXPOSE 9200
EXPOSE 9300

构建镜像:

docker build -t elasticsearch-ik:6.5.3 .
docker save -o elasticsearch-ik.tar containerID

在服务器上部署镜像文件:

  1. 加载images
docker load -i elasticsearch-ik.tar -o elasticserch-ik:6.5.3

直接使用docker run 可能会出现以下问题:

ERROR: [4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [1024] for user [hadoop] is too low, increase to at least [2048]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
# 会出现其中的一个或多个

解决方法:

[1]文件描述符 => 修改/etc/security/limits.conf配置
esuser   soft  nofile  65536   # soft表示为超过这个值就会有warnning
esuser   hadr  nofile  100000  # hard则表示不能超过这个值

[2]线程数 => 修改/etc/security/limits.conf配置
esuser   soft  nproc   2048   # soft表示为超过这个值就会有warnning
esuser   hard  nproc   4096  # hard则表示不能超过这个值

[3]虚拟内存 => 修改配置文件/etc/sysctl.conf
vm.max_map_count=262144

[4]system call filters =>
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

修改完毕之后重启虚拟机
esuser这个用户酌情修改

  1. 运行镜像:
mkdir /data/es
cd /data/es
docker run -p 9200:9200 -p 9300:9300 --name es-ik -v $PWD/conf:/config -v $PWD/logs:/logs -v $PWD/data:/data --privileged=true -d containerID

安装mysql

  • 使用docker安装
docker pull mysql:5.7
mkdir /data/mysql
cd /data/mysql
docker run -p 3306:3306 --name mysql5.7 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d containerID --lower_case_table_names=1

-e MYSQL_ROOT_PASSWORD=123456 初始化mysql root账号的密码,务必修改!!!务必修改!!!务必修改!!!
--lower_case_table_names=1 酌情添加,这个目的是为了让mysql不区分大小写,这里建议不添加,在my.cnf里面配置

安装Logstash

制作镜像文件:

使用logstash-input-jdbc插件来进行数据同步:

FROM logstash:6.5.3

RUN ./bin/logstash-plugin install logstash-input-jdbc

RUN sed -i ‘s/^/#&/g‘ config/logstash.yml

CMD ["-f", "/config/logstash-mysql.conf"]

构建镜像:

docker build -t logstash-jdbc:6.5.3 .
docker save -o logstash-jdbc.tar containerID

在服务器上部署镜像文件:

  1. 加载images
docker load -i logstash-jdbc.tar -o logstash-jdbc:6.5.3
  1. 下载mysql jar包:
mkdir /usr/local/logstash/conf
cd /usr/local/logstash/conf
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.zip
unzip mysql-connector-java-5.1.47.zip #解压缩
cd mysql-connector-java-5.1.47
mv mysql-connector-java-5.1.47-bin.jar ../conf
  1. 编写logstash-input-jdbc配置文件:
vi logstash-mysql.conf

input
     jdbc
        jdbc_driver_library => "/config/mysql-connector-java-5.1.47-bin.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://mysqlIP:3306/table?characterEncoding=UTF-8&useSSL=false"
        jdbc_user => "root"
        jdbc_password => "123456"
        jdbc_default_timezone => "Asia/Shanghai"
        statement => "select field1,field2 from table where updateTime > :sql_last_value"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        schedule => "0 4 * * *"
   
 
output
    stdout
        codec => json_lines
    
    elasticsearch
        hosts => ["esip:9200"]
        index => "index"
        document_type => "document_type"
        document_id => "%uuid"
    

mysqlIP 和esip可以通过docker inspect containerID 来查看,修改之

  1. 运行镜像:
docker run -d -P --name logstash-jdbc --privileged=true -v /usr/local/logstash/conf:/config containerID

参考资料

[1]:https://github.com/medcl/elasticsearch-analysis-ik
[2]:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html




docker简单部署elasticsearch(代码片段)

一、ElasticSearch是什么?Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch不仅仅是Lucene和全文搜索... 查看详情

docker简单部署elasticsearch(代码片段)

一、ElasticSearch是什么?Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch不仅仅是Lucene和全文搜索... 查看详情

docker部署elasticsearch(代码片段)

...使用IK插件,使用Dockerfile来制作镜像文件,Dockerfile如下:FROMelasticsearch:6.5.3RUN./bin/elasticsearch-plugininstall-bhttps://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.3/elas 查看详情

elasticsearch7docker集群部署(代码片段)

背景在日志分析中常用中间件ELK,工作中需要部署一套elastic7集群用于存储数据。搭建过程如下。镜像版本elasticsearch:7.16.2kibana:7.16.2部署地址:192.168.20.20/192.168.20.21/192.168.20.22创建目录sudomkdir-p/app/server/elasticsearch/temp/configs 查看详情

转docker简单部署elasticsearch(代码片段)

一、ElasticSearch是什么?Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch不仅仅是Lucene和全文搜索... 查看详情

docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本(代码片段)

docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本一、什么是memcachedMemcached是一个通用的分布式内存缓存系统。它通常用于通过在RAM中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取... 查看详情

docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本(代码片段)

docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本一、什么是memcachedMemcached是一个通用的分布式内存缓存系统。它通常用于通过在RAM中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取... 查看详情

docker-compose快速部署elasticsearch-8.x集群+kibana(代码片段)

...):https://github.com/zq2599/blog_demos本篇概览前文《Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)》介绍了用docker快速部署es和kibana的过程,然而整个过程人工操作步骤还是多了点,能不能更简单些呢ÿ 查看详情

elasticsearch(十六):在docker中构建elasticsearch集群(代码片段)

项目中用到Elasticsearch提供索引搜索服务,由于项目要部署在docker中,希望elasticsearch也能够搭建在docker环境中,经过学习,成功在docker环境中完成elasticsearch集群环境的搭建。特将搭建过程记录如下:参考文章:https://segmentfault.com... 查看详情

docker安装部署elk教程(elasticsearch+kibana+logstash+filebeat)(代码片段)

作者:万能付博 链接:Docker安装部署ELK教程(Elasticsearch+Kibana+Logstash+Filebeat)ELK是由Elasticsearch、Logstash和Kibana三部分组件组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索... 查看详情

使用docker部署elasticsearch与kibana

部署ElasticSearch1.拉取ElasticSearchdockerpullelasticsearch:7.4.22.创建挂载目录mkdir-p/usr/local/docker/elasticsearch/configmkdir-p/usr/local/docker/elasticsearch/datamkdir-p/usr/local/docker/elasticsearch/plug 查看详情

docker安装部署elk教程(elasticsearch+kibana+logstash+filebeat)(代码片段)

ELK是由Elasticsearch、Logstash和Kibana三部分组件组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash是一个完全... 查看详情

docker方式部署elk(代码片段)

1.拉取原始镜像:dockerpullsebp/elk:6602.启动下镜像方便进入,进行自定义配置修改:dockerrun-dit--nameelk\\-p5601:5601\\-p9200:9200\\-p5044:5044\\-v/data/elasticsearch:/var/lib/elasticsearch\\-v/etc/localtime:/etc/localtime\\sebp/ 查看详情

docker部署kibana(代码片段)

Docker部署Kibana本篇主要介绍使用Docker部署kibana用于操作Elasticsearch使用.1.前置准备1.1Elasticsearch准备可以先准备一个Elasticsearch服务后续用于使用Kibana去连接它操作,本篇就不展开了1.2查看Elasticsearch和Kibana的版本关系https://www.elastic.co... 查看详情

ubuntu环境下用docker从0到1部署elasticsearch7集群(代码片段)

...       博主爆肝了几个晚上,从0到1,终于把elasticsearch集群整出 查看详情

玩转elasticsearch之服务集群搭建实例(代码片段)

...集群部署部署镜像安装cerebro测试前言没什么就是来玩玩ElasticSearch来look。顺便记录一下,就非常nice,顺便放松一下,水一篇博客~。环境阿里云centos82核8G连接工具FinalShell这个是非常干净的服务器,咱们刚刚创建的... 查看详情

玩转elasticsearch之服务集群搭建实例(代码片段)

...集群部署部署镜像安装cerebro测试前言没什么就是来玩玩ElasticSearch来look。顺便记录一下,就非常nice,顺便放松一下,水一篇博客~。环境阿里云centos82核8G连接工具FinalShell这个是非常干净的服务器,咱们刚刚创建的... 查看详情

玩转elasticsearch之服务集群搭建实例(代码片段)

...集群部署部署镜像安装cerebro测试前言没什么就是来玩玩ElasticSearch来look。顺便记录一下,就非常nice,顺便放松一下,水一篇博客~。环境阿里云centos82核8G连接工具FinalShell这个是非常干净的服务器,咱们刚刚创建的... 查看详情