云计算集群技术及应用 课件 第9章-大型网站集群架构项目二_第1页
云计算集群技术及应用 课件 第9章-大型网站集群架构项目二_第2页
云计算集群技术及应用 课件 第9章-大型网站集群架构项目二_第3页
云计算集群技术及应用 课件 第9章-大型网站集群架构项目二_第4页
云计算集群技术及应用 课件 第9章-大型网站集群架构项目二_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章

大型网站集群架构项目二9.1项目准备9.2LNMP部署网站9.3部署数据库服务器9.4共享存储9.5共享存储实时备份9.6部署HAProxy七层负载掌握搭建完整网站集群架构的方式熟悉HAProxy+Keepalived的部署方式熟悉共享存储集群的搭建引言通过项目一的学习,读者已经可以掌握高并发大型网站的集群部署以及优化的基本操作。为了进一步提升读者在生产环境中对该部分内容的运用技巧,本章将针对HAProxy+Keepalived高可用集群的部署进行讲解。9.1项目准备项目说明项目设计项目实施该章节与第八章类似,主要是对全书内容的一个综合项目总结。对本书的重点知识,如HAProxy七层负载、Keepalived高可用软件、共享存储集群进行回顾,进一步掌握集群的架设要领。10.1

触发器概述本章通过搭建集群实现新闻系统的上线。用户可以通过网络对集群的资源进行访问,访问流程如下所示。首先,客户端的用户通过Internet访问新闻系统的网站地址,如。通过客户端在hosts文件中解析,解析到HAProxy前端负载均衡器上。HAProxy负载均衡器将请求轮询到后端的LAMPWeb服务器和LNMPWeb服务器。在两种web服务器上分别部署新闻系统虚拟主机网站内容。当用户注册登录、发布新闻等内容时,数据通过Web服务写入MySQL数据库。当用户上传新闻图片、视频、附件头像等文件时,这些数据会通过Web服务传到共享存储NFS服务器上,而不是存储到Web服务器上。

9.1

项目准备9.1.1

项目说明所有服务器时间保持一致,对重要数据进行定时备份。NFS存储的静态文件数据会实时同步到备份服务器上,完成实时的数据热备。NFS服务器宕机后,完成备份服务器的快速切换,几乎保证数据无丢失。为HAProxyx配置高可用,实现宕机后由备机自动接管服务。9.1

项目准备9.1.1

项目说明本章将要搭建的HAProxy+Keepalived网站集群的架构图。9.1

项目准备9.1.2

项目设计该架构中用到的服务器及技术解释。七层负载均衡调度器(HAProxy+Keepalived)Web1服务器(Apache+PHP)Web2服务器(Nginx+PHP)数据库服务器(Mysql)共享存储服务器(NFS+Rsync+inotify-tools)backup(Rsync)本章所演示的综合项目首先以LNMP架构为基础,分离部署数据库,搭建小型网站集群,并上线内容管理系统。在Web集群搭建之后,再对该网站进行架构的升级,配置七层负载均衡器改善网站性能,配置共享存储服务器存储静态文件,配置备份服务器对网站数据进行安全备份。9.1

项目准备9.1.3

项目实施要完成图中的网站架构部署,至少要准备8台可用的服务器。本章项目使用云服务器,实验环境具体如表。9.1

项目准备9.1.3

项目实施服务器角色应用程序私网IP地址公网IP地址Web服务器1Apache+PHP226Web服务器2Nginx+PHP254数据库服务器mysqlMySQL70共享存储nfsNFS+Rsync+Inotify-tools430备份服务器backupRsync258七层负载均衡器lb01HAProxy+Keepalived176VIP:50弹性公网IP:91七层负载均衡器lb02HAProxy+Keepalived0备注:本实验中所有服务器都采用CentOS7.6操作系统,需要提前关闭防火墙及Selinux,同步系统时间,做域名解析。使用云服务器时需要注意,实际环境按业务实际需要选择区域购买。保证集群在同一内网段,就要使所有云资源须在同一区域。从表9.1可以看出,将2台同子网的弹性云服务器配置Keepalived,一台为主服务器,一台为备份服务器,并将这2台弹性云服务器绑定同一个虚拟IP。虚拟IP需要登录云控制台,在VPC网络板块下去申请,申请通过后可以在VPC网络板块下看到。将虚拟IP与弹性公网IP绑定,从互联网可以访问绑定了该虚拟IP地址的主备云服务器。9.1

项目准备9.1.3

项目实施为所有机器做域名解析,在/etc/hosts文件中加入以下代码。22web125web27mysql43nfs25backup1lb01lb029.2LNMP部署网站LNMP架构上线业务9.2

LNMP部署网站9.2.1

