sersync同步实战


sersync是基于inotify和srync的二次开发,代码托管在github上面在rsync的客户端上安装,下载地址:

https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

单点故障:没有做集群的机器,挂了一台全部的数据都丢失了。

  • 安装方式为二进制包,下载好了之后直接解压即可使用。
  • 解压之后会生成一个GNU-Linux-x86的目录,里面包含了xml格式的配置文件和启动文件
    • confxml.xml
    • sersync2

在配置文件confxml.xml中标签中表示inotify监控的事件。

编辑推送的认证、目录信息,只需要更改监控的事件(inotify标签)和推送到的目的认证(sersync标签)两个地方即可。图中标明了直接使用命令和使用sersync的对应地方。

需求:web01和web02使用nfs服务器的共享存储,从wen01上传的图片使用web02也可以访问;nfs通过sersync实时把数据同步到backup备份服务器当中.。

环境:

主机名 wan lan 角色
web01 10.0.0.7 172.16.1.7 nfs客户端
web02 10.0.0.8 172.16.1.8 nfs客户端
nfs 10.0.0.31 172.16.1.31 nfs服务端,rsync客户端,sersync
backup 10.0.0.41 172.16.1.41 rsync服务端

一、搭建rsync服务


# 1、安装rsync服务
[root@backup ~]# yum -y install rsync # 2、修改配置文件
[root@backup ~]# vi /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup # 3、创建www用户
[root@backup ~]# groupadd www -g 666
[root@backup ~]# useradd www -u666 -g666 -s /sbin/nologin -M # 4、创建密码文件
[root@backup ~]# echo 'rsync_backup:123' >/etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd # 5、创建上传目录
[root@backup ~]# mkdir /backup
[root@backup ~]# chown www.www /backup/ # 6、启动服务
[root@backup /backup]# systemctl start rsyncd
[root@backup /backup]# systemctl enable rsyncd

二、搭建nfs服务


# 1、安装nfs服务
[root@nfs01 ~]# yum -y install nfs-utils # 2、修改配置文件
[root@nfs01 ~]# vi /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) # 3、创建uid个gid为666的用户
[root@nfs01 ~]# groupadd www -g666
[root@nfs01 ~]# useradd www -u666 -g666 -s /sbin/nologin -M # 4、创建/data目录
[root@nfs01 ~]# mkdir /data
[root@nfs01 ~]# chown www.www /data/ # 5、启动服务
[root@nfs01 ~]# systemctl start rpcbind nfs-server
[root@nfs01 ~]# systemctl enable rpcbind nfs-server # 6、客户端安装nfs
[root@web01 ~]# yum -y install nfs-utils
[root@web02 ~]# yum -y install nfs-utils

三、安装apache、php,挂载nfs


