多台web服务器代码同步之rsync+inotify-tool

rsync+inotify

企业网站同步的方式有多重,可以用共享硬盘挂载方式,但是也可以是用rsync+inotify-tool的方式。

rsync:负责把数据推送到服务端。

inotify:负责在客户端监控代码或者文件变更,触发推送。

环境说明:

centos-6.5

A服务端(192.168.10.2)   B客户端(192.168.10.1)

2:配置文件同步

首先都要安装rsync 服务 ,在主节点A上安装rsync 加inotify-tools

yum -y install rsync

下载安装inotify-tools

wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

tar zxvf inotify-tools-3.14.tar.gz

cd inotify-tools

./configure && make && make install

做好链接ln -sv /usr/local/lib/libinotify* /usr/lib/ 如果是64位系统 ln -sv /usr/local/lib/libinotify* /usr/lib64

要不然启动会报这个错误“/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0”

在主机B 上配置rsync

建立rsyncd.conf 配置文件

cat /etc/rsyncd.conf

uid = root#指定该模块传输文件时守护进程应该具有的uid

gid = root #指定该模块传输文件时守护进程应该具有的gid

use chroot = no

hosts allow =192.168.10.1 192.168.10.2 #充许任何主机连接

max connections = 10 #客户端最大连接数,默认0(没限制)

pid file = /var/run/rsyncd.pid #运行进程的ID写到哪里

lock file = /var/run/rsync.lock #lock记录文件

log file = /var/log/rsyncd.log #日志记录文件

[web] # 这里是认证的模块名,在client端需要指定

path =/  # 需要做备份的目录。(最好是备份目录的当前目录,因为他会把整个文件夹备份过来,做多了就重复了。)

comment = dwg file

ignore errors # 可以忽略一些无关的IO错误

read only = no #no客户端可上传文件,yes只读

list = false

auth users = user1 # 认证的用户名,如果没有这行,则表明是匿名

secrets file = /etc/server.pas # 指定认证口令文件位置

建立认证密码文件

cat /etc/server.pas

User1:123456

chmod 600 /etc/server.pas

启动服务 rsync --daemon

然后在主机A 上建立 密码文件

cat /etc/server.pas

123456

chmod 600 /etc/server.pas

然后在主接点 A 上创建监控脚本

监控/usr/local/nginx/html/目录的 modify,delete,create,attrib 情况有这些情况就直接推送到B服务器上去

cat /root/rsync.sh

#!/bin/bash

src=/web

/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y/%H:%M‘ --format ‘%T %w %f‘ -e modify,delete,create,attrib $src | while read file

do

rsync -vzrtopg --delete --progress --password-file=/etc/server.pas $src user1@192.168.10.1::web            #A观察自己有变动了向B推送,要是后面再加参数,如 192.168.10.1::web /web测向自己推送。

done

