本文仅做记录,参考链接:https://blog.csdn.net/oljuydfcg/article/details/91639416
负载均衡配置好之后,遇到第一个问题就是代码怎么同步到每台服务器上,不可能在每台服务器都进行git pull 或者 svn update吧 现在server服务器少还好,后期对应n多个ECS实例怎么办?
于是便应用到的rsync 工具
现在我把负载均衡下的两台服务器分成A服务器和B服务器
现在第一步就是两台服务器都安装rsync
yum install rsync
安装完之后 查看 版本信息
rsync -version
因为两台服务器都是 一个命令安装的 保证版本一致,接下来就是配置A服务器:
vi /etc/rsyncd.conf
uid = nobody
gid = nobody #指定主机B的用户id和组
max connections = 4 #允许最大连接数 就是预序多少台服务器链接
read only = true #只读模式
#hosts allow = 202.207.177.180 #预序链接的ip 多个用逗号隔开
hosts allow = * # 现在是允许所有的服务器都能连
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log #日志文件
slp refresh = 300
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid #进程文件位置
lock file = /var/run/rsyncd.lock
[web]
path = /www/web
comment = Mirror to Hk server
read only = true
list = false
auth users = root
[www]
path = /www/web #B服务器需要备份当前服务器的文件夹
read only = false
auth users = root #允许的用户
secrets file = /etc/rsyncd.password #密码地址 后面有用
接下来就是刚才说的rsyncd.password密码文件 先配置A服务器的密码文件
密码格式为 用户名:密码 如上图所示
然后就是密码文件权限的更改:需要把文件权限设置为600权限 记住只能是600权限
A服务器设置好了 接下来设置B服务器 B服务器设置很简单 只需要增加密码文件即可
B服务器的密码文件权限也需要设置为600
然后 然后 然后 敲黑板划重点一定要把开机自启动加上 否则服务器重启 或者宕机修复好之后 它是不会启动的 你需要手动重启服务 所以一定要加到开机自启动里面
A服务器:
vi /etc/rc.local
/usr/bin/rsync --daemon --config=/ect/rsyncd.conf #开机自动运行
B服务器:
vi /etc/rc.local
/usr/bin/rsync --daemon #开机自动运行
如图所示:
然后测试同步(测试同步前需手动启动 rsync 具体启动方式查看开机启动命令)
这里需要注意的两点:
1、报错rsync: failed to connect to x.x.x.x: Connection refused (111)
原因:服务端rsync 服务没有开启
可通过命令:ps -ef|grep rsync 查看服务是否开启
解决:rsync --daemon
2、rsync开机没有启动,需要查看启动文件是否具有执行文件权限
参考链接:https://www.cnblogs.com/link01/p/12165245.html
具体原因及解决方案:
执行ll /etc/rc.local命令,发现/etc/rc.local映射文件是/etc/rc.d/rc.local
再ll /etc/rc.d/rc.local发现这个文件没有执行权限(少了x);
其实vi /etc/rc.local有这样一段话
Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
that this script will be executed during boot.
所以执行chome +x /etc/rc.d/rc.local命令后,启动可以执行这个文件了。
但是还有一个问题,需要保证rc.local文件里面执行的脚本都是可执行的,否则依然无效。
另外如果在rc.local添加多条重复的启动命令脚本,也是无效的。
是增加的但是怎么增加的呢?
执行命令:rsync -vzrtopg --progress root@192.168.100.206::www /www/web --password-file=/etc/rsyncd.password
这个命令 是在目标服务器上 执行而且一定要搞清每个代表的含义 特别是 源服务器配置需要需要备份的模块 www 这个模块
第一次运行这个文件的时候 会是所有文件都会检查一遍 以后在运行就是增量备份 变化的文件会监控到 去更新
实时同步更新文件设置
需要用到用到了 crontab 计划任务
首先在目标服务器 也就是B服务器 写个shell 脚本
#!/bin/bash
step=1 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
$(rsync -vzrtopg --progress root@192.168.100.206::www /www/web --password-file=/etc/rsyncd.password)
sleep $step
done
exit 0
然后在目标服务器也就是源服务器 crontab 定时执行
crontab -e
这样的话 就差不多每秒都会去更新
友情提示:
crontab 命令格式
f1 f2 f3 f4 f5 program
f1 是表示分钟,每时第几分钟,范围为0-59;
f2 表示小时,每天第几小时,范围为0-23;
f3 表示日,每月第几天,范围为1-31;
f4 表示月份,每年第几月,范围为1-12;
f5 表示星期,表示每星期第几天,范围0-7,0与7表示星期日,其他分别为星期1-6
program 表示要执行的程序
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论