5.rsync 报错解决和部署sersync
rsync 报错
第一种
# No route to host 没有主机路由
# connection refused 拒绝连接 ##### 碰到这个两个报错基本就是 网络 端口 防火墙 和selinux 出问题的意思
# 1.首先ping网络,看看是否出现问题 有问题就解决
[root@web01 ~]# ping 10.0.0.41
# 2.端口,看看端口是否启动
[root@web01 ~]# telnet 10.0.0.41 873
Trying 10.0.0.41...
Connected to 10.0.0.41.
Escape character is '^]'.
@RSYNCD: 31.0
这就是启动了
# 3.防火墙,没关就关闭了
[root@backup ~]# systemctl status firewalld
[root@backup ~]# systemctl diable firewalld #永久关闭
# 4.selinux,没关就关了
[root@backup ~]# getenforce #查看状态s
Disabled # 关闭 不是就关了 setenforce 0 临时
第二种
### 意思是配置文件有问题,检查配置文件,有没有写错或者权限有没有问题
# 1.检查配置文件的用户和密码文件
auth users = zls_bak
[root@backup ~]# vim /etc/rsync_account
zls_bak:123
# 2.检查配置文件的模块名有没有出错
[zls]
# 3.检查服务端密码文件的权限 是不是600权限,不是就更改权限
[root@backup ~]# ll /etc/rsync_account
-rw-r--r-- 1 root root 12 May 9 09:29 /etc/rsync_account
[root@backup ~]# chmod 600 /etc/rsync_account
# 4.如果客户端也创建了密码文件,必须检查客户端的密码文件权限是不是600
第三种
# 不认识 uid 是rsync的用户,那就创建
[root@backup ~]# id rsync
id: rsync: no such user
[root@backup ~]# useradd rsync -s /sbin/nologin -M
第四种
# 权限不足,因为配置文件指定rsync用户传输文件,所有备份目录是root root,权限不够
[root@backup ~]# ll /backup
drwxr-xr-x 2 root root 6 May 9 09:14 /backup
# 修改属主和属组
[root@backup ~]# chown -R rsync.rsync /backup
[root@backup ~]# ll /backup
drwxr-xr-x 2 rsync rsync 6 May 9 09:14 /backup
第五种
# chdir failed
# 这个的意思是找不到备份服务器的备份目录,可能是误删除了,也可以能是创建错了,所以在服务器上重新创建
[root@backup ~]# mkdir /backup
rsync 守护进程模式工作流程缺一步都会报错
当执行rsync -avz /etc/passwd zls_bak@10.0.0.41::zls
的一瞬间
1.网络是否可以通讯,客户端是否能连接服务端的IP和端口(通过)
# 网络
# 端口
# 防火墙
# selinux
2.验证用户名和密码(通过)
- 检查配置文件:
auth users=zls_bak
- 检查密码文件里:
/etc/rsync_accout
内容zls_bak:123
- 检查密码文件的权限是不是600
- 检查模块名:配置文件中指定的[模块名]
3.检查机器上是否有配置文件中的uid指定的用户
4.检查对应模块名下面指定的path目录,是否有权限(uid指定用户的权限)
全部通过则没有问题
nfs报错
第一种
# No route to host #没有主机路由 #这个意思刚开始就说了 无非就是 网络 端口 防火墙 selinux 的问题
# 网络(通过)
## 查看服务端配置文件里面的ip,ping
[root@web01 ~]# ping 172.16.1.31
# 端口(nfs不检查端口)
# 防火墙
[root@nfs ~]# systemctl status firewalld
[root@nfs ~]# systemctl stop firewalld
# selinux
[root@nfs ~]# getenforce
第二种
# 查看服务端配置文件,允许的IP(网段)是谁
172.16.1.0/24 # 0/24 代表所有的网段
第三种
# 查看配置文件,目录的权限是不是rw ## ro就是只读
/yonghushuju 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
# 检查指定的共享目录权限,是不是666的用户
[root@nfs ~]# ll /yonghushuju/ -d
[root@nfs ~]# chown www.www /yonghushuju/
[root@nfs ~]# chown 666.666 /yonghushuju/
nfs 流程就是 在客户端上上传文件,在另外客户端也能共享,在nfs共享存储上也能共享
sersync 介绍
底层,使用的inotify
如果是把nfs的/user_upload
目录下面内容实时推送到rsync服务器的/backup
目录下
把inotify部署在,rsync的客户端上
那就是把inotify部署在nfs上,因为要监控nfs的目录状态,才能实时的推送
同理,sersync也部署在客户端
# sersync的一个部署,在nfs共享服务器上
# 1.安装sersync的依赖包
[root@nfs ~]# yum install -y rsync inotify-tools
# 2.下载sersync
[root@nfs ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 3.解压sersync
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
# 4.移动并改名
[root@nfs ~]# mv GNU-Linux-x86 /usr/local/sersync
# 5.修改配置文件
[root@nfs ~]# vim /usr/local/sersync/confxml.xml
## 从这开始看起,有修改的就要修改
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/> #修改
<modify start="true"/> #修改 ## true 开启 false 不行,不开启
</inotify>
<sersync>
# 客户端需要监控的目录
<localpath watch="/data"> #修改
# rsync服务端的IP 和 name:模块
<remote ip="10.0.0.41" name="nfs"/> #修改
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
# rsync命令执行的参数
<commonParams params="-az"/> #修改
# rsync认证开启 #rsync指定的匿名用户 #指定一个密码文件的位置权限必须600
<auth start="true" users="nfs_bak" passwordfile="/etc/rsync.pas"/> #修改
# 6.创建密码文件并设置权限为其他人不可查看
[root@nfs ~]# echo '123' > /etc/rsync.pas
[root@nfs ~]# chmod 600 /etc/rsync.pas
# 7.启动sersync(绝对路径启动)
[root@nfs ~]# /usr/local/sersync/sersync2 -rdo /usr/local/sersync/confxml.xml
修改前
修改后
基于sersync海量文件实时同步:TP
linux 9期架构作业 day5
sersync实时同步实战
底层,使用的inotify
如果是把nfs的/user_upload
目录下面内容实时推送到rsync服务器的/backup
目录下
把inotify部署在,rsync的客户端上
那就是把inotify部署在nfs上,因为要监控nfs的目录状态,才能实时的推送
同理,sersync也部署在客户端
部署sersync
思路
-
环境准备
-
配置nfs服务端
-
配置nfs的客户端和部署apache和php
-
配置rsync的服务端backup
-
配置sersync的客户端(nfs)
-
测试共享目录和实时同步备份
1. 环境准备
主机名 | 外网IP | 内网IP | 角色 | 部署服务 |
---|---|---|---|---|
web01 | 10.0.0.7 | 172.16.1.7 | rsync的客户端,nfs的客户端,网站 | rsync,nfs,apache,php |
web02 | 10.0.0.8 | 172.16.1.8 | rsync的客户端,nfs的客户端,网站 | rsync,nfs,apache,php |
nfs | 10.0.0.31 | 172.16.1.31 | rsync的客户端,nfs的服务端(共享存储) | rsync,nfs,sersync |
backup | 10.0.0.41 | 172.16.1.41 | rsync的服务端 | rsync |
2. 配置nfs服务端
# 1.下载nfs和rsync服务
[root@nfs ~]# yum install -y rpcbind nfs-utils
# 2.修改nfs的配置文件
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
# 3.创建通用服务的用户和用户组
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
# 4.创建共享目录,并且修改目录的属主和属组
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown www.www /data
# 5.启动服务并开机自启
[root@nfs ~]# systemctl start nfs.service
[root@nfs ~]# systemctl enable nfs.service
3. 配置nfs的客户端和部署apache和php(web01举例,其他客户端操作相同)
# 配置nfs客户端
[root@web01 ~]# yum install -y nfs-utils
# 部署apache和php
# 1.下载服务
[root@web01 ~]# yum install -y httpd php
# 2.修改服务的用户和用户组
[root@web01 ~]# vim /etc/httpd/conf/httpd.conf
User apache 修改成 User www
Group apache 修改成 Group www
# 3.创建服务的通用用户和用户组
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
# 4.在站点目录下解压php文件
[root@web01 ~]# cd /var/www/html/
[root@web01 /var/www/html]# rz
[root@web01 /var/www/html]# unzip kaoshi.zip
# 5.修改php代码,指定用户上传文件文件的目录
[root@web01 /var/www/html]# vim upload_file.php
修改为
$wen="/var/www/html/upload";
# 6.创建目录并修改目录的属主和属组
[root@web01 ~]# mkdir -p /var/www/html/upload
[root@web01 ~]# chown www.www /var/www/html/upload
# 7.启动和开机自启服务
[root@web01 ~]# systemctl start httpd
[root@web01 ~]# systemctl enable httpd
# 8.检查端口和进程
[root@web01 ~]# netstat -lntup |grep 80
[root@web01 ~]# ps -ef |grep [h]ttpd
# 9.查看服务端的共享目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
# 10.挂载目录
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/upload
4. 配置rsync的服务端backup
# 1.安装rsync
[root@backup ~]# yum install -y rsync
# 2.修改配置文件
# 指定启动rsync服务的用户id
uid = www
# 指定启动rsync服务的用户组id
gid = www
# 指定rsync服务启动的端口
port = 873
# 假装是root
fake super = yes
# 禁锢path目录
use chroot = no
# 最大连接数是200
max connections = 200
# 超时时间是600s
timeout = 600
# 忽略错误
ignore errors
# 可读可写
read only = false
# 其它客户端用户不允许查看模块名
list = false
# rsync服务的日志所在路径
log file = /var/log/rsyncd.log
########### 命令相关配置 #############
auth users = nfs_bak
secrets file = /etc/rsync_pass
[nfs]
comment = welcome to oldboyedu backup!
path = /backup
# 3.创建通用服务的用户和用户组
[root@backup ~]# groupadd www -g 666
[root@backup ~]# useradd www -g 666 -u 666 -s /sbin/nologin -M
# 4.创建密码文件
[root@backup ~]# echo 'nfs_bak:123' > /etc/rsync_pass
# 5.修改密码文件的权限,不让其他用户看见用户名和密码
[root@backup ~]# chmod 600 /etc/rsync_pass
# 6.创建备份目录并且修改属主和属组
[root@backup ~]# mkdir /backup
[root@backup ~]# chown www.www /backup/
# 7.启动服务并开机自启
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
# 8.检查端口和进程
[root@backup ~]# netstat -lntup |grep 873
[root@backup ~]# ps -ef |grep [r]sync
5. 配置sersync的客户端(nfs)
# 1.安装sersync的依赖包
[root@nfs ~]# yum install -y rsync inotify-tools
# 2.下载sersync
[root@nfs ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 3.解压sersync
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
# 4.移动并改名
[root@nfs ~]# mv GNU-Linux-x86 /usr/local/sersync
# 5.修改配置文件
[root@nfs ~]# vim /usr/local/sersync/confxml.xml
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/> #修改
<modify start="true"/> #修改
</inotify>
<sersync>
# 客户端需要监控的目录
<localpath watch="/data"> #修改
# rsync服务端的IP 和 name:模块
<remote ip="10.0.0.41" name="nfs"/> #修改
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
# rsync命令执行的参数
<commonParams params="-az"/> #修改
# rsync认证开启 #rsync指定的匿名用户 #指定一个密码文件的位置权限必须600
<auth start="true" users="nfs_bak" passwordfile="/etc/rsync.pas"/> #修改
# 6.创建密码文件并设置权限为其他人不可查看
[root@nfs ~]# echo '123' > /etc/rsync.pas
[root@nfs ~]# chmod 600 /etc/rsync.pas
# 7.启动sersync(绝对路径启动)
[root@nfs ~]# /usr/local/sersync/sersync2 -rdo /usr/local/sersync/confxml.xml
6. 测试实时同步和共享
从web01上上传文件
终端上也显示有
再到8ip上传一个
在查看7.8ip访问的都是同一个文件(共享完成)
实时备份共享完成