Server Data Synchronization Via Linux rsync、rsync+inotify Between Load Balance Server

目录

1. 远程文件同步的应用场景
2. rsync+crontab
3. rsync+inotify

1. 远程文件同步的应用场景

在负载均衡集群的应用场景中,往往在多台web server的前端有一个提供负载均衡的Load Balance Server

1. 客户端的通过访问一个统一的域名到这个Load Balance上,例如:www.test.com,Load Balance Server会根据负载调度算法将请求合理地分配到集群的子节点中
2. 客户端上传的文件同样也会被Load Balance Server"随机"的分配到集群中的一台节点服务器中

这就造成了一个问题,如何来保证集群各个子节点服务器的状态、数据一致性,即我们保证客户端能够像对待单点那样去上传、并下载文件,这就需要在集群的各个子节点之间进行双向的数据同步

2. rsync+crontab

rsync(remote sync)是类unix系统下的数据镜像备份工具。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步

0x1: rsync特点

1. 可以镜像保存整个目录树和文件系统
2. 可以很容易做到保持原来文件的权限、时间、软硬链接
3. 无须特殊权限即可安装
4. 快速
    1) 第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件,即增量备份
    2) rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽
5. 安全
    1) 可以使用scp、ssh等方式来传输文件
    2) 可以通过直接的socket连接
6. 支持匿名传输,以方便进行网站镜象 

了解了rsync的基本概念之后,我们来学习一下如何配置rsync服务,从本质上来说,rsync是P2P架构的服务体系,所以我们如果要在多台服务器之间进行双向备份,则每一台服务器即是server,又是clinet

0x2: rsync服务安装配置

1. 部署rsync服务端

1. 安装超级守护进程
yum –y install xinetd

2. 为rsync服务提供配置文件
vim /etc/rsyncd.conf
#Global Settings
uid = nobody
gid = nobody
use chroot = no
max connections = 5
timeout = 600
pid file = /var/run/rsyncd.pid
lockfile = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log

#module
[zhenghan]
path = /opt/backup/
ignore errors = yes
read only = no
write only = no
hosts allow = *
hosts deny = *
list = yes
uid = root
gid = root
auth users = zhenghan
secrets file = /etc/zhenghan.passwd

3. 配置rsync认证文件(如果不需要密码则不需要配置)
vim /etc/zhenghan.passwd
echo "zhenghan:zhenghan" > /etc/zhenghan.passwd
cat /etc/zhenghan.passwd
zhenghan:zhenghan

4. 修改/etc/chandao.passwd的权限为600
chmod 600 /etc/zhenghan.passwd

5. 配置服务启动
chkconfig rsync on
service xinetd start

6. 检查873端口是否成功监听
ss -antlp | grep 873

7. 检查rsync运行状态
chkconfig --list

2. 部署rsync客户端

1. 设置rsync客户端的密码文件
    1) 密码文件
    echo zhenghan > /etc/zhenghan.passwd
    2) 数据库的密码文件
    echo zhenghan > /etc/db_zhenghan.passwd

2. 修改密码文件的的权限为600
chmod 600 /etc/zhenghan.passwd
chmod 600 /etc/db_zhenghan.passwd 

