回顾:
1.rsync
统一备份各个服务器的配置文件或重要文件 系统配置文件 日志文件 系统日志文件 messages、secure、cron 服务日志文件 access_log、access.log 服务配置文件 /etc/rsyncd.conf、/etc/exports...
2.NFS
网络文件系统,提供共享存储服务
3.sersync
提供实时同步服务
实验组合:
1.rsync
实验环境: rsync服务器 rsync客户机 实验需求: rsync服务器提供同步模块,rsync客户端可以通过推拉实现数据备份
2.nfs
实验环境: nfs服务器 nfs客户机(apache) 实验需求: nfs服务器提供共享目录 客户机通过挂载共享目录实现web页面的访问
3.rsync+nfs
实验环境: rsync服务器 nfs服务器(rsync客户机) nfs客户机(apache) 实验需求: rsync服务器提供同步模块 nfs服务器提供共享目录 客户机通过挂载共享目录,上传文件至nfs服务器 nfs服务器通过手动rsync命令将文件推送到rsync服务器上
4.rsync+sersync+nfs
实验环境: rsync服务器 nfs服务器(rsync客户机) nfs客户机(apache) 实验需求: rsync服务器提供同步模块 nfs服务器提供共享目录 客户机通过挂载共享目录,上传文件至nfs服务器 nfs服务器通过sersync实时同步数据到rsync服务器 模拟nfs服务器故障,通过将rsync服务器变成nfs服务器,实现故障切换
完整实验文档
实验拓扑
实验需求
实验步骤
实验组合一:
实验步骤:
1.搭建rsync服务器
1)安装rsync软件包 [[email protected] ~]# yum install -y rsync 2)修改配置文件rsyncd.conf [[email protected] ~]# cat >/etc/rsyncd.conf<<EOF uid=rsync gid=rsync port=873 fake super=yes use chroot=no max connection=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 #!module [backup] comment = commit path = /backup EOF 3)创建环境 [[email protected] ~]# useradd -M -s /sbin/nologin rsync [[email protected] ~]# mkdir /backup [[email protected] ~]# chown -R rsync.rsync /backup/ [[email protected] ~]# echo ‘rsync_backup:1‘ > /etc/rsync.passwd [[email protected] ~]# chmod 600 /etc/rsync.passwd 4)启动服务 [[email protected] ~]# systemctl start rsyncd && systemctl enable rsyncd 5)验证 客户端: 安装rsync软件包 [[email protected] ~]# yum install -y rsync 实验rsync -avz 来推送 [[email protected] ~]# rsync -avz /etc/passwd [email protected]172.16.1.51::backup 可以使用两种方式实现免密 创建password-file [[email protected] ~]# echo ‘1‘ >/etc/rsync.passwd [[email protected] ~]# chmod 600 /etc/rsync.passwd [[email protected] ~]# rsync -avz --password-file=/etc/rsync.passwd 给环境变量RSYNC_PASSWORD赋值 [[email protected] ~]# export RSYNC_PASSWORD=1
实验组合二:
2.搭建NFS服务器
1).安装nfs-utils,rpcbind软件包 [[email protected] ~]# yum install -y nfs-utils.x86_64 2).启动nfs和rpcbind服务 [[email protected] ~]# systemctl start rpcbind nfs && systemctl enable nfs 注意: 1.启动顺序,先rpcbind,再nfs 2.rpcbind开启之后,就是永久启动,所以只需将nfs设置为永久启动 3).修改配置文件/etc/exports echo "/data 172.16.1.0/24(rw,all_squash,sync)" > /etc/exports 4).创建环境 [[email protected] ~]# mkdir -p /data [[email protected] ~]# chown -R nfsnobody.nfsnobody /data/ 5).重载配置文件 [[email protected] ~]# exports -arv 6).验证 客户端: 安装nfs-utils [[email protected] ~]# yum install -y nfs-utils.x86_64 启动rpcbind服务 [[email protected] ~]# systemctl start rpcbind 查看nfs服务端挂载信息 [[email protected] ~]# showmount -e 172.16.1.41 Export list for 172.16.1.41: /data 172.16.1.0/24 临时挂载nfs共享存储 [[email protected] ~]# mount 172.16.1.41:/data /var/www/html 永久挂载 [[email protected] ~]# echo ‘172.16.1.41:/data /var/www/html nfs defaults 0 0‘ >> /etc/fstab [[email protected] ~]# mount -a
实验组合三:
rsync+nfs
web01(nfs客户端的)配置
1)安装httpd yum install -y httpd 2)启动httpd服务 systemctl start httpd && systemctl enable httpd 3)将nfs共享目录挂载到/var/www/html echo ‘172.16.1.41:/data /var/www/html nfs defaults 0 0‘ >> /etc/fstab mount -a 注意: 这里添加多台web服务器,操作步骤是一模一样 问题:如果nfs服务故障,会导致所有web服务器的页面都无法访问 解决方案: 1.将nfs共享目录里的内容,推送至rsync服务器 2.将rsync服务器临时变成nfs服务器 问题:nfs和rsync的程序用户不一致,会导致权限问题(甚至web服务器的程序用户也不一样) 解决方案: 将nfs rsync web的程序用户统一即可 操作步骤: rsync服务器 [[email protected] ~]# groupadd -g 666 www [[email protected] ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www [[email protected] ~]# sed -ri ‘s#(.*)rsync$#\1www#g‘ /etc/rsyncd.conf [[email protected] ~]# chown -R www.www /backup/ /data/ [[email protected] ~]# echo "/data 172.16.1.0/24(rw,all_squash,sync,anonuid=666,anongid=666)" > /etc/exports [[email protected] ~]# exportfs -arv [[email protected] ~]# systemctl restart rsyncd nfs服务器 [[email protected] ~]# groupadd -g 666 www [[email protected] ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www [[email protected] ~]# chown -R www.www /data/ [[email protected] ~]# echo "/data 172.16.1.0/24(rw,all_squash,sync,anonuid=666,anongid=666)" > /etc/exports [[email protected] ~]# exportfs -arv web服务器 [[email protected] ~]# groupadd -g 666 www [[email protected] ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www 缺点:需要人为手动将nfs的共享目录的内容推送到rsync服务器,实现同步
4.sersync
需要在nfs服务器上安装sersync,对nfs共享目录进行实时监控,当出现文件的增加,删除,修改后,自动触发rsync
将变换后的内容推送至rsync服务器,实现实时同步
1).安装sersync #sersync需要依赖inotify和rsync,所以需要安装对应软件 [[email protected] ~]# yum install rsync inotify-tools -y #安装sersync [[email protected] ~]# mkdir /server/tools -p [[email protected] ~]# cd /server/tools/ [[email protected] tools]# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz [[email protected] tools]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz [[email protected] tools]# mv GNU-Linux-x86/ /usr/local/sersync [[email protected] tools]# cd /usr/local/sersync/ 2).修改配置文件 [[email protected] sersync]# vim 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="true"/> #监控对象 false改成true <filter start="false"> <exclude expression="(.*)\.svn"></exclude> <exclude expression="(.*)\.gz"></exclude> <exclude expression="^info/*"></exclude> <exclude expression="^static/*"></exclude> </filter> <inotify> #监控信息 <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> <localpath watch="/data"> <remote ip="172.16.1.51" name="data"/> <!--<remote ip="192.168.8.39" name="tongbu"/>--> <!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> <rsync> <commonParams params="-az"/> #命令选项 <auth start="true" users="nfs_backup" passwordfile="/etc/nfs.passwd"/> #rsync的认证信息 <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="false" time="100"/><!-- timeout=100 --> <ssh start="false"/> </rsync> [[email protected] sersync]# echo "1" >/etc/nfs.passwd [[email protected] sersync]# chmod 600 /etc/nfs.passwd 3)启动服务 #将sersync2执行脚本链接到系统路径 [[email protected] sersync]# ln -s /usr/local/sersync/sersync2 /usr/bin/ [[email protected] sersync]# sersync2 -h set the system param execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events parse the command param _______________________________________________________ 参数-d:启用守护进程模式 参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍 c参数-n: 指定开启守护线程的数量,默认为10个 参数-o:指定配置文件,默认使用confxml.xml文件 参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块 参数-m:单独启用其他模块,使用 -m socket 开启socket模块 参数-m:单独启用其他模块,使用 -m http 开启http模块 不加-m参数,则默认执行同步程序 ________________________________________________________________ [[email protected] sersync]# sersync2 -dro /usr/local/sersync/confxml.xml
原文地址:https://www.cnblogs.com/xmtxh/p/12229931.html
时间: 2024-11-01 12:19:51