搭建web服务端网络共享及实时备份(只能用堡垒机连接)

Posted 爱做实验的小白鼠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建web服务端网络共享及实时备份(只能用堡垒机连接)相关的知识,希望对你有一定的参考价值。


目录

1.原理解析

1.1实验思路

1.1.2搭建好两个web服务器,实验是否搭建成功。
1.1.3搭建DNS服务器。(注:这里只需要写正向解析文件)搭建完成之后解析一下域名,看是否搭建成功。
1.1.4搭建NFS服务器,创建目录并在web服务器上挂载使用。
1.1.5搭建人sync服务器并测试是否能备份nfs服务器内容。
1.1.6在NFS服务器上安装sersync实现实时同步。
1.1.7搭建堡垒机,使远程连接只能连接堡垒机。

2.web服务器

2.1解释:

web服务器是搭建网站用的。

2.2安装命令并修改主机名:

# 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

在官网apache.org下载最新的httpd软件包(这里以httpd-2.4.48.tar.gz软件包为例)

# hostnamectl set-hostname web

2.3把软件包拖入虚拟机并解压到指定位置:

# tar xf httpd-2.4.48.tar.gz -C /usr/src 

把软件包解压到/usr/src/目录下。注:这里的指定路径的参数为大写的c

2.4配置:

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

进入解压后的软件包,配置并指定安装路径。

2.5编译及安装:

# make && make install && echo $?

编译并安装装,且查看编译和安装装是否成功。
结果为0表示成功,结果非0表示不成功,需要从新编译及安装。

2.6创建连接 :

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

创建软连接到PATH变量中。

2.7启动并查看版本信息:

 # apachectl
 AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::6de9:6d50:2cc3:a0d9. Set the 'ServerName' directive globally to suppress this message 
 # httpd -v
 Server version: Apache/2.4.48 (Unix)
 Server built:   Aug 20 2021 21:53:51

启动apache,查看版本信息。

2.8 添加httpd系统服务

2.8.1复制配置文件:

# cp /usr/local//httpd/bin/apachectl /etc/init.d/httpd
# vim /etc/init.d/httpd

复制配置文件并改名,且打开配置文件。

2.8.2添加内容:

#chkconfig: 35 81 21
#description:httpd servier

在第一行下面添加这两行内容。

2.8.3使配置文件生效并重启httpd

# chkconfig --add httpd
# systemctl restart httpd

现在就可以使用系统服务了。

注:

之后就可以进行访问测试,且同原理创建web02服务器。

3.DNS服务器

3.1DNS服务器的作用

DNS服务器最只要的作用是可以使物理机访问web服务器的是后不需要输入密码,直接输入域名即可。

3.2搭建DNS服务器

3.2.1安装命令并修改主机名:

# yum -y install bind-chroot bind bind-utils
# hostnamectl set-hostname dns

3.2.2启动并设置开机自启:

# systemctl start named
# systemctl enable named

3.2.3安装命令查看一下端口

# yum -y install net-tools
# netstat -anput | grep named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1217/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1217/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      1217/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      1217/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1217/named          
udp6       0      0 ::1:53                  :::*                                1217/named

3.2.3备份配置文件并打开配置文件

# cp /etc/named.conf /var/named.conf.back
# vim /etc/named.conf

3.2.4删除全部内容并写入新内容

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        directory       "/var/named";
        allow-query     { any; };
        recursion yes;
        forwarders { 8.8.8.8; 114.114.114.114; };
};
zone "web.com" IN {
        type master;
        file "web.com.zone";
};

3.2.5查看一下配置文件的属主属组

# ll /etc/named.conf 
-rw-r----- 1 root named 241 Aug 20 22:32 /etc/named.conf

3.2.6复制模板并改名

# cp /var/named/named.empty /var/named/web.com.zone

这里改的名需要和之前配置文件里写的名字相同。

3.2.7打开文件

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

3.2.8修改内容

$TTL 1D
@       IN SOA  @ web.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
web.com.        IN      NS      dns.web.com.

dns.web.com.    IN      A       192.168.1.4  #这里是的dns服务器的IP
www.web.com.    IN      A       192.168.1.2  #这里是web01服务器的IP
www.web.com.    IN      A       192.168.1.3  #这里是web02服务器的IP

这里是相同域名不同IP

3.2.9查看一下是否有语法错误

# named-checkconf -z /etc/named.conf 
zone web.com/IN: loaded serial 0

结果显示为0或者为ok表示语法没问题。

3.2.10修改属组

# chown :named /var/named/web.com.zone 
# ll /var/named/web.com.zone 
-rw-r----- 1 root named 237 Aug 20 22:36 /var/named/web.com.zone

