专栏首页北京马哥教育LAMP平台基于NFS实现web服务器负载均衡

LAMP平台基于NFS实现web服务器负载均衡

前言

随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解如何基于NFS实现web服务器的负载均衡及数据同步。

NFS服务介绍

NFS(Network File System)网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS本身没有提供数据传输的功能,必须借助于远程过程调用(RPC)协议来实现数据的传输。

配置文件

NFS在CentOS6上的配置文件及服务提供程序

程序包:nfs-utils脚本:/etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfslock /etc/rc.d/init.d/rpcgssd /etc/rc.d/init.d/rpcidmapd /etc/rc.d/init.d/rpcsvcgssd配置文件:/etc/exports /etc/sysconfig/nfs #提供额外功能

配置文件详解

/etc/exports文件格式及选项 文件系统 客户端(选项) 客户端(选项) 客户端:IP、FQDN或DOMAIN、NETWORK选项:secure:缺省选项,它使用了1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用这个选项rw:这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读(ro)。async:可改进性能,但是如果没有完全关闭NFS守护进程就重新启动了NFS服务器,也可能会造成数据丢失,缺省为为syncno_wdelay:关闭写延时,如果设置了async,那么NFS就会忽略这个选项nohide:如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样,要禁用这种行为,需启用 hide 选项no_subtree_check:关闭子树检查,子树检查会执行一些不想忽略的安全性检查,缺省选项是启用子树检查no_auth_nlm:可作为insecure_locks指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项,缺省选项是 auth_nlm 或 secure_locksmp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录fsid=num:通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。用户映射的选项:root_squash:不允许root用户访问挂载上来的 NFS 卷no_root_squash:允许 root 用户访问挂载上来的 NFS 卷all_squash:限制所有的 UID 和 GID,只使用匿名用户,缺省设置是 no_all_squashanonuid 和 anongid:将匿名 UID 和 GID 修改成特定用户和组帐号

相关命令

查看NFS服务器端共享的文件系统:showmount -e NFSSERVER_IP挂载NFS文件系统:mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_pointexportfs:维护exports文件导出的文件系统表的专用工具export -ar: 重新导出所有的文件系统export -au: 关闭导出的所有文件系统export -u FS: 关闭指定的导出的文件系统开机自动挂载nfsvim /etc/fstabSERVER:/PATH/TO/EXPORTED_FS /mount_point nfs defaults,_netdev 0 0

NFS实现web服务器负载均衡

工作原理

配置过程

案例要求:

DNS服务器:172.168.10.10(CentOS6.6)

web服务器1:172.16.10.100(CentOS6.6 )

web服务器2:172.16.10.212(CentOS6.6 )

php服务器:172.16.10.110(CentOS6.6)

NFS服务器:172.16.10.110(CentOS6.6)

数据库服务器:172.16.10.211(CentOS6.6) MariaDB

要求两台web服务器上提供同一个站点(blog.scholar.com wordpress站点),站点目录位于NFS服务器为/web/blog,两台web服务器数据需保持统一

请确保各服务器,服务软件已安装,我这里已经安装好了(其实是借用以前的),编译安装的神马的详见博客

DNS服务器配置

修改正反向区域文件

正向解析

反向解析

检查语法,启动服务

NFS服务器配置

创建共享目录,并设置权限

编辑配置文件,设置共享目录及客户端

[root@scholar ~]# vim /etc/exports /web/blog 172.16.10.100(rw,sync) 172.16.10.212(rw,async)

站点文件准备

[root@scholar ~]# unzip wordpress-3.2.1-zh_CN.zip[root@scholar ~]# cd wordpress[root@scholar wordpress]# mv * /web/blog[root@scholar wordpress]# cd /web/blog[root@scholar blog]# cp wp-config-sample.php wp-config.php [root@scholar blog]# vim wp-config.php /** WordPress 数据库的名称 */define('DB_NAME', 'wpdb'); /** MySQL 数据库用户名 */define('DB_USER', 'wpuser'); /** MySQL 数据库密码 */define('DB_PASSWORD', 'wppass'); /** MySQL 主机 */define('DB_HOST', '172.16.10.211');

