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

相关推荐
码农君莫笑4 小时前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio
可喜~可乐6 小时前
C# WPF开发
microsoft·c#·wpf
666和77710 小时前
C#的单元测试
开发语言·单元测试·c#
小码编匠11 小时前
WPF 星空效果:创建逼真的宇宙背景
后端·c#·.net
向宇it14 小时前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
yngsqq15 小时前
一键打断线(根据相交点打断)——CAD c# 二次开发
windows·microsoft·c#
TENET信条15 小时前
day53 第十一章:图论part04
开发语言·c#·图论
anlog17 小时前
C#在自定义事件里传递数据
开发语言·c#·自定义事件
向宇it18 小时前
【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
开发语言·unity·c#·游戏引擎
仰望大佬00719 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#