一 应用场景描述
在LB后端有多台游戏服运行PHP代码,每台服务器的环境部署一样,PHP代码一样。现在有时需要更改游戏配置文件,如更改各个区服的开服状态等。登陆到每台服务器去更改相应的文件会比较繁琐,需要当在第一台服务器上的配置文件作更改时,其他服务器上的配置文件自动更改。于是考虑可以使用rsync + inotify的方式来同步代码。
二 rsync和inotify配置
使用yum -y install rsync安装rsync服务
rsync有两种工作模式,命令行模式和C/S模式
使用man rsync查看rsync命令的详细使用
使用man rsyncd.conf查看rsync C/S模式运行时的配置文件的详细配置
启动rsync C/S模式
/usr/bin/rsync --daemon
/etc/rsyncd.conf 这个文件默认不存在,需要手动创建一个.
uid = root gid = root use chroot = no max connections = 50 #strict modes = yes pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [login_nginx] path = /etc/nginx/ comment = login nginx ignore errors read only = no write only = no hosts allow = 192.168.1.0/24 hosts deny = * list = false [game_center] path = /var/www/html comment = game_center code ignore errors read only = no write only = no hosts allow = 192.168.1.0/24 hosts deny = * list = false
这里uid和gid特别重要,表示当传输文件时,rsyncd守护进程应该具有的对指定目录的权限。如果权限不对,传输将失败。
use chroot 如果设置为true,那么rsync 在传输文件之前会chroot到指定的目录下。
list 这个参数设置当客户端请求列出可用模块时,这个模块是否可以列出
max connections 设置最大并发连接数,默认是0,表示无限制。
game_center 是这个模块的名称
path 设置同步目录
ignore errors 忽略一些I/O错误
read only 设置是否允许只读
write only 设置是否允许只写
hosts allow 设置允许访问的IP范围,可以是单个IP,也可以是IP段
hosts deny 设置拒绝访问的IP范围