zoukankan      html  css  js  c++  java
  • docker + elasticsearch集群搭建 + logstash mysql数据库同步

    搭建集群

    docker 拉取镜像

    docker pull elasticsearch:2.3.4

    创建数据文件夹和配置用于映射

    [root@localhost soft]# pwd
    /home/soft
    [root@localhost soft]# mkdir -p ES/config
    [root@localhost soft]# cd  ES 
    [root@localhost ES]# mkdir data
    [root@localhost ES]# cd ES/config/
    [root@localhost ES]# firewall-cmd --add-port=9300/tcp
    success

    创建配置文件

    cluster.name: elasticsearch-cluster
    # 节点名称
    node.name: es-node-1
    network.bind_host: 0.0.0.0
    # 节点IP
    network.publish_host: 192.168.0.54
    http.port: 9200
    transport.tcp.port: 9300
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    node.master: true 
    node.data: true  
    # 配置集群
    discovery.zen.ping.unicast.hosts: ["192.168.9.219:9300","192.168.9.219:9301","192.168.9.219:9302"]
    discovery.zen.minimum_master_nodes: 2
    # 指定主节点的名称3版本以上的指定这个会报错
    cluster.initial_master_nodes: es-node-1

    其他节点的配置文件跟这个差不多,改一下iP、节点名就可以

    为了防止 bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 错误需要改一个配置

    vim /etc/sysctl.conf
    
    # 加入
    vm.max_map_count=262144 
    
    # 启动配置
    sysctl -p

    启动容器

    docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /home/soft/ES/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data:/usr/share/elasticsearch/data --restart=always --name ES elasticsearch:2.3.4

    在浏览器地址栏访问http://192.168.0.54:9200/_cat/nodes?pretty 查看节点状态

    搭建可视化界面

    docker pull containerize/elastichd
    
    # 如果本地搭建的es数据库可以使用--link 默认连接到本地数据库
    docker run -p 9800:9800 -d --link elasticsearch:demo containerize/elastichd
    
    # 如果本地没有搭建es数据库,写--link会报错。使用下面命令启动
    docker run -p 9800:9800 -d containerize/elastichd
    
    http://localhost:9800

    搭建mysql同步

    logstash 依赖于jdk1.8以上

    安装jdk

    下载路径

    链接: https://pan.baidu.com/s/1JmauqpR5-uDBIKcSLjmDhw  密码: ojqw
    --来自百度网盘超级会员V6的分享

    解压

    # 将下载的tar.gz 解压到当前路径下
    tar -zxvf jdk-8u201-linux-x64.tar.gz
    '''
    命令介绍:
    tar      备份文件
    -zxvf     
    -z                 通过gzip指令处理备份文件
    -x                 从备份文件中还原文件
    -v                 显示指令执行过程
    -f                  指定备份文件
    jdk-8u201-linux-x64.tar.gz    文件名

    配置环境变量

    #vim 打开profile
    vim /etc/profile
    #在最后一行输入
    export JAVA_HOME=/usr/local/java/jdk1.8.0_231
    export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
    export PATH=$PATH:${JAVA_HOME}/bin
      
    #使配置生效
    source /etc/profile
    
    #检查
    java -version
    java version "1.8.0_231"
    Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

     同步mysql依赖于mysql驱动

    链接: https://pan.baidu.com/s/1B01jJFdFP7JlAaoreWSrUg 密码: vn7d
    --来自百度网盘超级会员V6的分享
    
    # 下载好之后解压出来,记住路径配置到下面的配置文件中

    下载一个跟es数据库版本相匹配的logstash

    官网:https://www.elastic.co/cn/downloads/past-releases/logstash-2-3-4
    
    # 后面三位数字就是版本号,我用的是2.3.4版本的es数据库,所以后面的数字就是2-3-4,根据自己的版本更改就行

    单input配置文件

    input {
        jdbc {
            # 设置 MySql/MariaDB 数据库url以及数据库名称
            jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/database"
            # 用户名和密码
            jdbc_user => "数据库账号"
            jdbc_password => "数据库密码"
            # 数据库驱动所在位置,可以是绝对路径或者相对路径
            jdbc_driver_library => "/root/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar"
            # 驱动类名
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            # 开启分页
            jdbc_paging_enabled => "true"
            # 分页每页数量,可以自定义
            jdbc_page_size => "10000"
            # 执行的sql文件路径
            #statement_filepath => "xxx.log"
            # 执行的sql语句
            statement => "select * from table"
            # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
            schedule => "* * * * *"
            # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
            # use_column_value => true
            # 记录上一次追踪的结果值
            last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time"
            # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
            clean_run => false
            # 数据库字段名称大写转小写
            lowercase_column_names => false
            }
    }
    output {
        elasticsearch {
            # es地址
            hosts => ["192.168.0.54:9200","192.168.0.55:9200","192.168.0.56:9200"]
            # 同步的索引名,这里只需要指定索引名称,会自动创建对应数据库表格式的内容
            index => "索引名称"
            # 设置_docID和数据相同
            document_id => "%{id}"
        }
        # 日志输出
        stdout {
            codec => json_lines
        }
    }

    多input配置

    input {
        jdbc {
            # 设置 MySql/MariaDB 数据库url以及数据库名称
            jdbc_connection_string => "jdbc:mysql://host:端口/库名"
            # 用户名和密码
            jdbc_user => "数据库用户"
            jdbc_password => "数据库密码"
            # 数据库驱动所在位置,可以是绝对路径或者相对路径
            jdbc_driver_library => "/root/utils/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar"
            # 驱动类名
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            # 开启分页
            jdbc_paging_enabled => "true"
            # 分页每页数量,可以自定义
            jdbc_page_size => "10000"
            # 执行的sql文件路径
            #statement_filepath => "路径"
            # 执行的sql语句
            statement => "select * from table"
            # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
            schedule => "* * * * *"
            # 索引类型
            type => "order"
            # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
            # use_column_value => true
            # 记录上一次追踪的结果值
            last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time"
            # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
            # tracking_column => "updated_time"
            # tracking_column 对应字段的类型
            #tracking_column_type => "timestamp"
            # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
            clean_run => false
            # 数据库字段名称大写转小写
            lowercase_column_names => false
            }
    }
    
    input {
        jdbc {
            # 设置 MySql/MariaDB 数据库url以及数据库名称
            jdbc_connection_string => "jdbc:mysql://rm-bp1yng8jhwlt254w0yo.mysql.rds.aliyuncs.com:3306/zhanhong_erp3"
            # 用户名和密码
            jdbc_user => "til"
            jdbc_password => "til$$520"
            # 数据库驱动所在位置,可以是绝对路径或者相对路径
            jdbc_driver_library => "/root/utils/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar"
            # 驱动类名
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            # 开启分页
            jdbc_paging_enabled => "true"
            # 分页每页数量,可以自定义
            jdbc_page_size => "10000"
            # 执行的sql文件路径
            #statement_filepath => "路径"
            # 执行的sql语句
            statement => "select * from table"
            # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
            schedule => "* * * * *"
            # 索引类型
            type => "goods"
            # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
            # use_column_value => true
            # 记录上一次追踪的结果值
            last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time"
            # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
            # tracking_column => "updated_time"
            # tracking_column 对应字段的类型
            #tracking_column_type => "timestamp"
            # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
            clean_run => false
            # 数据库字段名称大写转小写
            lowercase_column_names => false
            }
    }
    
    output {
        if "order" == [type]{
            elasticsearch {
                # es地址
                hosts => ["192.168.0.54:9200","192.168.0.55:9200","192.168.0.56:9200"]
                # 同步的索引名
                index => "erp_order"
                # 设置_docID和数据相同
                document_id => "%{id}"
            }
        }
        if "goods" ==  [type]{
            elasticsearch {
                # es地址
                hosts => ["192.168.0.54:9200","192.168.0.55:9200","192.168.0.56:9200"]
                # 同步的索引名
                index => "erp_goods"
                # 设置_docID和数据相同
                document_id => "%{id}"
            }
    
        }
        # 日志输出
        stdout {
            codec => json_lines
        }
    }

    启动命令

    /root/logstash-2.3.4/bin/logstash -f 配置文件路径
  • 相关阅读:
    sl跨域访问学习笔记2
    XAML标记扩展
    充分利用资源,实践中创新
    程序集版本号与文件版本号的区别
    项目管理: 软件质量的可靠保证
    未能将临时文件复制到输出目录中
    IBM DB2 UDB V8.1®,Oracle9i R2®,Microsoft SQL Server 2000® 技术比较分析
    Asp.net 1.0 升级至 ASP.NET 2.0十个问题总结
    The remote procedure call failed and did not execute的解决办法
    快速解决IIS5故障一例
  • 原文地址:https://www.cnblogs.com/wtil/p/14992261.html
Copyright © 2011-2022 走看看