启动服务,查看监听端口

数据库服务器配置

为wordpress程序提供数据库

web服务器配置

启用相关模块

[root@scholar ~]# vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

启用虚拟主机

#DocumentRoot "/usr/local/apache/htdocs" #关闭中心主机 Include /etc/httpd24/extra/httpd-vhosts.conf #启用虚拟主机

使之支持php

<IfModule dir_module> DirectoryIndex index.html index.php</IfModule> AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps

配置虚拟主机

[root@scholar ~]# vim /etc/httpd24/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/web/blog" ServerName blog.scholar.com ProxyRequests Off #关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.10.110:9000/web/blog/$1 #代理至php服务器<Directory "/web/blog"> Options none AllowOverride none Require all granted</Directory></VirtualHost>

挂载共享目录

#可设置开机自动挂载[root@scholar ~]# vim /etc/fstab 172.16.10.110:/web/blog /web/blog nfs defaults,_netdev 0 0

检查语法,启动服务

测试站点是否访问正常

可以访问的,接下来我们看一下,数据是否可以同步

指定某一台服务器IP访问

我们在这台服务器登陆,发表一篇博文

现在我们通过另外一台服务器看一下,是否可以看到刚刚发表的博文

OK,可以看到,数据同步的目的也实现了

The end

“世界那么大,我想去看看…”希望有朝一日我也可以如此洒脱…好了,基于NFS实现web服务器的负载均衡就说到这里了,遇到什么问题可留言,我要去感悟人生去了。以上仅为个人学习整理,如有错漏,大神勿喷~~

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:学员-书生

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【图文并茂】一步步带你了解Web站点架构

    1.1 http反向代理服务器 在web站点前端,我们需要搭建一个反向代理服务器,用于负责接受用户的请求,请求包括动态和静态的内容请求。一般反向代理服务器的部署...

    小小科
  • Linux DNS 服务器安装、配置和维护

    每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相...

    小小科
  • 25台服务器怎样支撑世界第54大网站

    摘要:同时使用Linux和Windows平台产品,大量使用静态的方法和类,Stack Overflow是个重度性能控。同时,取代横向扩展,他们坚持着纵向扩展思路...

    小小科
  • Emlog博客系统IIS 7/8伪静态

    最近在论坛看到很多朋友的主机系统升级到IIS7或IIS8,所以伪静态规则不能用以前IIS6的。其实前一两年,很多国外的空间就升级到WIN2008,那时我有个网站...

    似水的流年
  • Emlog博客系统IIS 7/8伪静态

    最近在论坛看到很多朋友的主机系统升级到IIS7或IIS8,所以伪静态规则不能用以前IIS6的。其实前一两年,很多国外的空间就升级到WIN2008,那时我有个网站...

    似水的流年
  • LWC 73: 789. Escape The Ghosts

    思路: 最优策略:所有ghost都守候在target处,等你来。所以只要计算ghost的曼哈顿距离中最小的,与你到target处的距离进行比较即可。可参考证...

    用户1147447
  • 卡方检验在关联分析中的应用

    case/control的关联分析,本质是寻找在两组间基因型分布有差异的SNP位点,这些位点就是候选的关联信号,常用的分析方法有以下几种

    生信修炼手册
  • MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧

    一条SQL被一个懵懂的少年,一阵蹂躏,扔向了MySQL服务器的尽头,少年苦苦等待,却迟迟等不来那满载而归的硕果。于是少年气愤,费尽苦心想从度娘那边寻求帮助,面对...

    xcbeyond
  • LeetCode - 007

    https://leetcode.com/problems/reverse-integer/

    咸鱼学Python
  • Leetcode 215. Kth Largest Element in an Array

    Find the kth largest element in an unsorted array. Note that it is the kth larg...

    triplebee

扫码关注云+社区

领取腾讯云代金券