Linux系统运维之系统架构.pdf

上传人:索**** 文档编号:75149085 上传时间:2023-03-02 格式:PDF 页数:50 大小:1.49MB
返回 下载 相关 举报
Linux系统运维之系统架构.pdf_第1页
第1页 / 共50页
Linux系统运维之系统架构.pdf_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《Linux系统运维之系统架构.pdf》由会员分享,可在线阅读,更多相关《Linux系统运维之系统架构.pdf(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、UNIXHOT 打造中国最专业的运维门户网站http:/1Linux 系统运维之系统架构Linux 系统运维之系统运维之系统架构系统架构UNIXHOT运维运维社区社区http:/UNIXHOT 打造中国最专业的运维门户网站http:/2Linux 系统运维之系统架构版权信息:Copyright(c)2010 Zhao Shundong.Permissionisgrantedtocopy,distributeand/ormodifythisdocument underthetermsoftheGNUFreeDocumentationLicense,Version1.2or any laterve

2、rsionpublishedby the Free SoftwareFoundation;with no InvariantSections,no Front-CoverTexts,and no Back-CoverTexts.A copy ofthelicenseisincludedinthesectionentitledGNU Free DocumentationLicense.使用说明:1.为保证本文的完整性和可用性,本文遵循GFDL 协议。2.可以在 http:/ 运维社区讨论交流。5.有相关问题或业务合作。请邮件至。相关文档:1.Linux系统运维之系统架构http:/ DBA ht

3、tp:/ DBA http:/ 打造中国最专业的运维门户网站http:/3Linux 系统运维之系统架构修订历史记录日期版本说明2011-01-01V1.0以 PDF方式网络发布。UNIXHOT 打造中国最专业的运维门户网站http:/4Linux 系统运维之系统架构内容简介本文通过生产应用实例,从运维工程师的角度对目前流行的Web架构做了实验性的讲解,该系列的文档属于手册类型,可以直接在生产环境部署运行。本文讲解的方案都是在互联网公司应用比较成熟,也比较通用的方案。如 LAMP、LNMP、LVSKeepalived、Apache+Tomcat 负载均衡和Nginx+Tomcat负载均衡等。目

4、录(Contents)第 1章 系统架构概述1.1Web应用架构1.2JSP 网站概述1.3PHP 网站概述1.4什么是集群1.5集群的主要类型第 2章 LAMP应用2.1Apache 服务器简介2.2Apache MPM 原理和设置2.3源码安装LAMP第 3章 LNMP 应用3.1Nginx安装3.2MySQL客户端安装3.3PHP 扩展模块安装3.4PHP FastCGI 模式安装3.5启动测试第 4章 集群中的文件共享UNIXHOT 打造中国最专业的运维门户网站http:/5Linux 系统运维之系统架构4.1DAS、NAS和 SAN4.2inotify+rsync触发式同步数据4.3

5、Sersync 部署第 5章 负载均衡中的Session 解决5.1负载均衡中Session 的问题5.2负载均衡中Session 的解决方法5.3Nginx 做负载均衡Session 解决5.4Apache Tomcat 负载均衡Session 解决第 6章 Apache Tomcat 负载均衡第 7章 NginxTomcat 负载均衡第 8章 LB 负载均衡集群2.1LVS 简介2.2LVS-NAT方式部署2.3LVS-DR方式部署第 9章 LVS Keepalived集群5.1LVS Keepalived集群简介5.2部署 LVS Keepalived5.3LVS 配置5.4Keepal

6、ived配置5.5LVS Keepalived集群测试UNIXHOT 打造中国最专业的运维门户网站http:/6Linux 系统运维之系统架构第 1 章 系统架构概述1.1 Web应用架构作为跨世纪青年,我们处于云计算和Web 2.0 的时代,搜索、视频、SNS、微博等WEB 应用铺面而来。根据美国知名IT 产业分析机构IDC 的白皮书表述:以Blog、Wiki、Tagging 和 SNS 四类应用为代表的Web2.0 趋势在中国互联网市场中引起了广泛的反响。在加上目前琳琅满目的电子商务网站,团购网站。太多太多的问题等待着有人去解决。不同的Web 脚本语言,不同的架构让很多架构师和运维工程师不

7、知到如何入手。1.2 JSP网站概述1.2.1 相关名词解释1 J2EE、J2SE、J2ME 三者的区别J2EE 是 Java2 enterpriseedition是 Java 的一种企业版用于企业级的应用服务开发J2SE 是 Java2 standardedition是 Java 的标准版,用于标准的应用开发J2ME是 Java2 MicroEdition是 Java 的微型版,常用于手机上的开发J2EE,J2SE,J2ME是 java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库。针对企业网应用的J2EE(Java2 EnterpriseEdition)、针对普通PC应用的J2

8、SE(Java2 StandardEdition)和针对嵌入式设备及消费类电器的J2ME(Java2 MicroEdition)三个版本2 JDK、JRE、SDK三者的区别JDK Java 开发工具包,JavaDevelopmentKit里面有运行环境JRE和开发时所需要的Java类库,以及一些编译调试运行的程序,如java.exe,javac.exe,javaw.exe等。JRE Java 运行环境JavaRuntimeEnvironment.这个仅仅只是Java 运行的环境,没有Java 无法运行,一般JRE 被包括在JDK中,也可以单独装一个独立的JRE.SDK 是一些公司针对某一项技术

9、为软件开发人员制作的一套辅助开发或者减少开发周期的工具.比方你用的Eclipse就是 Java 的 SDK,它全称就是EclipseSDK.UNIXHOT 打造中国最专业的运维门户网站http:/7Linux 系统运维之系统架构Java 世界中,只有独一无二的一套JDK。J2ME,J2EE都是在这套JDK 基础上的扩展。1.2.2 JSP 应用服务器运行 JSP应用的中间件主要有Tomcat、JBOSS、Weblogic、WebSphere。1.3PHP网站概述在近几年的编程语言排名上,PHP 始终在第4 名左右徘徊。PHP 站点到处可见,而且很多我们每天都登陆的1.3.1 PHP 常用开源框

10、架1TinkPHP(本土优秀的开源PHP 框架)http:/ Framework(做的都知道)http:/ MVC 都用过)http:/ 打造中国最专业的运维门户网站http:/8Linux 系统运维之系统架构1.5.2LB(Load Balancing)负载均衡集群,在 LB服务器上使用专门的路由算法,将数据包分散到多个真实服务器中进行处理,从而达到网络服务均衡负载的作用。LB 集群的开源项目:LVS详情见官方网站:http:/www.linuxvirtualserver.org1.5.3HPC(HighperformanceComputing)DC(DistributedComputing

11、)PC(ParallelComputing)高性能集群通过将多台机器连接起来同时处理复杂的计算问题。模拟星球附近的磁场、预测龙卷风的出现、定位石油资源的储藏地等情况都需要对大量的数据进行处理。传统的处理方法是使用超级计算机来完成计算工作,但是超级计算机的价格比较昂贵,而且可用性和可扩展性不够强,因此集群成为了高性能计算领域瞩目的焦点。分布式高性能计算(DC)OpenMosixOpenSSI并行式高性能计算(PC)Beowulf第 2 章 LAMP应用2.1 Apache 服务器简介2.2 Apache MPM 原理和设置在我们编译安装Apache 之前,要考虑的是让Apache 在什么样的模式