LNMP架构1.在Web服务器上搭建LNMP环境,以web1为例,首先安装Nginx,并设置为开机自启。[root@web1~]#yum-yinstallepel-release[root@web1~]#yuminstall-ynginx[root@web1~]#systemctlstartnginx[root@web1~]#systemctlenablenginx2.使用源码编译安装PHP。#安装编译工具及PHP的相关依赖包[root@web1~]#yuminstall-ygccgcc-c++makezlibzlib-develpcrepcre-devellibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clientsopenldap-servers#下载PHP软件包到/usr/local目录[root@web1~]#cd/usr/local/9.2

LNMP部署网站9.2.1

LNMP架构2.使用源码编译安装PHP。[root@web1local]#wget/distributions/php-7.2.20.tar.gz--2022-05-1916:47:54--/distributions/php-7.2.20.tar.gzResolving()...9,2a02:cb40:200::1adConnectingto()|9|:443...connected.HTTPrequestsent,awaitingresponse...200OKLength:19724758(19M)[application/octet-stream]Savingto:‘php-7.2.20.tar.gz’100%[==============>]19,724,758344KB/sin63s2022-05-1916:48:58(307KB/s)-‘php-7.2.20.tar.gz’saved[19724758/19724758]#解压[root@web1local]#tar-zxfphp-7.2.20.tar.gz9.2

LNMP部署网站9.2.1

LNMP架构3.进入解压后的PHP目录,对即将安装的PHP软件进行配置,以及检查当前环境是否满足源代码安装的依赖关系。[root@web1local]#cdphp-7.2.20[root@web1local]#./configure--prefix=/usr/local/php--with-config-file-path=/usr/local/php--enable-mbstring--with-openssl--enable-ftp--with-gd--with-jpeg-dir=/usr--with-png-dir=/usr--with-mysql=mysqlnd--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd--with-pear--enable-sockets--with-freetype-dir=/usr--with-zlib--with-libxml-dir=/usr--with-xmlrpc--enable-zip--enable-fpm--enable-xml--enable-sockets--with-gd--with-zlib--with-iconv--enable-zip--with-freetype-dir=/usr/lib/--enable-soap--enable-pcntl--enable-cli--with-curl--enable-exif--enable-bcmath#安装[root@web1php-7.2.20]#make&&makeinstall9.2

LNMP部署网站9.2.1

LNMP架构4.安装完成后,拷贝一份php.ini至php安装目录。5.在环境配置文件/etc/profile中添加PHP环境变量。[root@web1php-7.2.20]#cpphp.ini-production/usr/local/php/php.ini[root@web1php-7.2.20]#exportPATH=$PATH:/usr/local/php/bin[root@web1php-7.2.20]#source/etc/profile6.查看当前PHP的版本,进一步验证PHP是否安装成功。[root@web1php-7.2.20]#php-vPHP7.2.20(cli)(built:Apr20202217:21:31)(NTS)Copyright(c)1997-2018ThePHPGroupZendEnginev3.2.0,Copyright(c)1998-2018ZendTechnologies7.至此PHP安装完成,接着复制PHP-FPM的启动脚本。[root@web1php-7.2.20]#cp./sapi/fpm/init.d.php-fpm/etc/init.d/php-fpm[root@web1php-7.2.20]#chmod+x/etc/init.d/php-fpm9.2

LNMP部署网站9.2.1

LNMP架构8.修改PHP-FPM的配置文件。[root@web1php-7.2.20]#cd/usr/local/php/etc/[root@web1etc]#cpphp-fpm.conf.defaultphp-fpm.conf#删除pid=run/php-fpm.pid前面的分号[root@web1etc]#vimphp-fpm.conf……省略部分代码……pid=run/php-fpm.pid[root@web1etc]#cdphp-fpm.d/[root@web1php-fpm.d]#cpwww.conf.defaultwww.conf9.启动PHP-FPM。[root@web1php-fpm.d]#/etc/init.d/php-fpmstartStartingphp-fpmdone[root@web1php-fpm.d]#/etc/init.d/php-fpmstatusphp-fpm(pid126518)isrunning...可修改www.conf文件中的user和group为当前用户,默认用户和用户组为nobody。9.2

LNMP部署网站9.2.1

LNMP架构10.查看PHP-FPM的进程信息。[root@web1php-fpm.d]#ps-ef|grepphp-fpmroot200921011:17?00:00:00php-fpm:masterprocess(/usr/local/php/etc/php-fpm.conf)nobody2009320092011:17?00:00:00php-fpm:poolwwwnobody2009420092011:17?00:00:00php-fpm:poolwwwroot3092729760011:25pts/000:00:00grep--color=autophp-fpm11.测试页面的编写代码及内容。#vim/var/www/html/index.php<?phpphpinfo();?>编写完成后,输入:wq!,保存退出可修改www.conf文件中的user和group为当前用户,默认用户和用户组为nobody。在两台Web服务器上各自编写一个PHP测试页,测试网站是否能解析PHP语言。若之前安装的PHP可以正常工作,在浏览器中访问该动态Web服务器IP时,可以看到PHP信息页。9.2

LNMP部署网站9.2.1

