Linux下实现Web数据同步的四种方式

发布时间 2023-11-02 00:30:20作者: 我的城市没有海

实现web数据同步的四种方式

1、nfs实现web数据共享
2、rsync +inotify实现web数据同步
3、rsync+sersync更快更节约资源实现web数据同步
4、unison+inotify实现web数据双向同步

一、nfs实现web数据共享

nfs能实现数据同步是通过NAS(网络附加存储),在服务器上共享一个文件,且服务器需要设置文件系统的权限和配置文件设置的权限,权限两者之间取交集,然后客户端把共享的文件挂载到本地,客户端对文件有读写权限,则实现数据的同步。

nfs+web:服务器端的配置:

1)安装相关软件,httpd提供web服务,nfs-utils提供nfs服务

yum -y install httpd nfs-utils

2)设置web的相关配置,使得web能够提供web服务

vim /etc/httpd/conf/httpd.conf 

ServerName 192.168.100.61:80 
#DocumentRoot "/var/www/html"   #提供虚拟主机,注释默认存放网页文件的路径 
<VirtualHost *:80> 
   ServerName 192.168.100.61
   DocumentRoot  /web/htdocs
</VirtualHost>

#创建存放网页的目录
mkdir -pv /web/htdocs

cd /web/htdocs/ 
touch index.html test.html test.php 
ls 
index.html  test.html  test.php 
echo "This is Jie1 Web+nfs Server" >index.html 

#检查web的配置文件是否有语法错误 
httpd -t         
Syntax OK 

#启动web服务
systemctl start httpd
 

3)设置nfs的相关配置,共享网页文件

#安装httpd软件后,系统会创建apache用户,查看apache的id号 
id apache 
uid=48(apache) gid=48(apache) groups=48(apache) 

vim /etc/exports 
/web/htdocs  192.168.100.62(rw,sync,root_squash,anonuid=48,anongid=48) 

#nfs是以id号来确定是否能访问共享的文件的,因为两个服务器都安装了httpd软件,都会有apache用户,所以apache用户的id号能访问共享的文件 
#/web/htdocs 共享的目录 
#192.168.100.62 指定客户端能共享此文件,多个客户端用逗号隔开 
#rw,读写权限 
#sync,同步方式 
#root_squash,压缩root用户的权限 
#anonuid=48,指定此用户的id能访问共享文件 
#anongid=48指定此组的id能访问共享文件 

#启动服务
systemctl start nfs-server.service

web:客户端的配置 

1)安装httpd的软件

 yum -y install httpd

 2)设置web的相关配置,使得web能够提供web服务

 vim /etc/httpd/conf/httpd.conf 

ServerName 192.168.100.62:80 
#DocumentRoot "/var/www/html" 
<VirtualHost *:80> 
   ServerName 192.168.100.62
   DocumentRoot  /website   #存放网页文件的路径 
</VirtualHost> 

#创建目录
mkdir /website 

httpd -t 
Syntax OK 

#启动服务
systemctl start httpd

cd /website/ 

ls   #现在查看是没有任何文件 

实现同步:

 1)服务器端设置apache用户对共享的文件有读写权限

#设置apache用户对此中所有文件有读写可执行权限
setfacl -R -m u:apache:rwx /web/ 

2)客户端挂载服务器的共享文件,查看客户端是否已经同步服务器端的文件

cd /root 

#通过nfs挂载服务器端的文件 
mount -t nfs 192.168.100.61:/web/htdocs /website/ 

#实现开机挂载 
echo "192.168.100.61:/web/htdocs  /website       nfs    defaults,_netdev 0 0" >>/etc/fstab  

cd /website/ 

#查看文件已经同步过来 
ls  
index.html  test.html  test.php 

3)客户端在共享的文件中新增文件,查看服务器端是否同步文件

cd /website/ 
ls 
index.html  test.html  test.php 

#在客户端创建website.html  
touch website.html  
ls 
index.html  test.html  test.php  website.html