12、下运行,因为从 Apache 2.0就加入了MPM(Multi-ProcessingModules,多道处理模块)。(摘自网络,很经典)Apache 2.0 在性能上的改善最吸引人。在支持POSIX线程的 Unix 系统上,Apache 可以通过不同的 MPM 运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。相比于Apache1.3,2.0 版本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。但是在编译和运行时刻,2.0也有许多可以显著提高性能的选择。本文不想叙述那些以功能换取速UNIXHOT 打造中国最专业的运维门户网站http:/9Linux

13、系统运维之系统架构度 的 指 令,如 HostnameLookups 等,而 只 是 说 明 在 2.0 中 影 响 性 能 的 最 核 心 特性:MPM(Multi-ProcessingModules,多道处理模块)的基本工作原理和配置指令。毫不夸张地说,MPM的引入是 Apache 2.0 最重要的变化。大家知道,Apache是基于模块化的设计,而 Apache 2.0 更扩展了模块化设计到Web服务器的最基本功能。服务器装载了一种多道处理模块,负责绑定本机网络端口、接受请求,并调度子进程来处理请求。扩展模块化设计有两个重要好处:Apache 可以更简洁、有效地支持多种操作系统;服务器可以

14、按站点的特殊需要进行自定制。在用户级,MPM看起来和其它Apache 模块非常类似。主要区别是在任意时刻只能有一种MPM 被装载到服务器中。2.2.1prefork的工作原理及配置如果不用“-with-mpm”显式指定某种MPM,prefork就是 Unix 平台上缺省的MPM。它所采用的预派生子进程方式也是Apache 1.3 中采用的模式。prefork本身并没有使用到线程,2.0版使用它是为了与1.3 版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM 之一。若使用 prefork,在make编译和 make insta

