linux文件数据同步--实现文件共享与备份(nfs+rsync+httpd+dns)

目录

实验目地:

实验需求:

各项服务位置以及作用:

整体实验过程:

详细配置:

Rsync服务:

Web服务:

 NFS服务

DNS服务


实验目地

在整体实验中,使客户机在网页可以看到由服务器A上传的文件,并且A服务器有一台备份服务器。

实验需求

四台虚拟服务器与一台客户机,并关闭防火墙

服务器

IP地址

 部署服务

      部署作用

A

192.168.1.12

Rsync,nfs,DNS

主服务器,提供文件的源头

B

192.168.1.23

Rsync

实时同步,备份A服务器

C

192.168.1.11

Nfs,web

提供web服务,连接外网

D

192.168.1.22

Nfs,web

提供web服务,连接外网

各项服务位置以及作用

RSYNC:此项服务是文件同步的传输工具,将文件推送给B,提供了一个远程服务器同步的快速方法,并且保持原文件的属性,以此达到备份的效果。

NFS:通过网络使不同设备共享彼此文件,所以在此项操作中,A服务器建立nfs共享文件到C,D。(注:A与C,D共享的文件要与B共享备份的文件一致)。

WEB:apache服务可以跨平台使用,所以要建立在C.D两台服务器上与客户机不同设备实现文件共享(注:将nfs的共享文件挂载到web的网页共享根目录来达到A,B,C,D服务器文件互通)

DNS:域名转IP,把DNS建立在服务器A上,提供C,D的域名服务,在客户机访问C,D时,由A服务器提供域名转IP服务,(在正反解析文件中写上客户机的域名与IP)

整体实验过程

  1. 首先在A和B上建立rsync服务备份文件,B为rsync备份服务器,A为共享服务器;
  2. 在C,D上建立web服务器,启用httpd网页根目录,
  3. 在主共享服务器A上建立nfs服务,并把共享目录设置为rsync的备份目录。
  4. 把A服务器上nfs服务,发到C,D两台服务器,建立A分别连接从C,D
  5. 在C.D上把A服务器的nfs共享目录挂载到httpd网页根目录上
  6. 在客户机浏览器上输入IP或域名即可看到A服务器的文件内容

详细配置:

Rsync服务:

1,在A,B上下载rsync服务 #yum -y install rsync

2,首先在B服务器上创建同步数据的系统用户,并创建同步目录,让刚创建的用户对此目录有读写权。

# useradd rput && echo 'rput:123456' | chpasswd

#mkdir /web-bak/

#setfacl -R -m user:rput:rwx /web-bak/

#setfacl -R -m default:user:rput:rwx /web-bak/

在A上创建测试数据

#mkdir -p /var/www/html

#cp -r /boot/* /var/www/html

3,在B上配置rsync同步源,在B上创建/etc/rsyncd.conf文件,内容如下:

uid = root

gid = root

address = 192.168.1.23

port = 873

hosts allow = 192.168.1.0/24

use chroot = yes

max connections = 5

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

motd file = /etc/rsyncd.motd

[wwwroot]

path = /web-bak/

comment = used for

read only = false

list = yes

auth users = backuper

secrets file = /etc/rsyncd.passwd

根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为backuper,密码为pwd123。由于账号信息采用明文存放,因此应调整文件权限,避免账号信息泄露。

# echo "Welcome to Backup Server" > /etc/rsyncd.motd

# vim  /etc/rsyncd.passwd    写入密码为:pwd123

修改此项文件权限,权限设置不对的话身份验证会失败

#chmod 600 /etc/rsyncd.passwd

开启此项服务:

#rsync  --daemon  --config=/etc/rsyncd.conf

并保存到/etc/rc.d/rc.local文件中,确保系统启动后自动启动rsync服务。并赋权:

#chmod +x /etc/rc.d/rc.local

4,至此rsync同步源配置完毕,下面使用rsync备份工具实现备份操作。

在A新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可

# vim  /etc/rsyncd.passwd    写入密码为:pwd123

#chmod  600  /etc/rsync.passwd

 在源机器A上开始部署sersync服务

1)下载sersync

Rsync安装包下载地址:https://github.com/WayneD/rsync/releases

将sersync上传到服务器 /opt目录下

# mv sersync2.5.4_64bit_binary_stable_final.tar.gz  /opt/

# cd  /opt/

# tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz

# mv  GNU-Linux-x86  /opt/sersync

# cd  /opt/sersync/

2)配置sersync

# cp confxml.xml  confxml.xml.bak

更改优化sersync配置文件:24,25,31行

 

 (3)开启sersync守护进程同步数据

# /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml

(4)测试

在A上对/var/www/html/目录增删改目录文件,

看B上/web-bak/目录的变化

5)设置A:sersync监控开机自动执行

 # vim  /etc/rc.d/rc.local  #编辑,在最后添加一行

 /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml  #设置开机自动运行脚本

6在A添加脚本监控sersync是否正常运行

# vim  /opt/check_sersync.sh  #编辑,添加以下代码

#!/bin/sh

sersync="/opt/sersync/sersync2"

confxml="/opt/sersync/confxml.xml"

status=$(ps aux | grep 'sersync2' | grep -v 'grep' | wc -l)

if [ $status -eq 0 ];

then

   $sersync -d -r -o $confxml &

else

exit 0;

Fi

把这个脚本加到A的任务计划,定期执行检测

# chmod +x check_sersync.sh

# echo "10 * * * * sh /root/check_sersync.sh &" >> /var/spool/cron/root

Web服务:

1,在C,D分别安装httpd服务

通过yum安装apache编译时需要的依赖包

#wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.38.tar.gz