LNMP架构12.在浏览器中访问Web服务器的IP。Nginx与PHP可以正常工作。web2服务器做与web1同样的操作。9.2

LNMP部署网站9.2.2

上线业务13.在web1服务器上创建网站目录/webdir,上传内容管理系统项目包。[root@web1~]#mkdir/webdir[root@web1~]#cd/webdir/[root@web1webdir]#wget/rpcms/RPCMS/repository/archive/master.zip[root@web1webdir]#lsmaster.zip[root@web1webdir]#unzipmaster.zip[root@web1webdir]#lsmaster.zipRPCMS-master14.设置网站目录的权限。[root@web1webdir]#chmod777-R/webdir/*9.2

LNMP部署网站9.2.2

上线业务15.Nginx默认只处理以.html结尾的文件,将.php文件加入网站处理的范围,更新网站接收的文件类型以及网站目录。创建网站配置文件。[root@web1webdir]#vim/etc/nginx/conf.d/rpcms.confserver{listen80;server_namelocalhost;charsetutf-8;indexindex.phpindex.html;root/webdir/RPCMS-master;autoindexoff;location/{if(!-e$request_filename){rewrite^(.*)$/index.php?s=$1last;break;}}location~\.php${fastcgi_pass:9000;fastcgi_indexindex.php;fastcgi_paramPHP_VALUE"open_basedir=/webdir/:/tmp/:/var/tmp/";fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params;}9.2

LNMP部署网站9.2.2

上线业务15.Nginx默认只处理以.html结尾的文件,将.php文件加入网站处理的范围,更新网站接收的文件类型以及网站目录。创建网站配置文件。#配置伪静态规则location~*^/(data|plugin|system)/.*.(php|php5)${ denyall;}location/RPCMS-master/{ if(!-e$request_filename){ rewrite^/rpcms/(.*)$/rpcms/index.php?s=$1last;break;}}}16.重新启动Nginx使配置文件生效。[root@web1webdir]#systemctlrestartnginx9.2

LNMP部署网站9.2.2

上线业务17.有了执行权限,业务就可以在线上运行。重新启动Nginx服务后,访问web1的IP即可进入系统的安装协议页面。单击“同意”按钮,开始检测环境支持和读写权限,进入安装向导页面。18.环境及目录权限检测过程。单击“下一步”按钮。9.2

LNMP部署网站9.2.2

上线业务19.页面出现错误提示。20.若没有www用户,则需要创建www用户和组。data、plugin、templates/index和upload文件显示“非www用户”,因此修改data、plugin、templates/index和upload文件的属主和属组为www。[root@web1~]#idwwwid:www:nosuchuser[root@web1~]#groupaddwww[root@web1~]#useradd-gwww-s/sbin/nologinwww[root@web1RPCMS-master]#idwwwuid=1000(www)gid=1000(www)组=1000(www)9.2

LNMP部署网站9.2.2

上线业务21.修改data、plugin、templates/index和upload文件的属主和属组为www。22.重新进入安装目录检测页面。[root@web1~]#cd/webdir/RPCMS-master/[root@web1RPCMS-master]#lsconfig.phpfavicon.icopluginroute.phpsystemuploadsdataindex.phpREADME.mdstatictemplates[root@web1RPCMS-master]#chownwwwdata/[root@web1RPCMS-master]#chownwwwplugin/[root@web1RPCMS-master]#chownwwwtemplates/index/[root@web1RPCMS-master]#chownwwwuploads/安装目录检测一切正常,单击“下一步”按钮。9.2

LNMP部署网站9.2.2

上线业务23.进入参数配置页面,开始填写MySQL数据库和网站管理员信息。接下来配置数据库服务器,web1和web2需要使用的是同一个数据库,才能使得数据同步。9.3部署数据库服务器安装并启动MySQL连接数据库[root@mysql~]#lsmysql80-community-release-el7-3.noarch.rpm[root@mysql~]#rpm-ivhmysql80-community-release-el7-3.noarch.rpmwarning:mysql80-community-release-el7-3.noarch.rpm:HeaderV3DSA/SHA1Preparing...#################################Updating/installing...1:mysql80-community-release-el7-3#################################9.3

部署数据库服务器1.首先,卸载系统自动安装的MariaDB。#查看已安装的MariaDB[root@mysql~]#rpm-qa|grepmariadbmariadb-libs-5.5.65-1.el7.x86_64#强制删除MariaDB[root@mysql~]#rpm-e--nodepsmariadb-libs-5.5.65-1.el7.x86_64[root@mysql~]#rpm-qa|grepmariadb2.使用wget命令下载MySQLRPM包。[root@mysql~]#wget/get/mysql80-community-release-el7-3.noarch.rpm3.此时再使用RPM工具将该镜像包解析并更新至本机的镜像源中。下载完成后,输入ls即可看到下载完成的MySQL镜像包。9.3