15、ll安装后,使用“httpd-l”来确定当前使用的MPM,应该会看到prefork.c(如果看到worker.c说明使用的是workerMPM,依此类推)。再查看缺省生成的httpd.conf配置文件,里面包含如下配置段:StartServers5MinSpareServers5MaxSpareServers10MaxClients150MaxRequestsPerChild0prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个如此按指数级增加创建

16、的进程数,最多达到每秒32 个,直到满足MinSpareServers设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,UNIXHOT 打造中国最专业的运维门户网站http:/10Linux 系统运维之系统架构从而减小了系统开销以增加性能。MaxSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache 会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServ

17、ers和MaxSpareServers。MaxRequestsPerChild设 置 的 是 每 个 子 进 程 可 处 理 的 请 求 数。每 个 子 进 程 在 处 理 了“MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为 0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:可防止意外的内存泄漏;在服务器负载下降的时侯会自动减少子进程数。因此,可根据服务器的负载来调整这个值。笔者认为10000 左右比较合适。MaxClients是这些指令中最为重要的一个,设定的是Apache 可以同时处理的请求,是对Apache 性

18、能影响最大的参数。其缺省值150 是远远不够的,如果请求总数已达到这个值(可通过ps-ef|grephttp|wc-l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。系统管理员可以根据硬件配置和负载情况来动态调整这个值。虽然理论上这个值越大,可以处理的请求就越多,但Apache 默认的限制不能大于256。如果把这个值设为大于256,那么Apache 将无法起动。事实上,256对于负载稍重的站点也是不够的。在Apache 1.3 中,这是个硬限制。如果要加大这个值,必须在“configure”前手工修改的源代码树下的src/inc

19、lude/httpd.h中查找256,就会发现“#defineHARD_SERVER_LIMIT 256”这行。把256 改为要增大的值(如4000),然后重新编译Apache 即可。在Apache 2.0 中新加入了ServerLimit指令,使得无须重编译Apache 就可以加大MaxClients。下面是笔者的prefork配置段:StartServers10MinSpareServers10MaxSpareServers15ServerLimit2000MaxClients1000MaxRequestsPerChild10000UNIXHOT 打造中国最专业的运维门户网站http:/1

20、1Linux 系统运维之系统架构上述配置中,ServerLimit的最大值是20000,对于大多数站点已经足够。如果一定要再加大这个数值,对位于源代码树下server/mpm/prefork/prefork.c中以下两行做相应修改即可:#defineDEFAULT_SERVER_LIMIT 256#defineMAX_SERVER_LIMIT 200002.2.2 worker的工作原理及配置相对于 prefork,worker是 2.0版中全新的支持多线程和多进程混合模型的MPM。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但 是,worker 也

21、使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。这种MPM 的工作方式将是Apache 2.0 的发展趋势。在 configure-with-mpm=worker后,进行make编译、make install安装。在缺省生成的httpd.conf中有以下配置段:StartServers2MaxClients150MinSpareThreads25MaxSpareThreads75ThreadsPerChild25MaxRequestsPerChild0worker 的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的 ThreadsPe

22、rChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和 MaxSpareThreads 设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。MinSpareThreads 和 MaxSpareThreads 的最大缺省值分别是75 和 250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。ThreadsPerChild是 workerMPM 中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是 64,如

23、果负载较大,64也是不够的。这时要显式使用ThreadLimit指令,它的最大缺省值是 20000。上 述 两 个 值 位 于 源 码 树 server/mpm/worker/worker.c中 的 以 下 两行:#defineDEFAULT_THREAD_LIMIT 64UNIXHOT 打造中国最专业的运维门户网站http:/12Linux 系统运维之系统架构#defineMAX_THREAD_LIMIT 20000这两行对应着ThreadsPerChild和 ThreadLimit的限制数。最好在configure之前就把64改成所希望的值。注意,不要把这两个值设得太高,超过系统的处理能力

24、,从而因Apache 不起动使系统很不稳定。Worker 模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。这两个值位于源码树server/mpm/worker/worker.c中的以下两行:#defineDEFAULT_SERVER_LIMIT16#defineMAX_SERVER_LIMIT 20000需要注意的是,如果显式声明了ServerLimit,那么它乘以

25、ThreadsPerChild的值必须大于等于 MaxClients,而且MaxClients必须是 ThreadsPerChild的整数倍,否则 Apache 将会自动调节到一个相应值(可能是个非期望值)。下面是笔者的worker 配置段:StartServers3MaxClients2000ServerLimit25MinSpareThreads50MaxSpareThreads200ThreadLimit200ThreadsPerChild100MaxRequestsPerChild0通过上面的叙述,可以了解到Apache 2.0 中 prefork和 worker 这两个重要MPM 的

26、工作原理,并可根据实际情况来配置Apache 相关的核心参数,以获得最大的性能和稳定性。2.3源码安装 LAMPUNIXHOT 打造中国最专业的运维门户网站http:/13Linux 系统运维之系统架构rootApache-Serversrc#chmod+x httpd-2.2.13.tar.gzrootApache-Serversrc#tarzxvfhttpd-2.2.13.tar.gzrootApache-Serversrc#cd httpd-2.2.13rootApache-Serverhttpd-2.2.13#./configure-prefix=/vol1/apache-with-m

27、pm=prefork-enable-so-enable-modules=all-enable-mods-shared=allrootApache-Serverhttpd-2.2.13#make&make installrootApache-Serverhttpd-2.2.13#cp support/apachectl/etc/init.d/httpdrootApache-Serverhttpd-2.2.13#chmod+x/etc/init.d/httpd第 3 章 LNMP应用3.1 Nginx 安装3.1.1 安装 PCRE 软件包pcre(Perl Compatible Regular

28、Expressions)包括perl 兼容的正规表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的.rootWeb-Server#cd/usr/local/src/rootWeb-Server src#wgthttp:/cdnetworks-kr- src#tar zxvf pcre-8.10.tar.gzrootWeb-Server src#cd pcre-8.10rootWeb-Server pcre-8.10#./configurerootWeb-Server pcre-8.10#make&make install3.1.2 安装 Nginx 软件包。ro