# yum -y install gcc gcc-c++ apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre lrzsz     

使用源码安装并解压到/usr/src下

 执行“./configure --help”命令,其中“./”表示当前目录。

# ./configure  --prefix=/usr/local/httpd    --enable-so    --enable-rewrite  --enable-charset-lite  --enable-cgi

编译配置:# make && make install

2,为了使用便捷添加软连接

# ln -s /usr/local/httpd/bin/* /usr/local/bin

3,建立.service配置文件

vim /lib/systemd/system/httpd.service

[Unit]

Description=the apache http server

After=natwork.target

[Service]

Type=forking

PIDFile=/usr/local/httpd/logs/httpd.pid

ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

[Install]

WantedBy=multi-user.target

开启查看此项服务:

# systemctl daemon-reload

# systemctl enable httpd.service

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

# systemctl enable httpd.service

enabled

# systemctl start httpd.service

# systemctl status httpd.service

构建web主机

FQDN

www.test.com

IP

192.168.36.128

TCP PORT

80

网站根目录

/var/www/test/html

主页

index.html

分别准备两个虚拟站点的网页文件:

# mkdir  -p  /var/www/test/html  

# echo "www.test.com"  > /var/www/test/html/index.html

添加虚拟主机配置(注意IP修改)

# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf   //修改现有内容,

<VirtualHost 192.168.1.22:80>

    ServerAdmin webmaster@test.com

    DocumentRoot "/var/www/test/html"

    ServerName www.test.com

    ServerAlias test.com

    ErrorLog "logs/www.test.com-error_logs"

    CustomLog "logs/www.test.com-access_log" common

    <Directory "/var/www/test/html">

        Require all granted

    </Directory>

</VirtualHost>

修改主配置文件httpd.conf,加载httpd-vhosts.conf文件

# vim /usr/local/httpd/conf/httpd.conf

…………              //省略部分内容

ServerName www.example.com:80

Include conf/extra/httpd-vhosts.conf              //加载独立的配置文件

执行httpd -t命令检测httpd配置文件语法正确性

重启httpd服务使配置生效

[root@localhost ~]# systemctl restart httpd

 NFS服务

1,在A服务器上下载nfs服务(在C,D上也许下载)

# yum -y install nfs-utils rpcbind

先启动rpc服务,再启动nfs服务。

# systemctl start rpcbind    #启动rpc服务

# systemctl enable rpcbind    #设置开机启动

启动nfs服务:

# systemctl start nfs     #启动nfs服务

# systemctl enable nfs    #设置开机启动

2,在nfs服务端更改共享输出的目录设置权限

# chmod  -R  a+w  /var/www/html

(注:A与C,D共享的文件要与B共享备份的文件一致)

3,编辑/etc/exports配置文件,将本地的/var/www/html目录共享发布

# vim /etc/exports

/var/www/html 192.168.1.0/24(rw)

共享权限设置:  ro:只读属性  rw:读写属性

# systemctl reload nfs   重启服务

4,在C,D查看NFS服务器共享出来目录:

Showmount -e 192.168.1.12

并挂载到网页根目录上

# mount  -t  nfs  192.168.0.12:/var/www/html  /var/www/test/html/

DNS服务

1,在A安装dns服务

#yum -y install bind bind-chroot bind-utils

2,启动服务

# systemctl start named

# systemctl enable named

3.构建主dns服务器

创建named.conf主配置文件,提供test.com域的正向解析和192.168.1.0/24网段的反向解析。

# cp  -p  /etc/named.conf  /var/named/named.conf.bak

# vim  /etc/named.conf

options {

        listen-on port 53 { any; };

        listen-on-v6 port 53 { any; };

        directory      "/var/named";

        allow-query      { any; };

};

zone "." IN {

            type hint;

            file "named.ca";

};

zone "test.com" IN {

        type master;

        file "test.com.zone";

};

zone "1.168.192.in-addr.arpa" IN {

       type master;

       file "192.168.1.arpa";

};

查看有没有语法错误

# named-checkconf  /etc/named.conf

4.创建正向区域数据文件

# vim  /var/named/test.com.zone

$TTL 1D

@            IN    SOA    @ root.test.com. (

                                                 0    ; serial

                                                 1D   ; refresh

                                                 1H   ; retry

                                                 1W   ; expire

                                                 3H ) ; minimum

test.com.       IN   NS  dns-localhost1.test.com.

dns-localhost1.test.com.  IN   A   192.168.1.12

www.test.com.             IN   A   192.168.1.11

www.test.com.             IN   A   192.168.1.22

ftp.test.com.             IN   A   192.168.1.111

5.创建反向区域数据文件

$TTL 1D

@            IN    SOA    test.com.  root.test.com. (

                                                 0    ; serial

                                                 1D   ; refresh

                                                 1H   ; retry

                                                 1W   ; expire

                                                 3H ) ; minimum

             IN   NS  dns-localhost1.test.com.

12           IN  PTR   dns-localhost1.test.com.

11           IN  PTR   www.test.com.

22           IN  PTR   www.test.com.

111          IN  PTR   ftp.test.com.

更改区域数据文件的归属属性:

# chown  root:named  /var/named/test.com.zone

# chown  root:named  /var/named/192.168.1.arpa

判断语法有没有错误

正# named-checkzone  test.com  /var/named/test.com.zone

反# named-checkzone  1.168.192.in-addr.arpa  /var/named/192.168.1.arpa

并检查该文件是否存在问题。

# named-checkconf -z /etc/named.conf

更改配置项

将A服务器DNS删除,因为A本身就是DNS服务器,并且将B,C,D与客户机的DNS改为A的IP,以便使用

在网页中输入C或D的IP即可看到A服务器提供的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值