概述
最近在做一个web项目,要求做成群集形式。方案是nginx+tomcat+memcached_session_manager,部署环境是Ubuntu 10.04 Server LTS。项目快完成时发现自己忽略了文件同步问题,于是立即开动google,满世界寻找解决方案。
这个项目有很多需要用户上传的文件,比如用户的形象照片,视频文件等。在群集中,用户上传的文件往往被某个节点的服务器保存在该物理服务器的某个目录下。那么其它节点的服务器如何访问这些文件呢?一般来说,有两种解决方案,一是NFS,即设立专门的网络文件服务器;二是同步远程服务器的文件目录,使其保持一致。
NFS方案比较简单,但访问速度会相对比较慢,而且所有的文件通过网络来存取,个人感觉效率太低下。另外,为了保证单台NFS失效时网站的正常运行,我们还需要将NFS配置成多台群集的模式,增加了成本和复杂性。
第二种方案可以很好地兼顾成本和效率,是可以接受的方式。但笔者以前没有在Ubuntu上实现过远程文件同步的经验,因此查找资料和摸索配置,寻找最优方案的工作整整进行了两天。郁闷啊!
最后选定的方案如下:
Unison: 实现双向同步
Inotify tools: 监控文件系统
OpenSSH: 远程主机间的文件传输
软件介绍
OpenSSH
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。
它用安全、加密的网络连接工具代替了 telnet、ftp、 rlogin、rsh 和 rcp 工具。OpenSSH 支持 SSH 协议的版本 1.3、1.5、和 2。自从 OpenSSH 的版本2.9以来,默认的协议是版本2,该协议默认使用 RSA 钥匙。
OpenSSH的项目地址如下:http://www.openssh.com/
Unison
Unison是一款跨平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议进行同步。更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。
Unison的项目地址:http://www.cis.upenn.edu/~bcpierce/unison/
Inotify tools
Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入。在BSD和Mac OS系统中比较有名的是kqueue,它可以高效地实时跟踪Linux文件系统的变化。近些年来,以fsnotify作为后端,几乎所有的主流Linux发行版都支持Inotify机制。
inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。
Inotify-tools的项目地址:http://sourceforge.net/projects/inotify-tools/
软件安装
准备工作
安装操作系统Ubuntu 10.04 Server LTS,32位或者64位。假设我们有3台安装了Ubuntu 10.04 Server LTS的Web服务器,分别为:
server1 192.168.0.101
server2 192.168.0.102
server3 192.168.0.103
server4 192.168.0.104
其默认用户名分别为user1、user2、user3、user4。
需要同步的目录均为:/var/www/html
安装OpenSSH
在各台服务器上安装OpenSSH,使用如下命令:
sudo apt-get install openssh
该命令在你的机器上同时安装了SSH Server和SSH Client。
安装Unison
在各个需要同步的服务器上执行以下命令安装unison:
sudo apt-get install unison
安装Inotify tools
在各个需要同步的服务器上执行以下命令安装inotify-tools:
apt-get install inotify-tools
配置
多机同步的拓扑结构
在web群集中,同步在多机之间进行,而unison的同步功能仅支持双机。因此我们设计了一个星型的拓扑结构,来实现多机的同步。其设计思想就是利用unison的双向同步功能,指定一台服务器为星型结构的主服务器(server1),剩余服务器与其进行双向同步。这样,任何一台服务器上的文件变化都可以通过这个结构扩散,从而达到多机同步的目的。
这一结构的缺点是一旦server1当机失效,同步就会失败。因此,有必要的话,可以组成双主服务器的星型结构来弥补。
配置双机信任(ssh key)
Unison通过SSH来进行文件同步时,需要用户手工输入远程主机的登录密码。而我们试图通过开机自启动的脚本来实现自动的同步功能。因此,我们需要为SSH配置双机信任,使双方在使用ssh时不需要再输入密码。
使用 ssh-keygen和ssh-copy-id配置一下就可以无需输入密码直接登录服务器了。
ssh-keygen 创建公钥和密钥。ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。
ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限
相关推荐
为了实现文件的实时双向同步,我们可以利用`unison`的命令行接口和`inotify`事件。首先,我们需要在两个系统上安装`unison`。然后,编写一个脚本(如`unison.sh`),在其中配置`unison`的参数,指定需要同步的目录和...
1. **实时备份**:结合`rsync`或`unison`,`inotify-tools`可以实现文件或目录的实时备份,确保数据安全。 2. **自动化构建**:在源代码更改后立即触发编译或构建过程,提高开发效率。 3. **日志监控**:监控日志...
《使用inotify-tools实现多服务器文件实时同步详解》 在IT运维领域,高效的数据同步是保障服务稳定性和数据一致性的关键。inotify-tools是一个强大的Linux工具集,它提供了对文件系统事件的监控,如文件创建、修改...
inotify压缩包里面也包含unison,rsync+inotify可以实现实时同步,inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。要使用 inotify,...
在liux下做文件同步有几种方式,采用inotify+unison实现双向同步,且当其中一台服务器宕机,也不会影响web的访问,环境部署文档
Unison是一款强大的文件同步工具,可在多个操作系统之间,如Windows、Linux之间实现文件的双向同步。Unison的独特之处在于它的跨平台性、低系统要求、双向同步功能以及对冲突处理的智能策略。本文将详细介绍如何在双...
它使用了Inotify技术来检测本地文件系统的更改,并通过网络与远程主机上的Unison实例进行通信,实现双向同步,确保数据的一致性。Unison提供了图形用户界面(GTK版本)和文本界面(Text版本),用户可以根据自己的...
可以通过执行`.unison.sh`来启动同步任务,或通过计划任务等方式实现定时同步。 #### 三、总结 本文详细介绍了如何使用Unison进行文件同步的完整流程,包括所需工具的安装配置以及Unison的具体使用方法。通过上述...
例如,这个库可能包含了一些自动化处理`.gitignore`文件的规则,以更好地与Unison的配置集成,帮助用户在多个设备之间同步项目时避免不必要的文件冲突。 标签“Python库”进一步确认了这是一个用于Python开发的...
Unison的独特之处在于它的双向同步功能,这意味着两个同步端的数据改动都可以被检测到,并且可以智能地解决冲突,确保数据的一致性。 1. **Unison的基本原理**: Unison采用增量同步的方式,只传输自上次同步以来...
在“的是两台Linux服务器上的文件的实时同步.txt”文件中,可能会介绍如何设置Unison实现实时同步,例如通过定时任务(如cron)定期运行Unison,或者利用inotify机制监控文件系统变动并自动触发同步。 总之,Unison...
在IT行业中,文件同步和分布式存储是至关重要的任务,特别是在多服务器环境或远程协作的场景下。`e6`可能是某种环境或者项目代号,它需要通过`NFS`(Network File System)、`Unison`和`RPC`(Remote Procedure Call...
本资料包包含了实现Zabbix高可用所需的所有组件,包括Zabbix 4.0.0、libiconv、OCaml、Unison、inotify-tools以及keepalived,下面将详细解析这些组件在构建Zabbix HA中的作用。 1. **Zabbix 4.0.0**:这是Zabbix的...
Unison是一款强大的文件同步工具,主要功能是实现在两个不同的存储位置之间进行数据的双向同步。这意味着,无论你在哪个位置对文件或文件夹进行了修改,这些更改都会被传播到另一个位置,确保两个位置的数据始终保持...
它允许用户在两台或多台计算机之间进行双向同步,确保数据的一致性和完整性。标题中的"unison-2.27.57.tar.gz"表示的是Unison的特定版本2.27.57的源代码包,采用的是常见的GNU/Linux软件分发格式——tar归档并经过...
##### 4.7 使用 Unison 同步多台机器(Using Unison to Synchronize More Than Two Machines) - **多点同步**: 可以同时同步三个或更多主机之间的文件。 - **网络拓扑**: 需要考虑网络连接的拓扑结构。 ##### 4.8 ...
更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。 整个教程是我本人花一天时间查找撰写的,windows中文版的教程在网络上很难找,本人查看英文文档,自己在服务器...
更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。 整个教程是我本人花一天时间查找撰写的,windows中文版的教程在网络上很难找,本人查看英文文档,自己在服务器...