环境
角色 | 服务器配置 | 操作系统版本 | 公网IP |
---|---|---|---|
即作为 slave 也作为 master |
阿里云ECS实例 server1 |
Ubuntu 14.04 nginx 1.4.6 |
47.101.70.109 |
即作为 slave 也作为 master |
阿里云ECS实例 server2 |
Ubuntu 14.04 nginx 1.4.6 |
106.14.151.244 |
设置开机自启Rsync
先从 server1 开始配置,server2 稍后做同样配置。
- 修改 /etc/default/rsync
1 | # 将false改为true |
Ubuntu 14.04 默认安装了 rsync,但 rsync 服务默认不是启动状态。
修改Rsync配置文件
- 复制配置文件到 etc 目录下
1 | $ cp /usr/share/doc/rsync/examples/rsyncd.conf /etc |
- 修改 /etc/rsyncd.conf
1 | # sample rsyncd.conf configuration file |
创建Master密码文件
- 创建 /etc/rsyncd-master.secrets,内容如下
1 | # 格式必须为,用户名:密码 |
注意:server1 作为 slave 端时,这个文件是 master 的用户名密码校验文件,建议命名为
rsyncd-master.secrets
。
- 给 /etc/rsyncd-master.secrets 赋权限
1 | $ chmod 0600 /etc/rsyncd-master.secrets |
创建Slave密码文件
- 创建 /etc/rsyncd.secrets,内容如下
1 | # 只写入salve端的密码即可 |
注意:server1 作为 master 端时,这个文件是 salve 端的密码校验文件,建议命名为
rsyncd.secrets
。
- 给 /etc/rsyncd.secrets 赋权限
1 | $ chmod 0600 /etc/rsyncd.secrets |
启动Rsync
1 | $ /etc/init.d/rsync start |
启动后,执行
ps -eaf | grep -i rsyncd | grep -v grep
查看 rsyncd 进程是否运行。
下载Sersync
- 使用
wget
下载
1 | $ wget https://gitee.com/jhon_tao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz |
- 解压到 /usr/local/ 目录
1 | $ tar -zxf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/ |
- 进入 /usr/local/ 目录
1 | $ cd /usr/local/ |
- 将 GNU-Linux-x86 文件更改命名为 sersync
1 | $ mv GNU-Linux-x86 sersync |
配置Sersync
- 进入 /usr/local/sersync 目录
1 | $ cd /usr/local/sersync |
- 备份 confxml.xml
1 | $ cp confxml.xml confxml.xml-bak |
- 修改 confxml.xml,内容如下
1 | <?xml version="1.0" encoding="ISO-8859-1"?> |
注意:阿里云ECS实例的安全组中需要添加873端口
启动Sersync
1 | $ /usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml |
设置开机自启Sersync
将
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml
写入到 rc.local 中,开机就能启动 sersync 守护进程同步数据。
测试文件双向实时同步
- 查看 sersync 进程
1 | $ ps -eaf | grep -i sersync | grep -v grep |
server1 和 server2 分别查看,确保 sersync 进程都已经存在。
- 在 server1 中创建文件
1 | $ echo '<?php phpinfo();' > /home/test/server1.php |
- 在 server2 中查看
1 | $ cat /home/test/server1.php |
- 在 server2 中创建文件
1 | $ echo '<?php phpversion();' > /home/test/server2.php |
- 在 server1 中查看
1 | $ cat /home/test/server2.txt |
可以看到,文件双向实时同步成功。