ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

负载均衡下多台服务器代码同步 rsync

2020-07-11 19:04:31  阅读:336  来源: 互联网

标签:负载 rsync www file rsyncd 服务器 多台


公司现在的服务器架构采用的是阿里的SLB(负载均衡)

  现在是有一个负载均衡对应两台ECS实例  负载均衡就是当有客户端的请求的时候 它会对后端server的服务器进行健康检查并根据设置的权重去分配请求,好处就是当其中某台服务器宕机不会造成损失。起到了容灾效果

现在的需求:

1、现在就是后端的server服务器都布置好了,代码怎么同步到每台服务器上,不可能在每台服务器都进行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服务器设置很简单 只需要增加密码文件即可

 

然后  然后 然后 敲黑板划重点一定要把开机自启动加上 否则服务器重启 或者宕机修复好之后  它是不会启动的 你需要手动重启服务 所以一定要加到开机自启动里面

A服务器

vi /etc/rc.local
/usr/bin/rsync --daemon --config=/ect/rsyncd.conf #开机自动运行
B服务器
 

vi /etc/rc.local
/usr/bin/rsync --daemon #开机自动运行
如图所示

 

 

然后测试同步

 

因为是负载均衡所以两太服务器配置的东西一摸一样

我们在A服务器增加1.txt  看看B服务器有没有自动增加

 

 

是增加的但是怎么增加的呢 

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

* * * * * sh /root/rsyncd.sh > /dev/null 2>&1
这样的话 就差不多每秒都会去更新

 这就是我们负载均衡 同步代码的根据  

假如入 以后有更多的 服务器加入到负载均衡下  我们在每台服务器都配置如B服务器那样 就可以同步更新  

假如你觉得定时任务1s还有不同步的情况话  你可以用一个三方服务器 专门传代码  然后负载均衡里面所有的服务器监听 三方服务器 这样每次我们往三方服务器传代码  负载均衡所有的服务器代码 都是同步更新的
————————————————
版权声明:本文为CSDN博主「rb_Russell」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/oljuydfcg/java/article/details/91639416

标签:负载,rsync,www,file,rsyncd,服务器,多台
来源: https://www.cnblogs.com/gaosf/p/13285025.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有