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

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
全局流量管理 GTM,标准版 1个月
简介:

前言

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

NFS服务介绍

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

配置文件

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

1
2
3
4
5
6
7
8
程序包: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      #提供额外功能

配置文件详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/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 修改成特定用户和组帐号

相关命令

1
2
3
4
5
6
7
8
9
10
11
查看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服务器负载均衡

工作原理

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

修改正反向区域文件

正向解析

wKiom1U19S3BuH7kAACuy_9EQp8374.jpg

反向解析

wKiom1U19ejAtIY5AACl_TmlIpE078.jpg

检查语法,启动服务

wKiom1U19gyTs30eAAG1ed50P90734.jpg

NFS服务器配置

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

wKioL1U2A87zJwUtAAB6-dMIE9k905.jpg

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

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

站点文件准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[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' );

启动服务,查看监听端口

wKiom1U2BofRd_E6AAD4AalWP0E784.jpg

数据库服务器配置

为wordpress程序提供数据库

wKioL1U2CFXTz9v3AAHz4kgA7MQ036.jpg

web服务器配置

启用相关模块

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

启用虚拟主机

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

使之支持php

1
2
3
4
5
6
<IfModule dir_module>
     DirectoryIndex index.html index.php
< /IfModule >
  
AddType application /x-httpd-php   .php
AddType application /x-httpd-php-source   .phps

配置虚拟主机

1
2
3
4
5
6
7
8
9
10
11
12
13
[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 >

挂载共享目录

wKioL1U2CxuwTz8sAAHIqwRhOfw245.jpg

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

检查语法,启动服务

wKioL1U2DAvTYlcoAABULjWMB9Q278.jpg

测试站点是否访问正常

wKioL1U2EHeyRGurAAKSWgZC4-I461.jpg

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

指定某一台服务器IP访问

wKioL1U2EO2DeTy0AAKFCYnW8iw159.jpg

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

wKiom1U2D-awufj-AAKXtItNL9s754.jpg

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

wKioL1U2EYmCjgZIAAOxBYCXG14582.jpg

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

The end

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



本文转自 北城书生  51CTO博客,原文链接:http://blog.51cto.com/scholar/1636605

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
弹性计算 监控 负载均衡
|
16天前
|
运维 监控 负载均衡
slb后端服务器故障
slb后端服务器故障
39 13
|
24天前
|
弹性计算 负载均衡 安全
slb应用服务器对Host头有校验要求
slb应用服务器对Host头有校验要求
24 6
|
26天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
45 6
|
1月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
29 2
|
1月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
46 3
|
1月前
|
监控 负载均衡 算法
slb管理后端服务器
【10月更文挑战第18天】
35 5
|
2月前
|
弹性计算 负载均衡 算法
负载均衡如何帮助阿里云国际服务器搭建的网站或应用程序?
负载均衡如何帮助阿里云国际服务器搭建的网站或应用程序?
|
3月前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
108 13
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
56 1
下一篇
DataWorks