3.2.11重启服务

# systemctl restart named

备注:

打开另一台虚拟机并打开网卡配置文件修改dns的IP为dns服务器的IP
在重启网卡,之后解析域名即可

# nslookup www.web.com
服务器:  UnKnown
Address:  192.168.1.4

名称:    www.web.com
Addresses:  192.168.1.3
          192.168.1.2

4.NFS服务器

4.1 NFS服务器的作用

nfs服务器的作用是为了两个web服务器共享网络文件的

4.2搭建NFS服务器

4.2.1安装命令并修改主机名

# yum-y install rpcbind nfs-utils

修改主机名

# hostnamectl set-hostname nfs

需要在nfs服务器,web01和web02服务器上都安装命令。

4.2.2启动服务并设置开机自启

# systemctl start rpcbind
# systemctl enable rpcbind
# systemctl start nfs
# systemctl enable nfs
Created symlink from /etc/systemd/system/multiuser.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

分别在nfs服务器,web01服务器和web02服务器上启动服务并设置开机自启。

4.2.3创建用户

# useradd -M -s /sbin/nologin -u 2000 www

分别在nfs,web01,web02三台服务器上创建用户。

4.2.4创建目录

# mkdir /web

创建的目录要在nfs服务器上创建。

4.2.5修改属主属组

# chown -R www:www /web
# ll -d /web
drwxr-xr-x 2 www www 6 Aug 20 23:15 /web

4.2.6编辑/etc/exports配置文件,将本地的/web目录共享发布

# vim /etc/exports
/web 192.168.1.2(rw,sync,all_squash,anonuid=2000,anongid=2000)
/web 192.168.1.3(rw,sync,all_squash,anonuid=2000,anongid=2000)

4.2.7使修改的/etc/exports配置内容生效

# systemctl reload nfs

4.2.8查看NFS服务器共享出来目录

# showmount -e localhost
Export list for localhost:
/web 192.168.1.3,192.168.1.2

4.2.9查看配置

# exportfs -v
/web          	192.168.1.2(rw,sync,wdelay,hide,no_subtree_check,anonuid=2000,anongid=2000,sec=sys,secure,root_squash,all_squash)
/web          	192.168.1.3(rw,sync,wdelay,hide,no_subtree_check,anonuid=2000,anongid=2000,sec=sys,secure,root_squash,all_squash)

4.2.10挂载(需要在web01和web02服务器上操作)

4.2.10.1打开配置文件(这是永久挂载方法)

# vim /etc/fstab

4.2.10.2写入内容

192.168.1.5:/web        /usr/local/httpd/htdocs nfs     defaults        0 0

4.2.10.3使挂载生效

# mount -a

4.2.10.4查看一下

# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        98G  1.3G   97G   2% /
devtmpfs                devtmpfs  476M     0  476M   0% /dev
tmpfs                   tmpfs     488M     0  488M   0% /dev/shm
tmpfs                   tmpfs     488M  7.7M  480M   2% /run
tmpfs                   tmpfs     488M     0  488M   0% /sys/fs/cgroup
/dev/sr0                iso9660   4.2G  4.2G     0 100% /mnt/cdrom
/dev/sda1               xfs       497M  123M  375M  25% /boot
tmpfs                   tmpfs      98M     0   98M   0% /run/user/0
192.168.1.5:/web        nfs4       98G  1.1G   97G   2% /usr/local/httpd/htdocs

注:

相同的原理挂载web02服务器。

4.2.10.5写入内容测试

# echo "123" > /usr/local/httpd/htdocs/index.html 

4.2.10.6查看一下

需要在nfs服务器上查看。

# cat /web/index.html 
123

注:

web01服务器和web02服务器上都要挂载。

5.rsync服务器

5.1rsync服务器的作用

作为nfs服务器实时备份的备份端服务器。

5.2搭建rsync服务器

5.2.2创建用户并设置密码

# useradd rupt && echo "rupt:1" | chpasswd

5.2.3创建ACL权限并修改主机名

# setfacl -R -m u:rupt:rwx /nfs-back/
# setfacl -R -m d:u:rupt:rwx /nfs-back/
# hostnamectl set-hostname rsync

5.2.4创建目录

# mkdir /nfs-back

5.2.5查看一下

[root@rsync ~]# getfacl /nfs-back/
getfacl: Removing leading '/' from absolute path names
# file: nfs-back/
# owner: root
# group: root
user::rwx
user:rupt:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:rupt:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

5.2.6安装命令

# yum -y install rsync

需要在nfs服务器上也安装命令。

5.2.7修改属主属组并查看一下