29、otWeb-Server#cd/usr/local/srcrootWeb-Server src#wget http:/nginx.org/download/nginx-0.8.54.tar.gzrootWeb-Server src#tar zxvf nginx-0.8.54.tar.gzUNIXHOT 打造中国最专业的运维门户网站http:/14Linux 系统运维之系统架构rootWeb-Server src#cd nginx-0.8.54如果你想了解该版本的的一些信息,请查看CHANGES 文件。rootWeb-Server nginx-0.8.54#useradd-s/sbin/nolo

30、gin-M wwwrootWeb-Server nginx-0.8.54#./configure-prefix=/usr/local/nginx-user=www-group=www-with-http_stub_status_module-with-file-aio-with-http_ssl_modulerootWeb-Server nginx-0.8.54#make&make install3.1.3 Nginx配置文件和启动rootWeb-Server#/usr/local/nginx/sbin/nginx-tthe configuration file/usr/local/nginx

31、/conf/nginx.confsyntax is okconfiguration file/usr/local/nginx/conf/nginx.conftestis successfulrootWeb-Server#/usr/local/nginx/sbin/nginx(启动)rootWeb-Server#/usr/local/nginx/sbin/nginx-s reload(重新加载)3.2 MySQL 客户端安装rootWeb-Server#cd/usr/local/srcrootWeb-Server src#wget http:/mysql.cdpa.nsysu.edu.tw/Do