3. 测试rsync客户端是否可以从rsync服务器拉成功
rsync -vzrtopg --password-file=/etc/zhenghan.passwd [email protected]192.168.200.16::zhenghan/* /tmp

4. rsync同步脚本
#!/bin/bash
#func:rsync for zhenghan
#Version:v1.0

ntpdate 192.168.200.16 > /dev/null 2>&1
date=`date +%Y-%m-%d`
dest_chandao=/opt/backup/zhenghan/test
dest_db=/opt/backup/zhenghan/db_zhenghan
remote_zhenghan=192.168.200.16
remote_db=192.168.200.18
module_zhenghan=zhenghan
module_db=db_zhenghan
[email protected] 

main()
{
     rsync -vzrtopg --password-file=/etc/zhenghan.passwd [email protected]$remote_zhenghan::$module_zhenghan/*$date* $dest_zhenghan
     if [ $? -eq 0 ];then
         echo "zhenghan-*$date* was rsynced" >>  /opt/log/zhenghan_rsync.log 2>&1;
     else
         echo "zhenghan-*$date* was not rsynced" >>  /opt/log/zhenghan_rsync.log 2>&1;
         echo "zhenghan rsync was faild " | mail -s "zhenghan backup" $user2;
     fi

     rsync -vzrtopg --password-file=/etc/db_zhenghan.passwd [email protected]$remote_db::$module_db/*$date* $dest_db
     if [ $? -eq 0 ];then
         echo "db_zhenghan_*$date* was rsynced" >>  /opt/log/zhenghan_rsync.log 2>&1;
     else
         echo "db_zhenghan_*$date* was not rsynced" >>  /opt/log/zhenghan_rsync.log 2>&1;
         echo "db_zhenghan rsync was faild " | mail -s "zhenghan backup" $user2;
     fi
}
main

3. 定时任务

rsync是一个P2P的架构,server和client之间可以双向地进行数据同步,服务端和客户端配置好之后,通常的做法是使用crontab定时任务在client和server之间进行数据同步互传

crontab -e
##rsync for zhenghan
20 09 * * * /bin/sh /opt/scripts/rs_zhenghan.sh

Relevant Link:

http://baike.baidu.com/link?url=EDZps6hVI-m9hmOcS5bbX9ARL2PmJ1V6ugHWeCDJp7Yz_40MnTLl0wrIMmpQOobqpL6OHfVTYZMwgJF8xE_I3a
http://nmshuishui.blog.51cto.com/1850554/1532927

3. rsync+inotify

0x1: rsync+inotify的优点

1. 在数据量非常大的情况下,传统的任务计划,rsync都会先去遍历目标目录,把所有数据做一次特征码比对,然后进行差量传输,这个过程会是很漫长的,对于那些要求实时性更新比较高的企业来说,无疑是一场噩梦
2. Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、***,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件
3. 服务器性能
    1) rsync+crontab会定时去检查是否有文件更新,这势必会造成服务器性能下降
    2) rsync+inotify组合是触发式更新,只有在数据文件有变化时,才会去更新,因此相对前者而言,是提高了服务器性能
4. 数据实时性
    1) rsync+crontab是周期性任务计划,不能保证数据的实时性
    2) rsync+inotify组合是触发式更新,只要有数据变化,就立刻同步更新

0x2: rsync+inotify安装配置

rsync+inotify和rsync+crontab最大的差别在于同步的触发条件,即同步命令的发起条件不同,rsync+inotify是通过linux的inotify机制去实时地触发双向文件同步

Relevant Link:

http://nmshuishui.blog.51cto.com/1850554/1387048

Copyright (c) 2014 LittleHann All rights reserved

时间: 2024-10-11 23:51:10

Server Data Synchronization Via Linux rsync、rsync+inotify Between Load Balance Server的相关文章

Linux系统crond、rsync、打包备份数据操作实战

Linux系统crond.rsync.打包备份数据操作实战 前面介绍了系统中定时任务.rsync.打包等各种操作,同时也介绍了实际生产环境中的各类案例,今天我们结合这几种功能做一次实战(备份数据) 一:项目背景 某公司WEB服务器数据非常重要,但是如果硬件出现故障,数据就会丢失,人工备份比较费时费力,因些需要进行相关自动备份,并且要备份至指定的备份服务器上 具体备份内容有: 1.网站站点所有目录及相关文件 2.系统相关的配置文件 3.网站的访问日志文件 具体要求如下:(每天0点备份) 1.WEB

十(7)rsync:介绍、常用选项、通过ssh同步、通过服务同步、linux系统日志、screen

                        rsync工具介绍 rsync:数据备份工具(remote sync). rsync不仅可以远程同步数据(类似scp),而且可以本地同步数据(类似cp),但是不同于cp或scp的一点是,如果数据存在的话它不会覆盖以前的数据,而是会先判断已存在的数据是否和新的数据有差异,只有数据不同时才会把不同的部分覆盖.  (系统如果没有rsync命令,安装:yum install -y rsync) (如:有两台机器A.B,要把A的数据每小时都备份到B下,而且A

Linux centos7 rsync工具介绍、rsync常用选项、rsync通过ssh同步

一.rsync工具介绍 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用"rsync"算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上.如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分.rsync可以执行完整备份或增量备份.它的主要特点有: 1.可以镜像保存整个目录树和文件系统: 2.可

Linux CentOS7 rsync通过服务同步、linux系统日志、screen工具

一.rsync通过服务同步 rsyncd.conf配置文件详解 port:指定在哪个端口启动rsyncd服务,默认是873端口. log file:指定日志文件. pid file:指定pid文件,这个文件的作用涉及服务的启动.停止等进程管理操作. address:指定启动rsyncd服务的IP.假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动. []:指定模块名,里面内容自定义. path:指定数据存放的路径. use chroot t

Linux同步镜像备份Rsync

我一哥们最近在搞备份,需要用到rsync.因此,鄙人就简单总结了下rsync,也就有了这篇博文,希望对51的博友们有所帮助! RSYNC简介: Rsync (remote sync)是一款开源.快速,多功能.可实现增量的本地或远程数据镜像同步备份优秀工具.它可通过 LAN/WAN 快速同步多台主机间的文件.Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护.Rsync 使用所谓的"Rsync演算法"来使本地和远程主机之间的文件达到同步,该算法只

linux学习笔记-rsync原理及使用

rsync的原理及使用 第1章 rsync原理及介绍 1.1什么是rsync Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rstync软件适用于unix/linux/windows等多种操作系统平台. Rsync英文全称为Remotesynchronization,即远程同步.从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp

一、rsync基础原理

第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. http://www.samba.org/ftp/rsync/rsync.html 下载地址:https://download.samba.org/pub/rsync/ 1.1.1 全量及增量 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1.2 实现增量复制的原理 Rsync通过其独特的“quick check”算法,实现增量传

linux系统中Rsync文件同步方案

linux服务器下Rsync文件同步配置 Rsync(remote synchronize) 远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件.Rsync的好处是只同步两个文件不同的部分,相同的部分不在传递.类似于增量备份,这使的在服务器传递备份文件或者同步文件. crontab配合rsync 使用可达到定时备份同步任务. Rsync部署环境1.服务器准备| Host | IP | ----------|| Server | 192.168.60.110 | -

十八、Rsync 远程同步数据

在linux系统下数据备份的工具.Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉.如果你的linux没有rsync命令请使用 yum install -y rsync 安装. 下面阿铭先举一个例子,然后再详细讲解rsync的用法: [[email protected] ~]#