服务器集群代码部署—rsync
简介最近在对项目进行压测的过程中发现我们代码服务器都是集群部署的,但是既然是集群那么我们发布代码的时候该如何做到同时发布的效果,不可能每个服务器都是git pull下吧!所以这里想到了rsync,文件同步服务器。本文就主要记录如何搭建rsync服务,并且如何做到同步代码。
一、前期准备
服务器A:作为rsync服务端(192.168.71.109)
服务器B:作为同步服务器(192.168.71.111)
2、安装rsync服务
yum -y install rsync
需要在两台服务器上都安装
3、配置rsync服务端(192.168.71.109)
[root@localhost ~]# vim /etc/rsyncd.conf #配置主配置文件,内容如下 uid = root gid = root use chroot = yes max connections = 100 pid file = /var/run/rsyncd.pid exclude = lost+found/ transfer logging = yes timeout = 900 ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [www] path = /home/www comment = www data read only = true #一个存在于服务器端的用户,如有多个逗号隔开,并且要求具有对需同步目录下的文件的读和执行权限 auth user=root ##存放用户名和密码的地方 secrets file=/etc/rsyncd.passwd #代表允许所有的地址,安全起见,最好配置,可以配置为*,表示允许所有客户端 hosts allow = 192.168.*.*
[root@localhost ~]# vim /etc/rsyncd.passwd #配置访问用户和密码,内容如下,多个用户需要多行 root:123456 [root@localhost ~]# chmod 600 /etc/rsyncd.passwd #并且需要设置权限为600,必须是这个
启动rsync服务端:
[root@localhost ~]# rsync --daemon --config=/etc/rsyncd.conf [root@localhost ~]# netstat -ntlp|grep rsy tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 29666/rsync tcp6 0 0 :::873 :::* LISTEN 29666/rsync
从上面可以看出,默认端口诶873,如果需要修改,请在配置文件中指定port配置即可
4、配置客户端(192.168.71.111)
[root@localhost ~]# vim /etc/rsyncd.password #只需要配置密码即可 123456 [root@localhost ~]# chmod 600 /etc/rsyncd.password #权限需要设置对
5、同步文件
同步文件需要在客户端服务器上执行如下命令:
[root@localhost www]# rsync -avz --delete root@192.168.71.109::www /home/www --password-file=/etc/rsyncd.password
–delete:删除与目标目录不一致的文件
::www:服务端配置的www对应
/home/www:本地服务器需要同步的目录
6、排除不必要的目录和文件
# 首先在/etc下建一个目录rsync.d
[root@localhost ~]# mkdir /etc/rsync.d
# 在/etc/rsync.d下建一个www项目的排除文件目录
[root@localhost rsync.d]# vim www.exclude.list #内容如下,但是必须是相对路径,不能是绝对路径
runtime
.git
tmp
# 指定排除文件同步
[root@localhost rsync.d]# rsync -avz --delete root@192.168.71.109::www /home/www --password-file=/etc/rsyncd.password --exclude-from=/etc/rsync.d/www.exclude.list
7、定时同步
crontab 定时执行,根据自己需要去处理
rsync常用选项
• -a 包含-rtplgoD
• -r 同步目录时要加上,类似cp时的-r选项
• -v 同步时显示一些信息,让我们知道同步的过程
• -l 保留软连接
• -L 加上该选项后,同步软链接时会把源文件给同步
• -p 保持文件的权限属性
• -o 保持文件的属主 //如果对方没有就显示数字
• -g 保持文件的属组
• -D 保持设备文件信息
• -t 保持文件的时间属性
• --delete 删除DEST中SRC没有的文件
• --exclude 过滤指定文件,如–exclude “logs”
• -P 显示同步过程,比如速率,比-v更加详细
• -u (update)加上该选项后,如果DEST中的文件比SRC新,则不同步。
• -z 传输时压缩