# 1、安装apache php
[root@web02 ~]# yum -y install httpd php
[root@web01 ~]# yum -y install httpd php # 2、更改管理apache的配置文件
[root@web02 ~]# vi /etc/httpd/conf/httpd.conf
User www
Group www [root@web01 ~]# vi /etc/httpd/conf/httpd.conf
User www
Group www # 3、添加管理httpd服务的用户
[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd www -u666 -g666 -s /sbin/nologin -M [root@web01 ~]# groupadd -g666 www
[root@web01 ~]# useradd www -u666 -g666 -s /sbin/nologin -M # 4、更改网站目录
[root@web02 /var/www/html]# unzip kaoshi.zip
[root@web01 /var/www/html]# unzip kaoshi.zip # 5、修改配置文件上传目录
[root@web02 /var/www/html]# vi upload_file.php
$wen="upload"; [root@web01 /var/www/html]# vi upload_file.php
$wen="upload"; # 6、更改目录权限
[root@web02 /var/www/html]# chown -R www.www /var/www/html/
[root@web01 /var/www/html]# chown -R www.www /var/www/html/ # 7、启动服务
[root@web01 /var/www/html]# systemctl start httpd
[root@web01 /var/www/html]# systemctl enable httpd # 8、创建上传目录,上传的文件之后也会自动创建
[root@web02 /var/www/html]# mkdir upload
[root@web02 /var/www/html]# chown www.www upload [root@web01 /var/www/html]# mkdir upload
[root@web01 /var/www/html]# chown www.www upload # 9、挂载nfs共享目录
[root@web01 /var/www/html]# mount -t nfs 172.16.1.31:/data /var/www/html/upload
[root@web02 /var/www/html]# mount -t nfs 172.16.1.31:/data /var/www/html/upload

三、下载安装sersync


把backup和nfs上的内容进行实时同步

先安装 rsync和 inotify
yum -y install rsync inotify-tools # 1、下载sersync
[root@nfs01 ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz # 2、解压安装
[root@nfs01 ~]# tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz # 3、解压并改名
[root@nfs01 ~]# mv GNU-Linux-x86/ /usr/local/sersync # 4、修改配置文件
[root@nfs01 ~]# vi /usr/local/sersync/confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
<!-- inotify监控的事件,true为监控,false为不监控 -->
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify> <sersync>
<!-- 监控的目录和rsync服务器的IP地址,rsync的模块名称 -->
<localpath watch="/data">
<remote ip="172.16.1.41" name="backup"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<!--rsync推送的选项-->
<commonParams params="-az"/>
<!--是否开启认证,认证模块的用户名,用于认证的本地密码配置文件-->
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.passwd"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync> <plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin> <plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>
# 5、添加密码认证文件
[root@nfs01 ~]# echo '123' >/etc/rsync.passwd
[root@nfs01 ~]# chmod 600 /etc/rsync.passwd # 6、启动
[root@nfs01 ~]# /usr/local/sersync/sersync2 -rdo /usr/local/sersync/confxml.xml

sersync 实时同步网站数据的更多相关文章

  1. sersync 实时同步工具

    出处:http://code.google.com/p/sersync/ 当前版本的sersync依赖于rsync进行同步.如下图所示,在同步主服务器上开启sersync,将监控路径中的文件同步到目标 ...

  2. Sersync实时同步企业应用配置实战

    一.实验环境 CentOS版本: 6.6(2.6.32.-504.el6.x86_64) Rsync版本:  Rsync-3.0.6(系统自带) Sersync版本:sersync2.5.4_64bi ...

  3. Rsync + sersync 实时同步备份

    一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 ...

  4. 5. Sersync实时同步

    rsync+Sersync数据的实时同步 sersync介绍 1.什么是实时同步 监控一个目录的变化, 当该目录触发事件(创建\删除\修改) 就执行动作, 这个动作可以是 rsync同步 ,也可以是其 ...

  5. 5、Sersync实时同步实战

    1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故 ...

  6. 搭建WEB、NFS共享、sersync实时同步以及全网定时备份服务流程

    本次实验的主要目的: 1.搭建web服务,使用nfs服务共享的/data目录挂载到web站点目录上. 2.nfs服务器与backup服务器使用sersync实时同步/data目录中的文件. 3.bac ...

  7. day04 sersync实时同步和ssh服务

    day04 sersync实时同步和ssh服务 sersync实时同步 1.什么是实时同步 实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器. 2.为什么使 ...

  8. 使用Logstash来实时同步MySQL数据到ES

    上篇讲到了ES和Head插件的环境搭建和配置,也简单模拟了数据作测试 本篇我们来实战从MYSQL里直接同步数据 一.首先下载和你的ES对应的logstash版本,本篇我们使用的都是6.1.1 下载后使 ...

  9. vue中的watch方法 实时同步存储数据

    watch 监视模式里面有个独特的方法handler 注意要加上deep: true.deep为true时,当对象的key值改变时也监听 当值发生改变被watch监视到触发了事件 开始执行handle ...

随机推荐

  1. 【ProLog - 4.0 List】

    [简介] 列表是Prolog编程中常用的一种重要的递归数据结构 列表是一个有限的元素序列 实例: 所有Prolog术语都可以是列表的元素,一个非空的List应该含有两个元素:头元素(Head)和尾元素 ...

  2. oo第四单元总结及总课程回顾

    一.第四单元架构设计 1.第一次作业 第一次作业要求实现的只有对类图的分析.为了直观地搭建出一个类图,我新建了Manager类来处理UmlElement以及搭建树.但由于未能做好时间管理,因此第一次作 ...

  3. Java【线程池、Lambda表达式】

    见pdf 等待唤醒机制 wait和notify 第二章 线程池 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低 系统的效率,因为频繁创建线程和销毁 ...

  4. zabbix容器化安装及监控docker应用

    一.zabbix agent2 介绍 从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监 ...

  5. 【原创】Centos8使用ansible

    目录 使用ansible发布公钥 ansible基本命令 ansbile配置文件详解 一.使用ansible发布公钥 1.0 生成秘钥对 1.生成命令 ssh-keygen -t rsa# 推送单个公 ...

  6. Java中常见的包

    目录 JDK自带的包 第三方包 JDK自带的包 JAVA提供了强大的应用程序接口,既JAVA类库.他包含大量已经设计好的工具类,帮助程序员进行字符串处理.绘图.数学计算和网络应用等方面的工作.下面简单 ...

  7. 8.PHP图像处理

    PHP图像处理 GD2 Jpgraph 创建一个画布: <?php    header('content-type:image/gif');    //echo "你好";  ...

  8. js限制上传文件类型和大小

    <html> <head> <script type="text/javascript"> function fileChange(target ...

  9. 【python】Leetcode每日一题-删除排序链表中的重复元素2

    [python]Leetcode每日一题-删除排序链表中的重复元素2 [题目描述] 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表 ...

  10. selenium之利用cookie绕过验证登录

    方法一 第一步 2.第二步 方法二.重点:1.打开验证码页(登录页面):2.首次登录等待三十秒手工输入账密:3.保存cookie至excel后利用cookie脚本登录 1.导入第三方模块xlwt 2. ...