1 2 |
web1:192.168.1.180 dir=/data/www/ecstore web2:192.168.1.181 dir=/data/www/ecstore |
rsync+lsyncd文件同步
安装服务:lsyncd阿里云yum源epel有该服务,没有的话需要安装(yum -y install epel-release)
1 2 3 4 |
yum -y install rsync lsyncd xinetd chkconfig rsync on chkconfig lsyncd on chkconfig xinetd on |
1.rsync配置
web1:
1 2 3 4 5 6 7 8 9 10 |
log file = /data/logs/sync/rsyncd.log pid file = /data/logs/sync/rsyncd.pid lock file = /var/run/rsync.lock use chroot = yes [www] path = /data/www/ecstore hosts allow = 192.168.1.181 uid = www gid = www read only = false |
web2:
1 2 3 4 5 6 7 8 9 10 |
log file = /data/logs/sync/rsyncd.log pid file = /data/logs/sync/rrsyncd.pid lock file = /var/run/rsync.lock use chroot = yes [www] path = /data/www/ecstore hosts allow = 192.168.1.180 uid = www gid = www read only = false |
2.lsync配置
web1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
settings = { logfile = "/data/logs/sync/lsyncd.log", statusFile = "/data/logs/sync/lsyncd.stat", statusInterval =1, } sync{ default.rsync, source="/data/www/ecstore", target="192.168.1.181::wwroot/", excludeFrom = "/etc/lsyncd.exclude", init=false, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true } } |
web2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
settings = { logfile = "/data/logs/sync/lsyncd.log", statusFile = "/data/logs/sync/lsyncd.stat", statusInterval =1, } sync{ default.rsync, source="/data/www/ecstore", target="192.168.1.180::www/", excludeFrom = "/etc/lsyncd.exclude", init=false, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true } } |
重启服务:
1 2 |
service xinetd restart service lsyncd restart |
测试:
1 |
rsync -v rsync://192.168.1.180 |
nfs文件共享方案
安装nfs服务并启用
1 |
yum -y install nfs-utils rpcbind |
配置开机启动
1 2 |
chkconfig nfs on chkconfig rpcbind on |
启动nfs
1 2 |
service rpcbind start(先启动,再启动nfs,有依赖关系) service nfs start |
配置nfs信息
1 |
vim /etc/exports |
写入除网站data以外的目录(注意配置,尽量写内网ip,如:192.168.1.180,不要写127.0.0.1,否则不要同步config目录)
注意:下例子是ERP的配置,不同版本系列可能目录不同,注意规避细节,501和502是www用户的gid和uid不同系统不同
1 2 3 4 5 6 7 8 9 |
/data/www/app 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/public 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/custom 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/upgrade 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/config 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/crontab 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/script 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) /data/www/tools 192.168.1.181(rw,sync,all_squash,anonuid=501,anongid=502) #这里也可以用*代替内网ip,但个人推荐使用内网ip |
查看挂载NFS
1 2 3 4 5 6 7 |
#showmount -e 192.168.1.180 Export list for 192.168.1.180: /data/httpd/www/ecstore/app/wap 192.168.1.181 /data/httpd/www/ecstore/i18n 192.168.1.181 /data/httpd/www/ecstore/themes 192.168.1.181 /data/httpd/www/ecstore/wap_themes 192.168.1.181 /data/httpd/www/ecstore/public 192.168.1.181 |
如果能显示以上信息,说明NFS配置是没问题的
复制web1的网站目录,scp到web2
1 |
tar -zcvf web.tar.gz /data/www/web1 && scp web.tar.gz 192.168.1.181:/data/www |
进入web2服务器,解压网站文件,删除 以上目录里面的信息
1 |
rm -rf /data/www/app/* /data/www/public/* /data/www/custom/* /data/www/upgrade/* /data/www/config/* /data/www/crontab/* /data/www/script/* /data/www/tools/* |
编辑/etc/fstab,设置开机自动挂载
1 2 3 4 5 6 7 8 |
192.168.1.180:/data/www/tools /data/www/tools nfs defaults 0 0 192.168.1.180:/data/www/script /data/www/script nfs defaults 0 0 192.168.1.180:/data/www/crontab /data/www/crontab nfs defaults 0 0 192.168.1.180:/data/www/config /data/www/config nfs defaults 0 0 192.168.1.180:/data/www/upgrade /data/www/upgrade nfs defaults 0 0 192.168.1.180:/data/www/custom /data/www/custom nfs defaults 0 0 192.168.1.180:/data/www/public /data/www/public nfs defaults 0 0 192.168.1.180:/data/www/app /data/www/app nfs defaults 0 0 |
先看文件夹下是否有信息残留,没有的话,执行挂载
1 |
mount -a |
touch 个文件试试,如果正常写入,则表示成功
rsync同步方案(该方案需要网站后台锁定到其中一台服务器,适合2台以上集群)
1.多台web 都要配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
yum -y install xinetd chkconfig xinetd on chkconfig rsync on /etc/init.d/xinetd start #查看是否开机启动 chkconfig --list|grep rsync chkconfig --list|grep xinetd vim /etc/rsync.conf log file = /data/logs/sync/rsyncd/rsyncd.log(需要有相应目录) pid file = /data/logs/sync/rsyncd/rsyncd.pid lock file = /var/run/rsync.lock use chroot = yes [www] path = /data/www/ecstore hosts allow = 10.0.1.0/24(内网网段,可以只允许主服务器) comment = update ignore errors uid = www gid = www read only = false |
重启服务
1 |
/etc/init.d/xinetd restart |
2.其他机器不需要网站目录程序,创建个/data目录,直接把整个网站推送过去
1 2 |
rsync -vzrtopg --numeric-ids --delete --exclude=data/logs --exclude=data/cache --progress /data/www/ecstore/public www@10.0.1.2::www rsync -vzrtopg --numeric-ids --delete --exclude=data/logs --exclude=data/cache --progress /data/www/ecstore/public www@10.0.1.3::www |
如果需要保持数据一致,需要定时推送,推送服务器IP为10.0.0.1,公网IP:x.x.x.x
重新执行下该命令,估算下时间,然后创建计划任务,计划任务执行时间尽量大于执行的时间
3.登录后台操作的,配置hosts文件,域名为绑定激活的域名
1 2 3 4 5 6 |
#windows下: C:\Windows\System32\drivers\etc\hosts x.x.x.x www.ceshi.com #mac下: sudo vim /etc/hosts x.x.x.x www.ceshi.com |
该方案必须锁定,必须执行第3步
注:文件同步之后,还需要kvstore,cache,以及数据库同步,config.php有相关配置
2016年12月23日 16:36 沙发
最近在看鸟哥的书。准备花一两个月时间来熟悉下Linux
2016年12月23日 18:11 1层
@Sharp.CJ 鸟哥的书很NB的,你看一个星期就够了。。