(注视:

-m 是保持一直监听

-r 是递归查看目录

-q 是打印出事件

--timefmt 是指定时间的输出格式

--format 指定文件变化的详细信息

-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件

然后运行

nohup ./rsync.sh &

时间: 2024-11-10 03:00:53

多台web服务器代码同步之rsync+inotify-tool的相关文章

python批量同步web服务器代码核心程序

#!/usr/bin/env python #coding:utf8 import os,sys import md5,tab from mysql_co.my_db import set_mysql from ssh_co.ssh_connect import sshd from ssh_co.cfg.config import ssh_message,item_path from file import findfile def my_mysql(): db_file={} my_conne

两台web服务器做文件共享,负载均衡

服务器环境:httpd.php.MySQL.DNS.NFS共配置4台虚拟机,web服务各一台,PHP.DNS一台,MySQL.NFS一台. 网段使用172.16.0.0/16 注:httpd,php,DNS服务在此前的博客中有详细说明,这里就不在详细演示,在此前的基础上追加安装,MySQL,NFS 一.安装mysql-5.5.33 下载mysql-5.5.33-linux2.6-x86_64.tar.gz软件包 1.准备数据存放的文件系统 因为数据总是在动态增长的,所以我们要创建一个逻辑卷来保存

heartbeat 配置两台web服务器高可用集群案例

通过heartbeat 配置两台web服务器高可用集群案例: 拓扑: web1:192.168.0.101 hostname: web1.example.com web2:192.168.0.102 hostname:web2.example.com vip:192.168.0.254 nfs服务器:192.168.0.100(存放web页面) 注意: 1主机名要与uname -n 保持一致 2.web1与web2主机的date时间保持同步 3.web1与web2,ssh双机互信通信 4.关闭i

多台web服务器之间共享session

常见的几种方法如下: 1. 写客户端Cookie的方式 当用户登陆成功以后,把网站域名.用户名.密码.token.session有效时间全部采用cookie的形式写入到客户端的cookie里面,如果用户从一台Web服务器跨越到另一台服务器的时候,我们的程序主动去检测客户端的cookie信息,进行判断,然后提供对应的服务,当然,如果cookie过期,或者无效,自然就不让用户继续服务了.当然,这种方法的弊端就不言而喻了,比如客户端禁用了cookie或者cookie被黑客窃取了呢? 2. 服务器之间S

利用nfs共享实现多台web服务器的负载均衡(转载,没实现过)

一.实验目的 本实验主要通过nfs解决多台web服务器负载均衡的问题和数据同步的问题. 二.实验环境: 如上拓扑图所示,在server1上安装有mysql数据库,server2和server3通过nfs共享server1上的mysql数据库,同时,将discuz网站的源码放在server1上,即:server1只运行mysql,而server2和server3只运行php和apache.这样可以保证用户不管访问server2或者server3都可以得到相同的结果. 三.实验步骤 1.server

Tiny Web服务器代码分析

Tiny Web服务器代码分析 <深入理解计算机系统>中开发了一个小但是功能齐全的称为Tiny的web服务器,这里是Tiny服务器的源码解析. 1.Tiny的main程序 Tiny是一个迭代服务器,通过命令行中传递来的端口值,调用Open_listenfd()函数打开一个监听套接字,然后Tiny执行无限循环:服务器阻塞在accept,等待监听描述符listenfd上的连接请求,当服务器从accept返回connfd,表明已经与客户端建立起了连接,执行事务,并关闭连接它的那一端,进行下一次循环.

两台web服务器实现负载均衡的解决方案

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 总体方案 平台规划拓扑图如下: 总体解决方案: 两台web服务通过DNS实现负载均衡,共享NFS服务器,通过NFS服务器共享MySQL服务器 说明:接下来将搭建DNS服务器.两台web服务器.NFS服务器以及MySQL服务器,在此过程中只给出实现过程及其步骤,望理解. 搭建DNS服务器 1.编辑主配置文件 # vim /etc/named.conf options { directory   "

Cacti监控一台Web服务器上多个Tomcat端口的实现

因为一台web应用服务器上面安装了多台tomcat,有多个端口,比如默认的8080,还有后续追加的9100,9300,9500等等.一个cacti_host_template_tomcat_server.xml模板只能指定监控一个tomcat服务端口. 因此如果想要监控一台web服务器上的多个tomcat服务器,那么就必须另外想办法,按照一个host上面一个模板监控一个tomcat服务来说的话,要想在一个host上面监控多个tomcat服务就需要构建多个模板xml文件.目前想到2种方法: (1)

手动安装Sharepoint2013并配置Sharepoint集群的第二台web服务器

手动安装第二台中文版本sharepoint2013(未连接互联网,仅连接局域网,局域网内可以远程),使用与(第一台sharepoint2013)相同的数据库BD-SQL01, 注:在连接互联网情况下很多插件可以自动下载并安装,可略过,这里主要解决手动安装问题. 1.首先确保.NetFramework3.5已经安装,如果没有安装,请打开服务器管理器,添加角色和功能进行安装. 2.手动安装SharePoint2013 未连接互联网情况下手动安装SharePoint2013预安装文件.首先将下载好将s