32、wnloads/MySQL-5.1/mysql-5.1.56.tar.gzrootWeb-Server src#tar zxvf mysql-5.1.56.tar.gzrootWeb-Server src#cd mysql-5.1.56rootWeb-Server mysql-5.1.56#./configure-prefix=/usr/local/mysql-localstatedir=/data/mysql-enable-assembler-with-client-ldflags=-all-static-with-mysqld-ldflags=-all-static-with-pthrea

33、d-enable-static-with-big-tables-without-ndb-debug-with-charset=utf8-with-extra-charsets=all-without-debug-enable-thread-safe-client-enable-local-infile-with-plugins=maxrootWeb-Server mysql-5.1.56#make&make installrootWeb-Server mysql-5.1.56#groupadd mysqlUNIXHOT 打造中国最专业的运维门户网站http:/15Linux 系统运维之系统架构

34、rootWeb-Server mysql-5.1.56#useradd-s/sbin/nologin-M-g mysql mysqlrootWeb-Server mysql-5.1.56#chown-R root:mysql/usr/local/mysql/3.3 PHP扩展模块安装rootweb-node1#cd/usr/local/srcrootweb-node1 src#wget http:/ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz如银联在线的网上支付接口就需要mcrypt 和 bcmath 和 curl 三个 PHP 扩展库

35、的支持,rootweb-node1 src#wgethttp:/cdnetworks-kr- src#wget http:/ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gzrootweb-node1 src#wgethttp:/cdnetworks-kr- src#wgethttp:/cdnetworks-kr- src#tar zxvf libiconv-1.13.1.tar.gzrootweb-node1 src#cd libiconv-1.13.1rootweb-node1 libiconv-1.13.1#./configure-pr

36、efix=/usr/localrootweb-node1 libiconv-1.13.1#make&make installrootweb-node1 src#tar zxvf libmcrypt-2.5.8.tar.gzrootweb-node1 src#cd libmcrypt-2.5.8rootweb-node1 libmcrypt-2.5.8#./configure&make&make installrootweb-node1 libmcrypt-2.5.8#ldconfigrootweb-node1 libmcrypt-2.5.8#cd libltdl/rootweb-node1 l

37、ibltdl#./configure-enable-ltdl-installrootweb-node1 libltdl#make&make installrootweb-node1 src#cd mhash-0.9.9.9UNIXHOT 打造中国最专业的运维门户网站http:/16Linux 系统运维之系统架构rootweb-node1 mhash-0.9.9.9#./configure&make&make installrootweb-node1 lib#ln-s/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.larootweb-node1 lib

38、#ln-s/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.sorootweb-node1 lib#ln-s/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4rootweb-node1 lib#ln-s/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8rootweb-node1 lib#ln-s/usr/local/lib/libmhash.a/usr/lib/libmhash.arootweb-node1 lib#ln-s/us

39、r/local/lib/libmhash.la/usr/lib/libmhash.larootweb-node1 lib#ln-s/usr/local/lib/libmhash.so/usr/lib/libmhash.sorootweb-node1 lib#ln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2rootweb-node1 lib#ln-s/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.1rootweb-node1 lib#ln-s/usr/local/bin/

40、libmcrypt-config/usr/bin/libmcrypt-configrootweb-node1 src#tar zxvf mcrypt-2.6.8.tar.gzrootweb-node1 src#cd mcrypt-2.6.8rootweb-node1 mcrypt-2.6.8#ldconfigrootweb-node1 mcrypt-2.6.8#./configure&make&make install3.4 PHPFastCGI 模式安装rootWeb-Serversrc#wget http:/ php-5.3.5./configure-prefix=/usr/local/p

41、hp-with-config-file-path=/usr/local/php/etc-with-mysql=/usr/local/mysql-with-mysqli=/usr/local/mysql/bin/mysql_config-with-freetype-dir-with-jpeg-dir-with-png-dir-with-iconv-dir=/usr/local-with-zlib-with-libxml-dir=/usr-enable-xmlUNIXHOT 打造中国最专业的运维门户网站http:/17Linux 系统运维之系统架构-with-curl-with-curlwrapp

42、ers-enable-sqlite-utf8-with-pdo-mysql=/usr/local/mysql-enable-bcmath-enable-shmop-enable-sysvsem-enable-inline-optimization-enable-mbregex-with-openssl-enable-pcntl-enable-fpm-with-fpm-user=www-with-fpm-group=www-enable-mbstring-with-gd-enable-gd-native-ttf-enable-sockets-with-xmlrpc-enable-zip-enab