部署数据库服务器4.当官方源配置完成,服务器就可以使用Yum进行安装并使用该软件。下载Yum管理工具包。[root@mysql~]#yum-yinstallyum-utils5.下载完成后使用yum-config-manager命令关闭MySQL8.0版本,并开启MySQL5.7版本。[root@mysql~]#yum-config-manager--disablemysql80-community[root@mysql~]#yum-config-manager--enablemysql57-community6.使用Yum命令下载并安装MySQL。[root@mysql~]#yum-yinstallmysql-community-server--nogpgcheck……省略安装过程……已安装:mysql-community-server.x86_640:5.7.38-1.el7完毕!9.3

部署数据库服务器7.启动MySQL,并设置为开机自启。[root@mysql~]#systemctlstartmysqld[root@mysql~]#systemctlenablemysqld8.查看root用户被授予的临时密码。[root@mysql~]#grep"Atemporarypassword"/var/log/mysqld.log2022-06-08T06:33:34.949805Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:a_g7Rd:fqUa&综上所述,MySQL已经安装并启动完成。MySQL的临时登录密码为a_g7Rd:fqUa&(随机)。9.3

部署数据库服务器9.登录数据库修改密码,创建数据库用户,并授予相关权限。[root@mysql~]#mysql-uroot-p'a_g7Rd:fqUa&'……省略安装过程……#修改MySQL登录密码mysql>ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'qf@123.coM';QueryOK,0rowsaffected(0.00sec)#授予web服务器权限mysql>grantallon*.*toroot@'192.168.1.%'identifiedby'qf@123;.coM';QueryOK,0rowsaffected,1warning(0.00sec)#创建数据库用户qianfengmysql>createuserqianfeng@'%'identifiedby'qf@123.coM';QueryOK,0rowsaffected(0.06sec)#授予权限mysql>grantallon*.*to'qianfeng'@'%';QueryOK,0rowsaffected(0.00sec)#允许远程登录mysql>usemysqlDatabasechangedmysql>updateusersethost='%'whereuser='qianfeng';QueryOK,0rowsaffected(0.00sec)Rowsmatched:0Changed:0Warnings:0#刷新mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)新建数据库用户为qianfeng,登录密码为“qf@123.coM”。9.3

部署数据库服务器10.初始化数据库之后,在网站根目录下编写test.php文件,测试网站是否能与数据库连通。若可以成功连接则返回Successfullyconnected,否则返回Fail。[root@web1~]#cat/webdir/RPCMS-master/connect.php<?php$link=mysqli_connect('7','qianfeng','qf@123.coM');if($link)echo"Successfullyconnected";elseecho"Fail";mysql_close();?>11.编写完成后,在浏览器中访问connect.php。PHP7.0版本开始废除mysql_connect()函数,使用mysqli_connet()函数代替。当前网站与数据库交互成功,分离式LNMP环境搭建完成。9.3

部署数据库服务器12.为内容管理系统创建数据库rpcms,并授予qianfeng用户管理该数据库的权限。#创建rpcms数据库mysql>createdatabaserpcms;QueryOK,1rowaffected(0.00sec)mysql>showdatabases;++|Database|++|information_schema||mysql||performance_schema||rpcms||sys|++5rowsinset(0.00sec)#授予qianfeng管理数据库的权限mysql>grantallon*.*to'qianfeng'@'%';QueryOK,0rowsaffected(0.00sec)#刷新mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)9.3

部署数据库服务器13.数据库服务器配置完成后,开始填写MySQL数据库和网站管理员信息。需要注意数据库的信息要填写之前设置的用户及密码,必须保证图9.9填写信息的真实性,否则无法连接到数据库。填写完成后,单击“下一步”按钮,即可开始安装14.安装成功页面。至此,内容管理网站安装完成,单击“访问后台”按钮9.3

部署数据库服务器15.输入网站管理员信息,即可登录网站。单击“登录”按钮。16.进入网站管理后台。9.3

部署数据库服务器17.将web1的/webdir/目录拷贝给web2,使得Web集群将数据存储到同一个数据库中。[root@web1~]#scp-r/webdir/root@web2:/18.将web1的网站配置文件拷贝给web2。[root@web1RPCMS-master]#scp-r/etc/nginx/conf.d/rpcms.confroot@web2:/etc/nginx/conf.d/root@web2'spassword:rpcms.conf100%7633.4MB/s00:0019.web2若没有www用户,则需要创建www用户和组。[root@web1~]#idwwwid:www:nosuchuser[root@web1~]#groupaddwww[root@web1~]#useradd-gwww-s/sbin/nologinwww[root@web1RPCMS-master]#idwwwuid=1000(www)gid=1000(www)组=1000(www)9.3