# chown -R rupt:rupt /nfs-back/
# ll -d /nfs-back/
drwxrwxr-x+ 2 rupt rupt 6 Aug 21 00:42 /nfs-back/

5.2.8测试

在nfs服务器上的/web目录中创建一个文件

[root@nfs ~]# echo "123" > /web/1.txt
[root@nfs ~]# rsync -avz --delete /web/ rupt@192.168.1.6:/nfs-back
The authenticity of host '192.168.1.6 (192.168.1.6)' can't be established.
ECDSA key fingerprint is SHA256:Qb8j3RAgCnkdywVUxprkutcdxESNw64buWzrKWEjGq8.
ECDSA key fingerprint is MD5:0e:04:2f:bd:a9:44:9c:bb:38:c2:0a:0a:c7:d3:83:a8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.6' (ECDSA) to the list of known hosts.
rupt@192.168.1.6's password: 
sending incremental file list
./
1.txt

sent 115 bytes  received 38 bytes  34.00 bytes/sec
total size is 4  speedup is 0.03

显示成功。

5.2.8.1查看一下

在人sync服务器上查看一下

[root@rsync ~]# cat /nfs-back/1.txt 
123

表示成功

5.2.9做免密

在nfs服务器上创建密钥对

[root@nfs ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0rbsOJ04p2YyH47h1mzGESCzhV0ciZblKvmBhOYMFVI root@nfs
The key's randomart image is:
+---[RSA 2048]----+
|..E+ *+o         |
| ++ B.o          |
|o..* ..          |
|=..o ...         |
| o+ o ..S        |
|   o ..+ .       |
|    o+.+o.       |
|   .++%++        |
|   .oO==.        |
+----[SHA256]-----+

这里不需要给私钥设置密码。

5.2.10发送公钥到rsync服务器

[root@nfs ~]# ssh-copy-id -i rupt@192.168.1.6
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
rupt@192.168.1.6's password: #这里输入用户rupt的密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'rupt@192.168.1.6'"
and check to make sure that only the key(s) you wanted were added.

5.2.10.1测试

在nfs服务器上创建文件并测试

[root@nfs ~]# touch /web/2.txt
[root@nfs ~]# rsync -avz --delete /web/ rupt@192.168.1.6:/nfs-back
sending incremental file list
./
2.txt

sent 129 bytes  received 38 bytes  334.00 bytes/sec
total size is 4  speedup is 0.02

5.2.10.2查看一下

[root@rsync ~]# ls /nfs-back/
1.txt  2.txt

显示成功。

5.2.11修改配置文件

需要在备份端完成。
首先备份配置文件

# cp /etc/rsyncd.conf rsycnd.conf.back

5.2.11.1打开并修改配置文件

# vim /etc/rsyncd.conf

5.2.11.2删除原来的文件并添加新的内容

uid = root
gid = root
address = 192.168.1.6
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/rsyncd.lock
log file = /var/run/rsyncd.log
motd file = /etc/rsyncd.motd
[abc]
path = /nfs-back
comment = XXX
read only = false
list = yes
auth users = backuper
secrets file = /etc/rsyncd.passwd

5.2.11.3添加欢迎词

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

5.2.11.4添加密码

[root@rsync ~]# vim /etc/rsyncd.passwd
[root@rsync ~]# cat /etc/rsyncd.passwd
backuper:1

5.2.11.5修改权限

# chmod 600 /etc/rsyncd.passwd

这里的权限必须是600的权限。

5.2.12启动并写入启动文件设置开机自启

[root@rsync ~]# rsync --daemon --config=/etc/rsyncd.conf 
[root@rsync ~]# echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local 

5.2.13修改权限

[root@rsync ~]# chmod +x /etc/rc.d/rc.local

5.2.14创建文件测试一下

在nfs服务器上创建文件。

[root@nfs ~]# rsync -avz --delete /web/ backuper@192.168.1.6::abc
Welocm to Backup Server

Password: 
sending incremental file list
./
3.txt

sent 156 bytes  received 44 bytes  133.33 bytes/sec
total size is 4  speedup is 0.02

5.2.14.1查看一下

[root@rsync ~]# ls /nfs-back/
1.txt  2.txt  3.txt

显示成功。

5.2.15做免密

这里做的免密是虚拟用户的免密

[root@nfs ~]# vim /etc/rsyncd.passwd
[root@nfs ~]# cat /etc/rsyncd.passwd 
1

修改权限

[root@nfs ~]# chmod 600 /etc/rsyncd.passwd

测试

[root@nfs ~]# rsync -avz --delete /web/ backuper@192.168.1.6::abc --password-file=/etc/rsyncd.passwd
Welocm to Backup Server

sending incremental file list
./
6.txt

sent 170 bytes  received 38 bytes  138.67 bytes/sec
total size is 4  speedup is 0.02

5.3安装sersync

5.3.1解压到当前目录

[root@nfs ~]# rz -E
rz waiting to receive.
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

5.3.2移动并改名

[root@nfs ~]# mv GNU-Linux-x86/ /opt/sersync
[root@nfs ~]# cd /opt/sersync/
[root@nfs sersync]# ls
confxml.xml  sersync2
[root@nfs sersync]# cp confxml.xml confxml.xml.back

5.3.3打开配置文件并修改。

[root@nfs sersync]# vim confxml.xml
24         <localpath watch="/web">
 25             <remote ip="192.168.1.6" name="abc"/>
 26             <!--<remote ip="192.168.8.39" name="tongbu"/>-->
 27             <!--<remote ip="192.168.8.40" name="tongbu"/>-->
 28         </localpath>
 29         <rsync>
 30             <commonParams params="-artuz"/>
 31             <auth start="true" users="backuper" passwordfile="/etc/rsyncd    .passwd"/>  

修改第24行25行和31行的内容

5.3.4启动

[root@nfs sersync]# vim confxml.xml
[root@nfs sersync]# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d 	run as a daemon
option: -r 	rsync all the local files to the remote servers before the sersync work
option: -o 	config xml name:  /opt/sersync/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost	host port: 8008
daemon start,sersync run behind the console 
use rsync password-file :
user is	backuper
passwordfile is 	/etc/rsyncd.passwd
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) 
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /web && rsync -artuz -R --delete ./ backuper@192.168.1.6::abc --password-file=/etc/rsyncd.passwd >/dev/null 2>&1 
run the sersync: 
watch path is: /web