#服务器端,可以查看来着客户端上传的文件 
ls 
index.html  test.html  test.php  website.html

 所有的数据其实都保存到了nfs服务器,不论用户访问哪台Web服务器,都要来nfs服务器获取数据,这样势必照成nfs服务器的性能下降,而且客户端对nfs服务器的依赖性较大,如果nfs服务器down掉之后,客户端的web服务器就无法工作了。(动态的那种数据,而且数据量很大的数据,就不要用nfs服务器来实现数据共享了,一般适应于,静态页面和数据较小的文件)

二、rsync+inotify实现web数据同步

rsync(remote sync)的特性:

可以镜像保存整个目录树和文件系统
可以同步增量同步数据,文件传输效率高,因而同步时间很短
可以保持原有文件的权限、时间等属性
加密传输数据,保证了数据的安全性
支持匿名传输

rsync也能实现同步,但是需要自己手动的去同步数据,当数据量非常的频繁时,无疑是加大了运维人员的工作,inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,inotify-tools工具的出现,解决了这种工作,安装inotify软件的主机会监听服务器端的主机是否数据和本机不一样,(因为在上传数据时,运维人员先上传到安装inotify主机上),不一样就用rsync命令直接把数据传输过去。客户端安装rsync软件是为了调用rsync的命令,安装inotify软件是监听和数据是否发生改变,服务器端安装rsync软件时为了提供rsync服务。

rsync+web服务端的配置:

1)、安装相关软件

yum -y install rsync xinetd httpd 
#rsync服务通常基于超级守护进程xinetd管理的方式来实现,因此需要事先安装rysnc和xinetd

2)、web的相关配置,使得web能够提供服务

vim /etc/httpd/conf/httpd.conf 

ServerName 192.168.100.61:80 
#DocumentRoot "/var/www/html"   #提供虚拟主机,注释默认存放网页文件的路径 
<VirtualHost *:80> 
   ServerName 192.168.100.61
   DocumentRoot  /web/htdocs1
</VirtualHost>

#创建存放网页的目录
mkdir -pv /web/htdocs1

ll /web/htdocs1

3)、rsync服务的相关配置

*****建立rsync的配置文件和密码文件************

#rsync的配置文件
touch /etc/rsyncd.conf

#用户的密码文件
touch /etc/rsyncd.pwd

#权限要设置为600,否则无法备份成功
chmod 600 /etc/rsyncd.pwd

vim /etc/rsyncd.conf 

uid = nobody                    #备份以什么身份进行,用户ID 
gid = nobody                    #备份以什么身份进行,组ID 
use chroot = no                 #禁锢在源目录 
max connections = 3             #最大连接数,0代表没有限制 
strict modes = yes              #是否检查口令文件的权限 
pid file = /var/run/rsyncd.pid  #运行进程的pid文件 
log file = /var/log/rsyncd.log  #日志记录文件 
[htdocs1]                        #指定认证的备份模块名 
path = /web/htdocs              #需要备份的目录的路径 
ignore errors = yes             #忽略一些无关的IO错误 
read only = no                  #设置为no,即可以传至服务器的相应目录。 
write only = no                 #设置为no,表示客户端可以下载文件 
hosts allow = 192.168.100.0/24       #可以连接rsync服务器的主机的IP地址 
hosts deny = *                  #设置禁止连接rsync服务器的主机地址,*表示  拒绝所有除了hosts allow定义的 
uid = root 
gid = root 
auth users = backuper            #连接模块的用户名 
secrets file = /etc/rsyncd.pwd   #连接模块用户名的密码文件存放路径 

##用户的密码文件 
vim  /etc/rsyncd.pwd  

backuper:pwd123        #用户名:密码 

#启动服务并设为开机自启
systemctl enable xinetd
systemctl start xinetd
rsync --daemon

#查看监听端口
netstat -pant | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      27716/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      27716/rsync

rsync+inotify+web客户端的配置:

1)、inotify-tools软件的安装及设置