苟哥的笔记本
首页
文章归档
关于
文章归档
关于
首页
架构
正文
多服务器间同步代码
苟哥
2020-02-26 PM
1385℃
0条
在上一篇文章([《Apache、Nginx配置负载均衡》](http://www.i366211.com/archives/117/ "《Apache、Nginx配置负载均衡》"))说到了服务器负载均衡的配置,实际运用中还需要解决一个问题: 代码同步。在上网查资料之前,根据以往经验,会优先想到git版本控制工具,但避免不了会遇到一个问题:服务器数量较多的时候,依次使用git拉取最新代码,延迟性会被不断放大,导致大批量落在这些服务器的请求会出现不可预估的服务端错误,因此这个方案可以直接pass。另一种方案是使用rsync+sersync,可以很好地解决此问题。 ## 准备工作 - 服务器系统均为内核版本2.6以上的Linux操作系统,因为需要2.6以上才支持inotify。可通过以下命令查看系统版本: ```shell [root@mail ~]# uname -a Linux mail.linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux ``` - 一台主服务器A(即此机器上的代码是人为改动代码),演示ip为192.168.232.129 - 一台从服务器B(当主服务器代码变动,此服务器会自动),演示ip为192.168.232.128 ## 配置服务器B 1、安装rsync 检查是否安装了rsync: ```shell rpm -qa |grep rsync ``` 如果未安装,则进行安装: ```shell yum –y install rsync ``` 2、新建rsync配置文件 ```shell vim /etc/rsyncd.conf ``` 内容如下: ```shell uid = root gid = root use chroot = no max connections = 3600 log file = /var/log/rsyncd.log log format = %t %a %m %f %b pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock timeout = 300 exclude = .git [websites] path = /www/wwwroot/tp5.demo.com list = yes comment = this is comment ignore errors = yes read only = no hosts allow = 192.168.232.129 #允许连接的IP hosts deny = * auth users backup #安排用户backup执行同步任务 secrets file = /etc/rsyncd.secrets #这是密码文件,对应backup的密码 ``` 3、新增同步用户backup ```shell useradd backup ``` 设置用户密码: ```shell passwd backup ``` 4、新增密码文件rsyncd.secrets ```shell vim /etc/rsyncd.secrets ``` 内容如下: ```shell backup:123456 #格式为 用户名:密码 ``` 修改文件权限: ```shell chmod 600 /etc/rsyncd.secrets ``` 5、启动服务 ```shell /usr/bin/rsync --daemon --config=/etc/rsyncd.conf ``` 6、设置开机启动 ```shell echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local ``` 给/etc/rc.local 增加可执行权限: ```shell chmod o+x /etc/rc.local ``` ## 配置服务器A 1、安装sersync: ```shell wget https://raw.githubusercontent.com/orangle/sersync/master/release/sersync2.5.4_64bit_binary_stable_final.tar.gz tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz #解压 mv GNU-Linux-x86 /usr/local/sersync #移动目录到/usr/local/sersync ``` 2、配置confxml.conf文件 ```shell cd /usr/local/sersync cp confxml.conf confxml.conf.back vim confxml.conf ``` 内容如下: ```shell
``` 3、新增密码文件 ```shell vim /etc/rsync.pas ``` 内容为: ```shell 123456# ``` 注: 123456代表的是服务器B端的backup密码,并且要以"#"做结尾。如果有多个密码,增加多行就行。 修改文件权限: ```shell chmod 600 /etc/rsync.pas ``` 4、启动sersync服务 ```shell /usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml.xml ``` 5、设置开机启动 ```shell echo "/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml.xml" >> /etc/rc.local ``` 给/etc/rc.local 增加可执行权限: ```shell chmod o+x /etc/rc.local ``` ## 测试 在服务器A中的/www/wwwroot/tp5.demo.com目录下新增文件,发现会同步到服务器B中。 不过我发现之前已经存在的文件,好像不会被inotify 监测到,因此无法进入同步任务中。
标签:
rsync
,
sersync
,
服务器间代码同步
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
http://www.i366211.com/archives/119/
上一篇
Apache、Nginx配置负载均衡
下一篇
webStorm 2019 激活码,phpStorm 2019激活,idea激活,pyCharm激活
取消回复
评论啦~
提交评论
栏目分类
软件安装
10
开发工具
8
算法
2
测试
1
架构
3
填坑记
2
开源
6
科普
6
私域
2
读书笔记
4
编程
48
运营
3
管理
1
标签云
算法
C程序设计语言
C语言
Java
mysql
PHP
ffmpeg
golang
VueJs
脚手架
VueJs实战项目
Intellij IDEA
Centos7
Hyperf
抖音运营
杰克韦尔奇
跌荡一百年
生成海量测试数据
企业管理
习题2-3
习题2-4
习题2-6
异常分类
File
习题2-7
习题2-8
习题2-9
习题3-3
习题3-4
习题3-5
友情链接
申请
SaaS引擎
机器人框架
京东捡漏