由于阿里云SLB不提供ECS间的数据同步服务,如果部署在SLB后端ECS上的应用服务是无状态的,那么可以通过独立的ECS或RDS服务来存储数据;如果部署在SLB后端ECS上的应用服务是有状态的,那么需要确保这些ECS上的数据是同步的。
我们通过Rsync来实现多个ECS之间的数据同步。
问题 @ERROR: chroot failed
@ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
原因:
服务器端的目录不存在或无权限。
解决办法:
创建目录并修正权限可解决问题。
问题 skipping non-regular file
receiving incremental file list
skipping non-regular file “vendor/bin/doctrine”
skipping non-regular file “vendor/bin/doctrine.php”
sent 1990 bytes received 489209 bytes 327466.00 bytes/sec total size is 182515746 speedup is 371.57
原因:
source源文件有软链接。
解决方法:
修改为 rsync -va,其中 -a == -rlptgoD (no -H,-A,-X) 或者 rsync -rvltOD 也可以。
解决后:
receiving incremental file list
vendor/bin/doctrine -> ../doctrine/orm/bin/doctrine
vendor/bin/doctrine.php -> ../doctrine/orm/bin/doctrine.php
sent 1998 bytes received 489279 bytes 327518.00 bytes/sec total size is 182515746 speedup is 371.51
问题@ERROR: module is read only
sending incremental file list
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(866) [receiver=3.0.6]
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6]
原因:
source源服务器端权限设置read为only只读权限。
解决方法:
read only = false
问题@ERROR: auth failed on module tee
@ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.6]
原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
解决方法:
提供正确的用户名密码解决此问题。
问题 @ERROR: Unknown module ‘tee_nonexists’
@ERROR: Unknown module ‘tee_nonexists’ rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.6]
原因:
服务器不存在指定模块。
解决方法:
提供正确的模块名或在服务器端修改成你要的模块以解决问题。
问题 password file must not be other-accessible
password file must not be other-accessible
continuing without password file
Password:
原因:
这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。
解决方法:
chmod 600 rsyncd.pwd
问题 rsync: failed to connect No route to host
rsync: failed to connect to 192.168.1.10: No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=3.0.6]
原因:
对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。
解决方法:
在iptables 中开放该端口,语句如下:
iptables -I INPUT -p tcp –dport 873 -j ACCEPT
rsync默认端口873,其实就是把tcp udp的873端口打开。
问题 rsync error: error starting client-server protocol
rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.6]
原因:
/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。
问题 rsync: chown “” failed: Invalid argument (22)
rsync: chown “” failed: Invalid argument (22)
原因:
权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)
问题 @ERROR: daemon security issue — contact admin
@ERROR: daemon security issue — contact admin rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
原因:
同步的目录里面有权限不足的软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。
问题 rsync: read error: Connection reset by peer (104)
rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.6]
解决:很大可能是服务器端没有开启 rsync 服务,开启服务。
问题 @ERROR: failed to open lock file
@ERROR: failed to open lock file rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.6]
解决:配置文件 rsync.conf 中添加 lock file = rsyncd.lock 即可解决。