5.3.5设置开机自启并修改权限

[root@nfs sersync]# echo "/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml" > /etc/rc.d/rc.local 
[root@nfs sersync]# chmod +x /etc/rc.d/rc.local

5.3.6创建目录并测试

[root@nfs sersync]# touch /web/qqq.txt

5.3.7查看一下

[root@rsync ~]# ls /nfs-back/
1.txt  2.txt  3.txt  6.txt  qqq.txt

此时web服务器网络共享及实时备份已做完

6堡垒机

6.1堡垒机的作用

使用远程连接的时候只能连接到堡垒机才能连接连个web服务器,dns服务器,nfs服务器和rsync服务器进行维护。

6.1.1搭建堡垒机

分别在两个web服务器,dns服务器,nfs服务器和rsync服务器上创建admin用户并设置密码。

# useradd admin && echo "admin:1" | chpasswd

6.1.2修改配置文件

6.1.2.1分别在两个web服务器,dns服务器,nfs服务器和rsync服务器上修改配置文件。

# vim /etc/sudoers

6.1.2.2在最下面写入这行内容。

admin ALL=(ALL) NOPASSWD:/bin/bash

6.1.2.3打开白名单配置文件。

# vim /etc/ssh/sshd_config

6.1.2.4把第一行这里原先的no换成yes并添加下面的一行。

UseDNS yes
AllowUsers admin@192.168.1.7

6.1.2.5重启服务。

# systemctl restart sshd

注:以上操作需要分别在两个web服务器,dns服务器,nfs服务器和rsync服务器上完成。

6.1.2打开堡垒机并修改主机名。

# hostnamectl set-hostname jumpserver

6.1.2.1创建密钥对

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QH++hNC38kWzv7PwZCdm/DACWnayaMoczj7f3pd44E0 root@dns
The key's randomart image is:
+---[RSA 2048]----+
|      .          |
|     . o         |
|      o o o o    |
|       o = o o   |
|        S O +    |
|         O B.oE  |
|      . + +.o=@..|
|     =.+ . .oO*B |
|     .Bo..o .o+o.|
+----[SHA256]-----+

6.1.2.2依次发送公钥

分别发送公钥到两个web服务器,dns服务器,nfs服务器,rsync服务器和堡垒机上。(修改后面的ip即可)

# ssh-copy-id -i admin@192.168.1.2

6.1.3安装命令

在堡垒机上安装。

# yum -y install lrzsz

6.1.3.1发送私钥

发送私钥到windows中。

# sz .ssh/id_rsa

此时所有的服务器及堡垒机搭建完成。

以上是关于搭建web服务端网络共享及实时备份(只能用堡垒机连接)的主要内容,如果未能解决你的问题,请参考以下文章

原创:100 台规模集群存储系统搭建及数据实时备份

搭建简易堡垒机

老男孩教育运维班100台规模集群存储系统搭建及数据实时备份上机实战

Ubuntu搭建NFS

ITDB系统搭建及实时备份

集群搭建之架构逻辑图