部署数据库服务器20.修改web2网站目录下data、plugin、templates/index和upload文件的属主和属组为www。[root@web1~]#cd/webdir/RPCMS-master/[root@web1RPCMS-master]#lsconfig.phpfavicon.icopluginroute.phpsystemuploadsdataindex.phpREADME.mdstatictemplates[root@web1RPCMS-master]#chownwwwdata/[root@web1RPCMS-master]#chownwwwplugin/[root@web1RPCMS-master]#chownwwwtemplates/index/[root@web1RPCMS-master]#chownwwwuploads/21.修改网站目录的权限。[root@web1RPCMS-master]#chmod777-R/webdir/RPCMS-master/*9.3

部署数据库服务器22.重启web2服务器的Nginx,然后访问web2的IP地址,会直接访问到网站首页。web集群已经成功上线网站业务。9.4共享存储配置NFS服务配置Web集群测试共享数据在Web服务器成功上线网站系统后,所有的资源都存储于Web服务器及其连接的第三方数据库中。将Web服务器中的静态资源文件通过NFS共享至Web服务器,搭建共享存储服务器,配置NFS,让Web集群读写数据都从NFS挂载。9.4

共享存储9.4

共享存储9.4.1

配置NFS服务1.首先在NFS服务器中下载并安装NFS,启动该项服务,并设置其开机自启。[root@nfs~]#yum-yinstallnfs-utilsrpcbind……省略安装过程……Installed:nfs-utils.x86_641:1.3.0-0.68.el7.2rpcbind.x86_640:0.2.0-49.el7[root@nfs~]#systemctlstartnfs-server[root@nfs~]#systemctlenablenfs-server[root@nfs~]#systemctlstartrpcbind[root@nfs~]#systemctlenablerpcbind2.设置完成后,新建商城网站存放目录/leadshop/web,用于接收Web服务器上安装完成的论坛网站数据。[root@nfs~]#mkdir-p/webdir/RPCMS-master/uploads[root@nfs~]#mkdir-p/webdir/RPCMS-master/static9.4

共享存储9.4.1

配置NFS服务3.内容管理系统的uploads目录和static目录存储静态资源,故需设置这两个目录为共享目录即可,共享对象为Web集群。[root@nfs~]#vim/etc/exports/webdir/RPCMS-master/uploads/24(rw,all_squash,anonuid=0,insecure)/webdir/RPCMS-master/static//24(rw,all_squash,anonuid=0,insecure)创建完成后,编辑/etc/exports文件,设置服务器共享规则。本项目中的web1和web2在同一网段,客户端地址写其所在的网段即可。9.4

共享存储9.4.1

配置NFS服务4.一般修改NFS配置文档后,无需重启NFS,直接执行exportfs-rv命令即可使修改的/etc/exports生效。[root@nfsRPCMS-master]#exportfs-rvexporting/24:/webdir/RPCMS-master/staticexporting/24:/webdir/RPCMS-master/uploads9.4

共享存储9.4.2

配置Web集群1.首先将Web服务器中的静态数据发送至NFS服务器一份,使得NFS服务器存有相关数据。[root@web1~]#scp-r/webdir/RPCMS-master/uploads/*root@nfs:/webdir/RPCMS-master/uploads/[root@web1~]#scp-r/webdir/RPCMS-master/static/*root@nfs:/webdir/RPCMS-master/static/2.在Web服务器中下载并安装NFS服务,启动该项服务,并设置其开机自启。#web1[root@web1~]#yum-yinstallnfs-utilsrpcbind[root@web1~]#systemctlstartnfs[root@web1~]#systemctlstartrpcbind[root@web1~]#systemctlenablenfs[root@web1~]#systemctlenablerpcbind#web2[root@web2~]#yum-yinstallnfs-utilsrpcbind[root@web2~]#systemctlstartnfs[root@web2~]#systemctlstartrpcbind[root@web2~]#systemctlenablenfs[root@web2~]#systemctlenablerpcbind9.4

共享存储9.4.2

配置Web集群3.设置完成后,查看NFS服务器共享出来的目录。[root@nfs~]#showmount-enfsExportlistfornfs:/webdir/RPCMS-master/static/24/webdir/RPCMS-master/uploads/244.继续在Web服务器上挂载共享目录。#web1[root@web1~]#mountnfs:/webdir/RPCMS-master/static/webdir/RPCMS-master/static[root@web1~]#mountnfs:/webdir/RPCMS-master/uploads/webdir/RPCMS-master/uploads#web2[root@web2~]#mountnfs:/webdir/RPCMS-master/static/webdir/RPCMS-master/static[root@web2~]#mountnfs:/webdir/RPCMS-master/uploads/webdir/RPCMS-master/uploads当前可用的共享文件目录/webdir/RPCMS-master/static和/webdir/RPCMS-master/uploads。9.4

共享存储9.4.2

