首页 > 代码库 > 使用rsync + inotify 实现多台游戏服代码自动实时同步

使用rsync + inotify 实现多台游戏服代码自动实时同步

一 应用场景描述

 在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范围



本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1583159

使用rsync + inotify 实现多台游戏服代码自动实时同步