• sersync+rsync实时同步备份案例


    案例: 实现web上传视频文件,实则是写入NFS至存储,当NFS存在新的数据则会实时的复制到备份服务器

    nfs服务端操作如下:

    1.安装nfs
    [root@nfs ~]# yum install nfs-utils -y
    
    2.配置nfs
    [root@nfs ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    
    创建目录
    [root@nfs ~]#  mkdir -p /data
    
    创建用户
    [root@nfs ~]# groupadd -g 666 www
    [root@nfs ~]# useradd -u666 -g666 -M -s /sbin/nologin www
    

    授权
    [root@nfs ~]# chown -R www.www /data
    
    3.重启nfs(restart)    下次开机自启 (enable)
    [root@nfs ~]# systemctl start nfs
    [root@nfs ~]# systemctl enable nfs
    
    4.检查是否真的启动了NFS服务,共享的目录是否正常
    [root@nfs ~]# cat /var/lib/nfs/etab 
    /data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
    

    web服务端操作:

    1.安装httpd php
    [root@web01 ~]# yum install httpd php -y
    
    2.配置httpd php
    [root@web01 ~]# yum install httpd php -y
    
    3.启动httpd php
    [root@web01 ]# systemctl start httpd
    
    4.检查httpd是否正常
    [root@web01]# echo "Welcome to shanghai" >/var/www/html/index.html
    

    然后通过浏览器访问当前web服务器的IP地址
    10.0.0.7

    5.挂载nfs存储
    [root@web01 ]# mount -t nfs 172.16.1.31:/data /var/www/html
    
    [root@web01 html]# df -h
    Filesystem         Size  Used Avail Use% Mounted on
    /dev/sda2           18G  1.9G   17G  11% /
    devtmpfs           224M     0  224M   0% /dev
    tmpfs              235M     0  235M   0% /dev/shm
    tmpfs              235M  5.5M  229M   3% /run
    tmpfs              235M     0  235M   0% /sys/fs/cgroup
    /dev/sda1         1014M  127M  888M  13% /boot
    172.16.1.31:/data   18G  2.0G   17G  11% /var/www/html
    tmpfs               47M     0   47M   0% /run/user/0
    
    6.上传我们作业代码,测试是否能将
    [root@web01 ]# cd /var/www/html/
    
    [root@web01  html]#rz -E
    
    [root@web01  html]#ls
    
    kaoshi.zip
    
    [root@web01  html]#unzip kaoshi.zip
    
    [root@web01 html]# ll
    total 80
    -rw-r--r-- 1 www www 38772 Apr 27  2018 bg.jpg
    -rw-r--r-- 1 www www  2633 May  4  2018 index.html
    -rw-r--r-- 1 www www    52 May 10  2018 info.php
    -rw-r--r-- 1 www www 26927 May 17 12:32 kaoshi.zip
    -rw-r--r-- 1 www www  1119 May  6  2018 upload_file.php
    
    cat /var/log/messages | grep mount
    

    备份服务器

    1.安装rsync
    [root@backup ~]#
    
    [root@backup ~]# vim /etc/rsyncd.conf
    
    2.配置rsync
    [root@backup ~]# cat /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]
    
    path = /backup
    
    [data]
    path = /data
    
    创建虚拟用户以及虚拟用户的密码
    [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
    	[root@backup ~]# chmod 600 /etc/rsync.passwd
    
    创建用户
    [root@backup ~]# groupadd -g 666 www
    [root@backup ~]# useradd -u666 -g666 www
    
    创建目录
    	[root@backup ~]# mkdir -p /data /backup
    
    进行授权
    [root@backup ~]# chown -R www.www /data/ /backup/
    [root@backup ~]# ll -d /data/ /backup/
    drwxr-xr-x. 7 www www 234 5月  23 10:47 /backup/
    drwxr-xr-x. 2 www www   6 5月  23 10:47 /data/
    
    3.重启rsync
    [root@backup ~]# systemctl restart rsyncd
    

    nfs服务端操作:(监控本地的/data目录,发生变化则立马同步到备份服务器)

    1.安装sersync
    [root@nfs ~]# yum install inotify-tools -y
    
    下载sersync
    
    [root@nfs ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
    
    2.配置sersync
    [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
    [root@nfs ~]# mv GNU-Linux-x86/ /usr/local/sersync
    
    [root@nfs01 sersync]# vim /usr/local/sersync/confxml.xml
      5     <fileSystem xfs="true"/>  <!-- 文件系统 -->
    
     12     <inotify> <!-- 监控的事件类型 -->
     13         <delete start="true"/>
     14         <createFolder start="true"/>
     15         <createFile start="true"/>
     16         <closeWrite start="true"/>
     17         <moveFrom start="true"/>
     18         <moveTo start="true"/>
     19         <attrib start="true"/>
     20         <modify start="true"/>
     21     </inotify>
    
     23     <sersync>
     24         <localpath watch="/data"> <!-- 监控的目录 -->
     25             <remote ip="172.16.1.41" name="data"/>  <!-- backup的IP以及模块 -->
     28         </localpath>
    
     29         <rsync> <!-- rsync的选项 -->
     30             <commonParams params="-az"/>
     31             <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
     32             <userDefinedPort start="false" port="874"/><!-- port=874 -->
     33             <timeout start="true" time="100"/><!-- timeout=100 -->
     34             <ssh start="false"/>
     35         </rsync>
    
    3.创建密码文件
    [root@nfs ~]# echo "123456" > /etc/rsync.pass 
    [root@nfs ~]# chmod 600 /etc/rsync.pass
    
    4,启动sersync
    [root@nfs ~]# /usr/local/sersync/sersync2 -h
    
    ------
    
    参数-d:启用守护进程模式
    参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
    参数-n: 指定开启守护线程的数量,默认为10个
    参数-o:指定配置文件,默认使用confxml.xml文件
    参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
    参数-m:单独启用其他模块,使用 -m socket 开启socket模块
    参数-m:单独启用其他模块,使用 -m http 开启http模块
    不加-m参数,则默认执行同步程序
    
    ------
    
    [root@nfs ~]#/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
    
     抓取sersync的命令,手动测试一次  (当发现不同步的时候)
    [root@nfs ~]#cd /data && rsync -avz -R --delete ./  --timeout=100 rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    
    sending incremental file list
    
    sent 365 bytes  received 21 bytes  772.00 bytes/sec
    total size is 4,054,686  speedup is 10,504.37
    

    #################################################################

    模拟NFS故障,尝试将web迁移到backup服务器上使用

    1.backup需要安装并配置NFS
    安装nfs
    [root@backup ~]# yum install nfs-utils -y
    

    配置nfs

    [root@backup ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    
    启动nfs,并加入开机自启
    
    [root@backup ~]# systemctl start nfs
    [root@backup ~]# systemctl enable nfs
    
    2.模拟NFS故障
    [root@nfs ~]# shutdown -h now
    
    Connection closed by foreign host.
    
    Disconnected from remote host(nfs-31) at 15:56:24.
    
    3.尝试切换
    [root@web01 ~]# umount -lf /var/www/html/ && mount -t nfs 172.16.1.41:/data /var/www/html
    
    [root@web01 ~]# mount -t nfs 172.16.1.41:/data /var/www/html
    
    [root@web01 ~]# df -h
    Filesystem         Size  Used Avail Use% Mounted on
    /dev/sda2           18G  1.9G   17G  11% /
    devtmpfs           224M     0  224M   0% /dev
    tmpfs              235M     0  235M   0% /dev/shm
    tmpfs              235M  5.5M  229M   3% /run
    tmpfs              235M     0  235M   0% /sys/fs/cgroup
    /dev/sda1         1014M  127M  888M  13% /boot
    tmpfs               47M     0   47M   0% /run/user/0
    172.16.1.41:/data   18G  1.9G   17G  11% /var/www/html
    
  • 相关阅读:
    随笔导航
    利用CORDIC算法计算三角函数
    粒子群算法求一元函数最值问题
    基于粒子群算法的分组背包MATLAB实现
    遇到过的MATLAB函数小总结
    FFT原理及C++与MATLAB混合编程详细介绍
    DPSK通信系统的FPGA实现
    矩阵QR分解的MATLAB与C++实现
    矩阵LU分解的MATLAB与C++实现
    两种频率调制(FM)方法的MATLAB实现
  • 原文地址:https://www.cnblogs.com/longren/p/10912596.html
Copyright © 2020-2023  润新知