配置Web集群5.需要注意,直接用mount方式进行挂载,重启后就会失效。一般企业工作中推荐使用配置文件的方式,使其开机自动挂载,编辑/etc/fstab文件,编辑挂载命令后保存即可。#web1[root@web1~]#vim/etc/fstabnfs:/webdir/RPCMS-master/uploads/webdir/RPCMS-master/uploadsnfsdefaults00nfs:/webdir/RPCMS-master/static/webdir/RPCMS-master/staticnfsdefaults00#web2[root@web2~]#vim/etc/fstabnfs:/webdir/RPCMS-master/uploads/webdir/RPCMS-master/uploadsnfsdefaults00nfs:/webdir/RPCMS-master/static/webdir/RPCMS-master/staticnfsdefaults006.配置完成后,输入mount-a使/etc/fstab中的内容重新加载,自动挂载共享目录。[root@web1~]#mount-a[root@web2~]#mount-a9.4

共享存储9.4.2

配置Web集群7.配置完成后,查看动态Web服务器的挂载信息。[root@web1~]#df-h文件系统容量已用可用已用%挂载点devtmpfs3.9G03.9G0%/devtmpfs3.9G03.9G0%/dev/shmtmpfs3.9G8.6M3.9G1%/runtmpfs3.9G03.9G0%/sys/fs/cgroup/dev/vda236G3.3G31G10%/tmpfs783M0783M0%/run/user/0nfs:/webdir/RPCMS-master/static36G2.4G32G7%/webdir/RPCMS-master/staticnfs:/webdir/RPCMS-master/uploads36G2.4G32G7%/webdir/RPCMS-master/uploads[root@web2~]#df-h文件系统容量已用可用已用%挂载点devtmpfs3.9G03.9G0%/devtmpfs3.9G03.9G0%/dev/shmtmpfs3.9G17M3.9G1%/runtmpfs3.9G03.9G0%/sys/fs/cgroup/dev/vda236G3.3G31G10%/tmpfs783M0783M0%/run/user/0nfs:/webdir/RPCMS-master/static36G2.4G32G8%/webdir/RPCMS-master/staticnfs:/webdir/RPCMS-master/uploads36G2.4G32G8%/webdir/RPCMS-master/uploads通过系统的反馈信息可以看到,目标目录均已成功挂载。9.4

共享存储9.4.3

测试共享数据1.资源共享部署完成后,测试静态文件能不能在各Web服务器之间达成共享。首先在NFS服务器的网站静态资源文件夹中编写测试文件test.html。[root@nfs~]#vim/webdir/RPCMS-master/static/test.htmlNFS共享存储测试页面!2.测试页面创建完成后,NFS服务器现已存有相关数据,在Web服务器端对该资源进行访问。浏览器访问web1的IP,访问界面如图。3.浏览器访问web2的测试页面,访问界面如图。由此可以看出,尽管文件只在NFS服务器中进行写入,但因为不同的Web服务器之间对静态资源文件夹进行共享,共享系统中的动态Web服务器也可以直接获取共享文件夹内的资源,返回给用户,资源共享配置成功。9.4

共享存储9.4.3

测试共享数据4.登录内容管理网站后台,发布一篇文章,上传一张图片。同理,若用户与Web服务器进行交互,产生的动态数据将写入数据库,静态数据将写入共享的静态文件夹,两台Web服务器都可以访问。单击“发布文章”按钮,则成功创建了静态文件,可通过单击“文章”选项栏查看已发布的文章。9.4

共享存储9.4.3

测试共享数据5.网页上传的文件则保存至网站根目录下的uploads目录中,查看Web服务器的uploads目录中的图片。#web1[root@web1~]#tree-L3/webdir/RPCMS-master/uploads/webdir/RPCMS-master/uploads├──202206│

├──1654745802111372.png│

└──thum-1654745802111372.png└──index.html1directory,3files#web2[root@web2~]#tree-L3/webdir/RPCMS-master/uploads/webdir/RPCMS-master/uploads├──202206│

├──1654745802111372.png│

└──thum-1654745802111372.png└──index.html1directory,3files9.4

共享存储9.4.3

测试共享数据6.查看NFS共享存储服务器中是否同步数据。[root@nfs~]#ls/webdir/RPCMS-master/uploads/202206index.html[root@nfs~]#ls/webdir/RPCMS-master/uploads/202206/1654745802111372.pngthum-1654745802111372.pngNFS共享存储服务器部署成功。9.5共享存储实时备份部署Rsync服务端—backup备份服务器部署Rsync客户端—nfs存储服务器若保证用户的重要的数据不丢失,且数据一有变化就备份到备份服务器上,是非常重要的一步。NFS作为Web服务器的共享存储,就需要将存储的数据同步到备份服务器上,实现文件的同步备份。9.5

共享存储实时备份9.5

共享存储实时备份9.5.1

