美文网首页
Nginx负载均衡 多服务器实现代码同步

Nginx负载均衡 多服务器实现代码同步

作者: Young老湿 | 来源:发表于2020-01-12 17:42 被阅读0次

上篇https://www.jianshu.com/p/2dbe976420f2
介绍了通过修改【配置文件Nginx.conf】文件实现服务器负载均衡,那么如何实现多台服务器的数据文件同步呢?那就要用到【rsync数据同步工具】,操作稍微麻烦点,我尽量简单的说,不提太多的专业术语。
好了,不废话开始吧!

准备工作:
一、两台服务器【Centos7为例】:127.0.0.1(主服务器,也是代码或文件更新的服务器)127.0.0.2(同步服务器)#多服务器道理一样
二、Xshell6远程连接工具(你用Pptuy我也不拦着)
开始干活:
1.连接127.0.0.1
2.主副服务器 yum安装Rsync

yum install -y rsync

然后“主服务器”去宝塔面板后台文件根目录路径 :【/etc/rsyncd.conf】编辑配置文件,有时候这个文件会存在,如果不存在,手动创建即可。

#rsyncd.conf文件【/root/etc/rsyncd.conf】
motd file = /etc/rsyncd.motd
#设置服务器信息提示文件,在该文件中编写提示信息
transfer logging = yes
#开启rsync数据传输日志功能
log file = /var/log/rsyncd.log
#设置日志文件名,可通过log format参数设置日志格式
pid file = /var/run/rsyncd.log
#设置rsync进程号保存文件名称
lock file = /var/run/rsync.lock
#设置锁文件名称
port = 873
#设置服务器监听的端口号,默认是873
address = 127.0.0.1
#设置本服务器所监听网卡接口的ip地址
uid = nobody
#设置进行数据传输时所使用的帐户名或ID号,默认使用nobody,也可改为root
gid = nobody
#设置进行数据传输时所使用的组名或GID号,默认使用nobody,也可改为root
#若为yes, rsync会首先进行chroot设置,将根映射在下面的path参数路径下,对客户端而言,系统的根就是path参数指定的路径。但这样做需要root权限,并且在同步符号连接资料时只会同步名称,不会同步内容。
use chroot = no
read only = yes
#是否允许客户端上传数据,yes表示不允许
max connections = 0
#设置并发连接数,0表示无限制
[common]
#自定义模块名,rsync通过模块定义同步的目录,可定义多个
comment = web content
#定义注释说明字串
path = /www/wwwroot/
#同步目录的真是路径通过path指定
ignore errors
#忽略一些IO错误
#exclude = temp/
#exclude指定common目录下某个目录可以不同步数据
auth users = rsyncadmin
#设置允许连接服务器的账户,此账户可以是系统中不存在的用户
secrets file = /etc/rsyncd.secrets
#密码验证文件名,该文件权限要求为只读,建议为600,仅在设置auth users后有效
hosts allow = 127.0.0.2
#设置哪些主机可以同步数据,多ip和网段之间使用空格分隔
hosts deny=*
#除了hosts allow定义的主机外,拒绝其他所有
list = false
#客户端请求显示模块列表时,本模块名称是否显示,默认为true

接下来穿件Rsync账户和密码文件,但要注意创建的文件,必须要和上面的auth users 允许连接账户一致。

echo "tom:123" > /etc/rsyncd.secrets #写入账户密码到文件
chmod 600 /etc/rsyncd.secrets #更改权限为600
echo "welcome to access" > /etc/rsyncd.motd  #欢迎语
rsync --daemon    # --daemon表示后台执行,客户端开启rsync不需要--daemon选项
echo "/usr/bin/rsync --daemon" >> /etc/rc.local    #开机启动rsync服务
firewall-cmd --permanent --add-port=873/tcp    #添加防火墙规则

重启Rsync,这里可能麻烦点:

ps -ef | grep rsync 

输出类似:

root      9995  9977  0 18:03 pts/0    00:00:00 grep --color=auto rsync

杀掉进程:

kill -9 9995

设置Rsync开机自启动:

echo "rsync --daemon" >> /etc/rc.local
chmod -R 755  /etc/rc.local 

重启服务器:

reboot

接下来同步服务器安装好Rsync后写入密码文件

yum install -y rsync  #安装Rsync服务
echo "admin123" > /etc/rsyncd.secrets #客户端只需要把密码写入文件
chmod 600 /etc/rsyncd.secrets
firewall-cmd --permanent --add-port=873/tcp    #添加防火墙规则,允许873端口的数据访问-centos 7写法

好了以后就测试文件同步:

rsync -vzrtopg --progress --delete --exclude ".user.ini"  --password-file=/etc/rsyncd.secrets rsyncadmin@127.0.0.1::common /www/wwwroot

这里有几个参数需要说明一下,--delete(这个是删除和主服务器不同的文件以及文件夹) --exclude ".user.ini"(exclude参数是同步时需要排除的文件或者文件夹PS:文件夹后必须要加“/”,这里可以是绝对路径如:“www/wwwroot/test/index.php”)
没什么问题的话就可以看到如下:


TIM截图20200112195155.jpg

OK,说明同步没问题,如果不行请重启一下两台服务器或者检查一下上面的参数有没有问题!
接下来可以根据自己的需求来设置同步时间,我因为我自己用的是集成的CMS程序,没有太多的文件需要更改,基本上每10分钟同步一次即可!
那么直接在宝塔面板后台设置定时任务-Shell命令:

rsync -vzrtopg --progress --delete --exclude ".user.ini"  --password-file=/etc/rsyncd.secrets rsyncadmin@127.0.0.1::common /www/wwwroot

设置好自己需要同步的时间,搞定》。。执行一下,查看日志,完美!
当然有些大佬部署的程序需要以秒或者毫秒级的同步,那就请移驾到https://www.jianshu.com/p/59a3ea7c78b9,会再使用inotify工具来时时检测文件变化。好了,基本上就是这样,此文就当是我自己的备忘录,因为懒得再做博客了。。。嘎嘎

相关文章

网友评论

      本文标题:Nginx负载均衡 多服务器实现代码同步

      本文链接:https://www.haomeiwen.com/subject/xgqwactx.html