43、le-soap-disable-debug-enable-safe-mode-with-mcrypt-with-mhash提示:如果编译出错,请根据错误提示安装相应的软件包支持,可以让你更熟悉PHP的运行细节,如果不想那么麻烦,那只好使用下面的yum安装了,再次建议您自己解决问题:yum-yinstallgcc gcc-c+autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzi

44、p2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clientsopenldap-serversrootWeb-Serverphp-5.3.5#make&make installrootWeb-Serverphp-5.3.5#cp php.ini-production/usr/local/php/etc/php.iniroo

45、tWeb-Serverphp-5.3.5#cd/usr/local/php/etc/rootWeb-Serveretc#cp php-fpm.conf.defaultphp-fpm.conf3.5 启动测试rootWeb-Server#/usr/local/nginx/sbin/nginxrootWeb-Server#/usr/local/php/sbin/php-fpm第 4 章 集群中的文件共享在第 1 章我们已经了解集群的基本技术和原理,在第2 章和第 3 章中熟悉了目前应用比较广泛的 LAMP 和 LNMP 应用。在进入集群的架构之前,我们需要先考虑一下,在集群中可能存在的问题,UNI

46、XHOT 打造中国最专业的运维门户网站http:/18Linux 系统运维之系统架构并提前了解解决方案,然后才能继续进行。如集群节点中文件如何共享,Session如何同步等。4.1 DAS、NAS和 SAN目前企业存储应用的体系结构主要有DAS、NAS 和 SAN 三种模式。从企业发展和Web 从单点到集群的发展就需要在DAS、NAS 和 SAN 三种存储方案进行不同的选择。具体三者之间的丝丝连连读者可以通过网络搜索,我推荐IT168 这篇经典文章:http:/ inotify+rsync触发式同步数据在这里主要讲解使用文件同步的方式,进行集群中文件的异步复制操作,rsync 当然是首选的目标

47、,但是 rsync 在同步文件时需要分析目录中所有文件的更新标记,每次都需要全部扫描,对于文件很多,或者目录级别很多,即使没有文件需要同步,rsync 的检查时间也会很长。对于 2.6.13 以后的 Linux内核,已经加入了inotify 模块,它是内核支持的一种,可以在后台监控文件系统的改变,可以在任何文件的修改时间发生变化后,发出通知。所以我们使用iotify 加 rsync的方式实现实时的文件同步,我们通常称之为触发式同步。4.2.1 iotify 简介4.2.2 iotify 可以监视的文件系统事件包括:IN_ACCESS,即文件被访问IN_MODIFY,文件被writeIN_ATT

48、RIB,文件属性被修改,如chmod、chown、touch 等IN_CLOSE_WRITE,可写文件被closeIN_CLOSE_NOWRITE,不可写文件被closeIN_OPEN,文件被openIN_MOVED_FROM,文件被移走,如 mvUNIXHOT 打造中国最专业的运维门户网站http:/19Linux 系统运维之系统架构IN_MOVED_TO,文件被移来,如mv、cpIN_CREATE,创建新文件IN_DELETE,文件被删除,如rmIN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己IN_UN

49、MOUNT,宿主文件系统被umountIN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE|IN_CLOSE_NOWRITE)IN_MOVE,文件被移动,等同于(IN_MOVED_FROM|IN_MOVED_TO)4.2.3 内核是否支持rootweb-node1#uname-r2.6.18-194.el5(查看你的内核版本)rootweb-node1#ls/proc/sys/fs/inotify/(如果该虚拟目录存在说明你的内核已支持)max_queued_eventsmax_user_instancesmax_user_watches4.3 Sersync部署当然你可以使用i

50、notify 脚本和 rsync 开始进行分发和同步,但是,我们有更好的选择。这个选择就是 sersync,sersync 是使用 C+编写的,它可以使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。更过优势请访问项目首页:http:/ rsync安装需要在所有目标服务器中部署rsync,并启动 rsync。rootweb-node2#cd/usr/local/srcrootweb-node2 src#wget http:/rsync.samba.org/ftp/rsync/src/rsync-3.0.8.tar.gzrootweb-node2 src#tar zx

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