部署Rsync服务端—backup备份服务器1.首先查看备份主机是否安装了rsync工具。[root@backup~]#rpm-qa|grep"rsync"2.安装rsync服务。[root@backup~]#yum-yinstallrsync[root@backup~]#rpm-qa|grep"rsync"rsync-3.1.2-10.el7.x86_643.修改/etc/rsyncd.conf配置文件,添加webdir模块,模块名可根据NFS服务端的备份目录自定义。[root@backup~]#cat/etc/rsyncd.conf#/etc/rsyncd:configurationfileforrsyncdaemonmode#Seersyncd.confmanpageformoreoptions.#configurationexample:uid=rsyncgid=rsyncusechroot=nomaxconnections=200pidfile=/var/run/rsyncd.pidlogfile=/var/log/rsync.log#exclude=lost+found/#transferlogging=yestimeout=300#ignorenonreadable=yes#dontcompress=*.gz*.tgz*.zip*.z*.Z*.rpm*.deb*.bz2ignoreerrorsreadonly=falselist=falsehostsallow=43/24#nfshostsdeny=/32authusers=rsync_backupsecretsfile=/etc/rsync.passwordfakesuper=yes#[ftp]#path=/home/ftp#comment=ftpexportarea[webdir]path=/webdir/9.5

共享存储实时备份9.5.1

部署Rsync服务端—backup备份服务器4.创建rsync属主和属组。[root@backup~]#useradd-M-s/sbin/nologinrsync[root@backup~]#tail-1/etc/passwdrsync:x:1000:1000::/home/rsync:/sbin/nologin[root@backup~]#idrsyncuid=1000(rsync)gid=1000(rsync)组=1000(rsync)5.根据对配置文件的新模块的描述,创建相应目录。[root@backup~]#mkdir-p/webdir/6.设置目录的属主和属组,使得rsync客户端通过用户连接时对备份目录获得相关权限。[root@backup~]#chown-Rrsync.rsync/webdir/[root@backup~]#ll-d/webdir/drwxr-xr-x2rsyncrsync40966月910:24/webdir/9.5

共享存储实时备份9.5.1

部署Rsync服务端—backup备份服务器7.启动rsync服务,并且设置开机自启。[root@backup~]#systemctlstartrsyncd[root@backup~]#systemctlenablersyncd[root@backup~]#systemctlstatusrsyncd

……Active:active(running)since四2022-06-0910:41:01CST;13sago

……8.将虚拟用户及密码写入密码配置文件。[root@backup~]#echo"rsync_backup:123456">/etc/rsync.password9.为提高密码安全性,修改密码文件的权限。[root@backup~]#ll/etc/rsync.password-rw-r--r--1rootroot206月910:43/etc/rsync.password[root@backup~]#chmod600/etc/rsync.password[root@backup~]#ll/etc/rsync.password-rw1rootroot202月2115:23/etc/rsync.password9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(1)查看nfs主机是否安装了rsync工具。[root@nfs~]#rpm-qa|grep"rsync"(2)安装rsync服务。[root@nfs~]#yum-yinstallrsync[root@nfs~]#rpm-qa|grep"rsync"rsync-3.1.2-10.el7.x86_64(3)添加虚拟用户的密码文件,只写入密码即可。[root@nfs~]#echo"123456">/etc/rsync.password1.实现rsync数据推送(4)更改密码文件的权限,以提高安全性。[root@nfs~]#chmod600/etc/rsync.password[root@nfs~]#ll-d/etc/rsync.password-rw1rootroot76月910:46/etc/rsync.password9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(5)使用push推送需备份的静态资源文件,即在nfs主机中将指定的目录内容推送到rsync服务端指定目录下。[root@nfs~]#rsync-avH--port=873--progress/webdir/*rsync_backup@25::webdir/--password-file=/etc/rsync.password……省略传输过程……sent6,884,841bytesreceived6,227bytes13,782,136.00bytes/sectotalsizeis6,861,649speedupis1.001.实现rsync数据推送Rsync同步包括两种方式,push推送和pull拉取。文件备份成功。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(6)查看备份服务器的备份目录。[root@backup~]#tree-L3/webdir//webdir/└──RPCMS-master├──a.test├──b.test├──static│

├──css│

├──editor│

├──font│

├──images│

├──js│

└──test.html└──uploads├──202206└──index.html9directories,4files1.实现rsync数据推送nfs主机完成推送数据至备份服务器。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(1)首先查看当前系统是否支持inotify。[root@nfs~]#uname-r3.10.0-957.el7.x86_64[root@nfs~]#ls-l/proc/sys/fs/inotify/总用量0-rw-r--r--1rootroot06月913:50max_queued_events-rw-r--r--1rootroot06月913:50max_user_instances-rw-r--r--1rootroot06月913:50max_user_watches2.安装Inotify插件-rsync客户端rsync不能实时监测和同步数据,为了使服务端和客户端数据保持一致,以及在应用故障时完全恢复数据,可以使用rsync+inotify插件解决,然后通过写入脚本实现数据的实时同步。出现了3个文件则表示支持inotify。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器2.安装Inotify插件-rsync客户端(2)查看是否安装了inotify软件,如果没有,则安装inotify软件。[root@nfs~]#rpm-qainotify-tools[root@nfs~]#yum-yinstallepel-release[root@nfs~]#yum-yinstallinotify-tools……部分步骤已省略……已安装:inotify-tools.x86_640:3.14-9.el7

