Docker部署Elasticsearch

前言

本篇文章记录下自己部署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

原文地址:https://www.cnblogs.com/chinalxx/p/10348297.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软公司开放服务结构中有关数据库的一个组成部分,是数据库访问接口标准。ODBC是基于C语言实现的。提供了语言和数据库进行交互的一致性的接口,便于语言和数据库通信以及语言对数据库的各种操作。第二种方式:JDBC(本章重点)在Java中,
JDBCRequest 使用VariableNamesmysql:数据库连接池对象variousname:设置的变量名称 如何使用该变量a_#、b_#、c_#、d_#:代表行数a_1:第1行、第1列b_2:第2行、第2列
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术:具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。JDBC是数据库与Java代码的桥梁。JDBC中定义了操作数据库的各种接口和类型:增删改基本操作:(1)获取连接:Connectionconnection=
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java...连接驱动(必须要导入)<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></depend
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。在Java工作流引擎中可谓是主流,我们的项目也是使用的这个框架进行流程相关的开发。与流程息息相关的就是我们的流程定义BPMN文件,包含有一系列
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:面向应用的API:JavaAPI,抽象接口,供应用开发人员使用(连接数据库,执行SQL语句,获得结果)面向数据库的API:JavaDriverAPI,供开发商开发数据库驱动程序JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接
原文链接JDBC一般指Java数据库连接(JavaDatabaseConnectivity)api应用程序接口(API):可以调用或者使用类/接口/方法等去完成某个目标。API制定的类/方法可以做什么。API由开发人员调用。spi服务提供接口(SPI):需要继承或实现某些类/接口/方法等去完成某个目标。SPI告诉你
spring.shardingsphere.datasource.names=#省略数据源配置,请参考用法#标准分表配置spring.shardingsphere.rules.sharding.tables.<table-name>.actual-data-nodes=#描述数据源名称和实际表,分隔符为点,多个数据节点用逗号分隔,支持内联表达式。Absent表示仅对数据库进行分片
1问题Cannotloaddriverclass:com.mysql.cj.jdbc.Driver 2解决方案2.1已解决2.1.1首先,去查看项目中MySQL的版本如果找不到,说明可能还没有jdbc驱动,需要配置或者引入       (1)如果是直接引用的jar包,就去lib文件夹中查看,后缀是版
JDBC一、JDBC概述什么是JDBC?JDBC是使用Java语言操作关系型数据库的一套API。这套API是交由不同的数据库厂商实现的。我们利用JDBC编写操作数据库的代码,真正执行的是各个数据库的实现类(驱动)。全称:(JavaDataBaseConnectivity)Java数据库连接。JDBC的好处面向接口编
说明:/*需要引入依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency>*/代码:objec
1.概要在“配置元件”中添加“JDBCConnectionConfiguration”。配置如下图: 2.重点:配置人大金仓数据库连接下面着重介绍人大金仓数据库连接配置:DatabaseURL输入:jdbc:kingbase8://192.132.180.101:54321/hj_yc   (备注:应输入 jdbc:kingbase8://IP:
JDBC概念:JavaDataBaseconnectivityJava数据库连接,Java语言操作数据库JDBc本质∶其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
Mybatis核心配置文件习惯上命名mybatis-config.xml,整合Spring之后,整个配置文件可以省略核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息标签顺序顺序出错会报错propertiessettingstypeAliasestypeHandlersobjectFactoryobjectWrapperFa
JDBC1.概念:JavaDataBaseConnectivityJava数据库连接,Java语言操作数据库JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
  1.出现这个问题的原因 :在安装mysql的时候时区设置的不正确,mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式使用的数据库是MySQL,没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12很高的版本,这是由于数据库和系统时区差异所造成的,在jdbc连
一、环境准备1.数据库创建2个库2个表:xdclass_shop_order_0product_order_0product_order_1ad_configproduct_order_item_0product_order_item_1xdclass_shop_order_1product_order_0product_order_1ad_configproduct_order_item_0product_order_item_1数据
编写配置文件(application.yml)spring:datasource:username:rootpassword:123456url:jdbc:mysql://localhost:3306/mybatis?useUnicode&characterEncoding=utf-8driver-class-name:com.mysql.cj.jdbc.Driver测试连接@SpringBootTestclassSprin
结构图pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/
MySql链接url参数详解 jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]... 常用的几个较为重要的参数: 参数名称参数说明缺省值最低版本要求 user 数据库用户名(用于连接数据库) 所有版本passWord用户密码(用于连接