• RSYNC远程同步


    ELK+filebeat+kafka

    input
    bootstrap_servers =>"192.168,233.21:9092,192.168.233.22:9092,192.168.233.23:9092
    topic =>"nginx1"
    type => "nginx kafka"
    codec =>"ison"
    auto_offset_reset => "latest"
    #拉取最新数据,前面不管,从头开始earliest
    decorate_events =>true
    #传递给es数据库时,额外的添加kafka的属性数据
          }
          }
          output {
    if "access" in [tags]{
    elasticsearch {
    hosts =>["192.168.233.10:9200","192.168.233.20:9200"]
    index=>"nginx access-%{+YYYY.MM.dd}"
    }
    }
    if "error" in [tags]{
    elasticsearchf  {
    hosts =>["192.168.233.10:9200","192.168.233.20:9200"]
    index =>"nginx error-%{+YYYY.MM.dd}
    }
    }

    配置nginx里filebeat

    [root@nginx20 filebeat]# vim filebeat.yml
    - type: log
      enabled: true
      paths:
        - /usr/local/nginx/logs/access.log
      tags: ["access"]
    ​
    - type: log
      enabled: true
      paths:
        - /usr/local/nginx/logs/error.log
      tags: ["error"]
    ​
    output.kafka:
      enabled: true
      # The Logstash hosts
      hosts: ["192.168.65.11:9092","192.168.65.12:9092","192.168.65.13:9092"]
      topic: "nginx2"
      
      [root@nginx2 filebeat]# ./filebeat -e -c filebeat.yml 
    ​

    logstash里添加配置文件kafka.conf

    [root@test43 conf.d]# vim kafka.conf
    input  {
          kafka {
    bootstrap_servers =>"192.168,65.11:9092,192.168.12.12:9092,192.168.65.13:9092
          topics => "nginx2"
          type => "nginx_kafka"
          codec =>"json"
          auto_offset_reset => "latest"
          decorate_events => true
          }
          }
    output {
          if "access" in [tags] {
          elasticsearch {
          hosts =>["192.168.65.44:9200","192.168.65.45:9200"]
          index=>"nginx_access-%{+YYYY.MM.dd}"
          }
    }
          if "error" in [tags]{
          elasticsearchf  {
          hosts =>["192.168.65.44:9200","192.168.65.45:9200"]
          index =>"nginx_error-%{+YYYY.MM.dd}" 
            }
        }
    }
    wq!
    ​
    [root@test43 conf.d]# logstash -f kafka.conf --path.data /opt/test5 &
    ​
    创建主题
    [root@mysql1 opt]# kafka-topics.sh --create --bootstrap-server 192.168.65.11:9092,192.168.65.12:9092,192.168.65.13:9092 --replication-factor 2 --partitions 3 --topic test8
    ​
    查看主题
    [root@mysql1 opt]# kafka-topics.sh --list --bootstrap-server 192.168.65.11:9092,192.168.65.12:9092,192.168.65.13:9092
    nginx2
    test8
    test9
    ​
    生产消息
    [root@mysql1 opt]# kafka-console-producer.sh --broker-list 192.168.65.11:9092,192.168.65.12:9092,192.168.65.13:9092 --topic test8
    >w
    >b
    >l
    ​
    消费消息
    [root@mysql2 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.65.11:9092,192.168.65.12:9092,192.168.65.13:9092 --topic test8 --from-beginning
    w
    b
    l
    ​

    RSYNC远程同步

    上行:客户端同步到服务端

    下行:服务端同步到客户端

    scp远程复制

    开源的快速备份的工具,一般是系统自带的。

    可以在不同主机之间同步整个目录树(目录)

    在远程同步的任务中,负责发起rsync的叫做发起端,也就是服务端,负责响应同步请求的,就是客户端

    rsync特点

    1、支持拷贝文件,链接文件等等

    2、可以同步整个目录

    3、可以支持保留源文件或者目录的权限等等

    4、可以实现增量同步

    同步方式

    1、完整备份

    2、增量备份

    常用的选项

    1、-a 归档模式,保留权限

    2、 -v 显示同步的详细过程

    3、 -z 压缩,在传输的过程中对文件进行压缩

    4、 -H 同步硬链接

    5、 --delete 同步删除文件

    6、 -l 同步快捷方式 连接文件

    7、 -r 递归,所有

    实验

    192.168.65.43 服务端

    192.168.65.44 客户端

    inotify-tools

    用inotify实现监控

    inotify watch 监控变化

    inotify wait 监控修改 创建 移动 删除 属性修改(权限修改,所有者,所在组)如果发生变动,立即输出结果

    客户端获取服务端信息

    客服端44服务端43

    [root@test43 ~]# vim /etc/rsyncd.conf 
    # /etc/rsyncd: configuration file for rsync daemon mode
    ​
    # See rsyncd.conf man page for more options.
    ​
    # configuration example:
    ​
     uid = root
     gid = root
     use chroot = yes
    #是否禁锢在源目录
     address = 192.168.65.43
    #监听地址
    port 873
    # max connections = 4
     pid file = /var/run/rsyncd.pid
     log file = /var/log.rsyncd.log
    hosts allow = 192.168.65.0/24
    dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
    #压缩同步文件
    [test]
    #共享模块的名称,通过模块的名称进行同步
    path = /opt/test
    #源目录,就是同步的目录
    #comment = test
    #备注信息
    read only = no
    #源目录,客户端可以读也可以写
    auth users = backuper
    #授权登录的账户名称
    secrets file = /etc/rsyncd_users.db
    #授权登录用户的密码文件
    wq!                                                                                   
    ​
    [root@test43 ~]#  vim /etc/rsyncd_users.db   #设置远程同步的密码
    backuper:123456
    ~                 
    [root@test43 ~]# chmod 600 /etc/rsyncd_users.db   #赋权只能给600的权限
    [root@test43 ~]# mkdir /opt/test               #创建目录后要赋权
    [root@test43 ~]# chmod 777 /opt/test
    [root@test43 ~]# netstat -antp | grep 873
    [root@test43 ~]# netstat -antp | grep rsync
    [root@test43 ~]# systemctl restart rsyncd
    [root@test43 ~]# netstat -antp | grep rsync
    tcp        0      0 192.168.65.43:873       0.0.0.0:*               LISTEN      33058/rsync         
    [root@test43 ~]# netstat -antp | grep 873
    tcp        0      0 192.168.65.43:873       0.0.0.0:*               LISTEN      33058/rsync         
    ​
    [root@test43 opt]# cd test
    [root@test43 test]# ls
    [root@test43 test]# echo 123 456 789
    123 456 789
    [root@test43 test]# echo 123 > 123
    [root@test43 test]# echo 456 > 456
    ​
    #在指定44客户端查看
    [root@test44 opt]# rsync -avz backuper@192.168.65.43::test /opt
    Password: 
    receiving incremental file list
    ./
    123
    456
    ​
    sent 65 bytes  received 175 bytes  96.00 bytes/sec
    total size is 8  speedup is 0.03
    ​

    客户端同步到服务端

    44是客户端43是服务端

    [root@test44 opt]# inotifywait -mrq -e modify,create,move,delete /opt/dly
    m 持续监控
    r递归整个目录 只要有变化包含子目录的变化全部记录
    q 简化输出的信息
    e 指定监控时间
    [root@test44 opt]# tar -xf inotify-tools-3.14.tar.gz
    [root@test44 opt]# yum -y install make
    [root@test44 opt]# cd inotify-tools-3.14/
    [root@test44 opt]# make -j 4 && make install
    [root@test44 opt]# mkdir dly   #创建目录
    [root@test44 opt]# chmod 777 dly   #赋权
    [root@test44 opt]# cd dly  
    [root@test44 dly]# touch 123      
    [root@test44 dly]# mv 123 456
    设置免密
    [root@test44 dly]# rsync -avz --password-file=/etc/server.pass backuper@192.168.65.43::test /opt
    #持续监控整个目录
    [root@test44 opt]# inotifywait -mrq -e modify,create,move,delete, /opt/dly
    /opt/dly/ CREATE 123
    /opt/dly/ MOVED_FROM 123
    /opt/dly/ MOVED_TO 456
    ​
    #监控变化的配置文件
    [root@test44 opt]# vim inotify.sh
    #!/bin/bash
    inotify_cmd="inotifywait -mrq -e modify,create,move,delete, /opt/dly"
    rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /opt/dly backuper@192.168.65.43::test/"
    $inotify_cmd | while read DIRECTORY EVENT FILE
    do
      if [ $(pgrep rsync | wc -l) -le 0 ]
      then
        $rsync_cmd
        fi
      done  
    #--delete全同步(两边的目录全部一致)
    wq!
    ​
    [root@test44 opt]# chmod 777 inotify.sh   #赋权
    [root@test44 opt]# ./inotify.sh     #启动监控
    #再开一个相同虚拟机
    [root@test44 dly]# touch xy102
    [root@test44 dly]# echo 123 > xy102
    #写入的内容会同步到test43
    [root@test43 test]# cd dly
    [root@test43 dly]# ls
    456  xy102
    [root@test43 dly]# cat xy102
    123
    #在44主机上写入
    [root@test44 dly]# touch test1
    #在43上查看
    [root@test43 dly]# ll
    总用量 4
    -rw-r--r--. 1 root root 0 8月   6 14:15 456
    -rw-r--r--. 1 root root 0 8月   6 15:00 test1
    -rw-r--r--. 1 root root 4 8月   6 14:58 xy102
    #在客户端上的操作会同步到服务端,服务端的操作不对客户端造成影响

    1

  • 相关阅读:
    ROS仿真环境搭建
    一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
    产品说明丨如何使用MobPush快速创建应用
    go-carbon 2.2.9 版本发布, 轻量级、语义化、对开发者友好的 Golang 时间处理库
    大数据开发(HBase面试真题-卷二)
    Deno入门:Node.js的现代替代品
    C语言:用函数指针实现加减乘除的应用
    深入浅出Spring注解(22)
    高仿英雄联盟游戏网页制作作业 英雄联盟LOL游戏HTML网页设计模板 简单学生网页设计 静态HTML CSS网站制作成品
    【TensorFlow】TensorFlow中的三种计算图
  • 原文地址:https://blog.csdn.net/2402_84844434/article/details/140958010