完毕!(3)开启两个nfs窗口用于测试inotify插件的监控功能是否正常开启。①第一个窗口使用inotifywait命令监控/webdir目录的创建文件。[root@nfs~]#inotifywait-mrq--timefmt'%y/%m/%d%H:%M'--format'%T%w%f'-ecreate/webdir9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器2.安装Inotify插件-rsync客户端(3)-②第二个窗口在/webdir目录中创建文件,以触发inotify的监控功能。#查看已有文件[root@nfs~]#ls/webdir/RPCMS-master#创建测试文件[root@nfs~]#touch/webdir/{1,2,3}.test.file[root@nfs~]#ls/webdir/1.test.file2.test.file3.test.fileRPCMS-master(3)-③回到窗口1观察监控创建create事件会有什么变化。[root@nfs~]#inotifywait-mrq--timefmt'%y/%m/%d%H:%M'--format'%T%w%f'-ecreate/webdir22/06/0914:24/webdir/1.test.file22/06/0914:24/webdir/2.test.file22/06/0914:24/webdir/3.test.fileinotify插件的监控功能正常。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(4)将rsync和inotify实现的功能写入脚本中。[root@nfs~]#cat/real_time_backup.sh#!/bin/bashwhile:dosrcdir=/webdirinotifywait-rq--timefmt'%d/%m/%y-%H:%M'--format'%T%w%f'-emodify,create,attrib,delete,move${srcdir}\|whilereadfiledoecho"${file}isnotified!"rsync-aH--port=873--progress/webdir/*rsync_backup@25::webdir/--password-file=/etc/rsync.passworddonedone2.安装Inotify插件-rsync客户端开启两个nfs主机窗口用于测试实时同步数据备份,然后在备份服务器查看数据是否推送备份成功。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(5)首先在nfs主机窗口1,执行上述脚本。[root@nfs~]#bashrsync_test_1.sh(6)在nfs主机窗口2,在需要备份的目录创建文件。#已有文件[root@nfs~]#ls/webdir/RPCMS-master/staticuploads#创建新的测试文件[root@nfs~]#touch/webdir/RPCMS-master/{a,b}.test[root@nfs~]#ls/webdir/RPCMS-master/a.testb.teststaticuploads2.安装Inotify插件-rsync客户端9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(7)返回窗口1观察。[root@nfs~]#bash/real_time_backup.sh09/06/22-14:50/webdir/RPCMS-master/a.testisnotified!sendingincrementalfilelistRPCMS-master/RPCMS-master/a.test0100%0.00kB/s0:00:00(xfr#1,to-chk=366/368)RPCMS-master/b.test0100%0.00kB/s0:00:00(xfr#2,to-chk=365/368)2.安装Inotify插件-rsync客户端数据显示已经传到备份服务器。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(8)为了进一步验证,查看备份机的备份目录。[root@backup~]#tree-L3/webdir//webdir/├──1.test.file├──2.test.file├──3.test.file└──RPCMS-master├──a.test├──b.test├──static│

├──css│

├──editor│

├──font│

├──images│

├──js│

└──test.html└──uploads├──202206└──index.html9directories,7files2.安装Inotify插件-rsync客户端NFS共享数据的实时同步推送备份成功实现。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器①将(脚本)启动文件移动到/etc/init.d/或者/etc/rc.d/init.d/目录下。[root@nfs~]#mv/real_time_backup.sh/etc/init.d/2.安装Inotify插件-rsync客户端(9)该脚本需要在系统启动时自动执行,开机脚本自动执行的方式有多种,读者可任选一种方式进行配置。在此,通过chkconfig命令设置脚本开机自动执行,步骤如下。②启动文件前面务必添加如下3行代码,否则会提示chkconfig不支持。#!/bin/sh:表示系统使用的shell,所有的shell脚本都是这样。#chkconfig:例“#chkconfig:352080”分别代表运行级别,启动优先权,关闭优先权,此行代码必须存在。#description:自定义描述。9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(9)-②脚本文件。[root@nfs~]#cat/etc/init.d/real_time_backup.sh#!/bin/bash#chkconfig:352080#description:httpserverwhile:dosrcdir=/webdirinotifywait-rq--timefmt'%d/%m/%y-%H:%M'--format'%T%w%f'-emodify,create,attrib,delete,move${srcdir}\|whilereadfiledoecho"${file}isnotified!"rsync-aH--port=873--progress/webdir/*rsync_backup@25::webdir/--password-file=/etc/rsync.passworddonedone2.安装Inotify插件-rsync客户端9.5

共享存储实时备份9.5.2

部署Rsync客户端—nfs存储服务器(9)-③设置脚本的可执行权限。[root@nfs~]#chmod+x/etc/init.d/real_time_backup.sh2.安

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论