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服务器,也可能会造成数
据丢失,缺省为为sync
no_wdelay:关闭写延时,如果设置了async,那么NFS就会忽略这个选项
nohide:如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像
空的一样,要禁用这种行为,需启用 hide 选项
no_subtree_check:关闭子树检查,子树检查会执行一些不想忽略的安全性检查,缺省选项是启用
子树检查
no_auth_nlm:可作为insecure_locks指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果
关心安全性问题,就要避免使用这个选项,缺省选项是 auth_nlm 或 secure_locks
mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录
fsid=num:通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。
用户映射的选项:
root_squash:不允许root用户访问挂载上来的 NFS 卷
no_root_squash:允许 root 用户访问挂载上来的 NFS 卷
all_squash:限制所有的 UID 和 GID,只使用匿名用户,缺省设置是 no_all_squash
anonuid 和 anongid:将匿名 UID 和 GID 修改成特定用户和组帐号

相关命令

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

NFS实现web服务器负载均衡

工作原理

nfs实现web服务器负载均衡原理.jpg

配置过程

案例要求:

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服务器配置

修改正反向区域文件

正向解析

2.jpg

反向解析

2.jpg

检查语法,启动服务

3.jpg

NFS服务器配置

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

4.jpg

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

[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');

启动服务,查看监听端口

5.jpg

数据库服务器配置

为wordpress程序提供数据库

6.jpg

web服务器配置

启用相关模块

[root@scholar ~]# vim /etc/httpd24/httpd.conf
 
LoadModule proxy_module modules/mod_proxy.so
LoadModule 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  .php
AddType 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>

挂载共享目录

7.jpg

#可设置开机自动挂载
[root@scholar ~]# vim /etc/fstab 

172.16.10.110:/web/blog  /web/blog               nfs     defaults,_netdev 0 0

检查语法,启动服务

8.jpg

测试站点是否访问正常

9.jpg

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

指定某一台服务器IP访问

10.jpg

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

11.jpg

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

12.jpg

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

The end

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

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/3513

(0)
书生书生
上一篇 2015-04-22 19:53
下一篇 2015-04-26 23:26

相关推荐

  • 企业面试题

    要求: 将一下数据进行排序(字母部分已小到大排序) 101.37.8.249 wz417-419/wz119-125/wz7-16/wz571/wz544/wz1-6101.37.21.19 wz545/wz453-456/wz441-444116.62.4.21 wz106-118/wz514-516/wz581/wz190-199/wz572101.37…

    Linux干货 2017-06-27
  • Linux的文件系统架构基础

    前言     当今计算机操作系统来说常见功能主要有:进程调度、内存管理、文件系统管理、网络协议栈支持、驱动程序管理、安全功能等。所有对于我们来讲学习Linux文件系统也是一个十分重要的知识,也是学习Linux的必备基础知识,学习好Linux的文件系统知识也是为接下来学习Linux的其他知识奠定良好的基础 关键词  &n…

    Linux干货 2015-04-16
  • 缓存需知

    Edit Web缓存核心技术点需知 5.1 HTTP首部控制 5.2 基于新鲜度检测机制: 2.1 特征1:时间局部性 2.2 特征2:空间局部性 2.3 缓存的优点 2.4 哪类数据应该被缓存 2.5 哪类数据可缓存但不应该被缓存 2.6 缓存命中率决定缓存有效性 2.7 缓存数据生命周期 2.8 缓存处理步骤 2.9 缓存和普通数据读取的区别 1. 完整…

    Linux干货 2017-06-01
  • sed简介

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要用来编辑一个或多个文件,简化重复操作文件。 sed的工作原理和相关概念 sed是行处理的模式,针对文件内容从上往下一行一行地读取。每行的操作步骤如下示意图: sed的语法格式 sed [OPTION]… 'script' …

    Linux干货 2016-10-09
  • Linux之文件管理及范例

    1、Linux上的文件管理命令   目录管理类命令:mkdir,rmdir    mkdir [OPTION]… DIRECTORY…     -p: 自动按需创建父目录;     -v: verbose,显示…

    Linux干货 2016-09-27
  • day6总结

    主要内容: useradd与usermod对比 groupadd与groupmod对比 passwd与chage对比 gpasswd与groupmems对比 切换用户 chown与chgrp用法 一般权限与特殊权限 chmod用法   useradd创建用户的初始信息存放在/etc/login.defs和/etc//default/useradd文…

    系统运维 2016-08-08

评论列表(6条)

  • stanley
    stanley 2015-04-22 21:31

    以前有linux工作经历?初学者知道wp的不多

    • 书生
      书生 2015-04-23 11:20

      @stanley木有啊 以前开过php课 见过wp 不过没玩过

    • stanley
      stanley 2015-04-23 13:49

      @书生cool

  • venus
    venus 2015-04-27 15:30

    don’t forget session status.

    • 书生
      书生 2015-04-27 18:34

      @venuswhat?

    • aaa103439
      aaa103439 2015-04-27 22:22

      @书生session可以用redis来保持,redis可用keepalived来进行高可用.