基于轮询解析+共享存储(NFS)的LAMP

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
全局流量管理 GTM,标准版 1个月
简介:

之前的博文中我己经介绍过了基于不同的主机来实现LAMP,那时我用开了三台虚拟机,这次将说明用五台虚拟机,模拟一个相对简单的生产环境。直接上图(画的不好,请各位看官多多包涵)

wKioL1MxyXXxprq2AAIYgfjG0Xk421.bmp

一、预备知识:

1、深入了解DNS工作原理

2、编译安装软件包

3、apache服务的工作流程

4、网站的静动区分

5、数据库基础知识

6、网络共享

7、lvm

如果你具备以上知识,那么上图将一目了然(只是我画的太烂了)

二、简单的说明一下上图所能够实现的功能

1、如果有大量的请求是能过DNS智能分配置流量,减小前端APACHE1和APACH2单独压力,当前端一个服务器出现故障时,不会让业务下线。

2、在PHP服务器上挂载一个存储设备,做为PHP与APACHE利用NFS服务共享存储,存放静态或动态资源便于集中式的管理。

3、结合mysql数据库来存储业务数据。

三、本机环境及所用到的软件版本

系统:centos6.5.x86_64

DNS:BIND 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6

HTTPD:采用编译安装httpd-2.4.9.tar.bz2

PHP:采用编译安装PHP-5.4.26.tar.bz2

mysql:采用通用二进制安装mysql-5.5.33.tar.bz2

四、配置过程

1、配置DNS服务器(仅正向解析)

前提:

为DNS设置IP地址,主机名,DNS.

在本实验中DNS配置如下

主机名:www.dns.essun.com

IP地址:eth0:192.168.1.50/24,eth0:0 10.01.10.10/8

DNS: 192.168.1.50

功能:为其它域内主机解析

使用yum安装bind,修改配置文件

1
#vim /etc/named.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
options {
     directory    "/var/named" ;
         rrset-order { order random; };
};
#rrset-order 支持三个参数:fixed, random, cyclic 。
#fix 会将多个A记录按配置文件的顺序固定给出
#random 会随机给出
#cyclic 会循环给出.
zone  "."  IN {
     type  hint;
     file  "named.ca" ;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
};
zone  "essun.com"  IN {
     type  master;
     file  "essun.com.zone" ;
};
zone  "localhost."  IN {
     type  master;
     file  "named.localhost" ;
};
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";

②配置数据区域文件(#vim /var/named/essun.com.zone)

wKiom1Mx0-ixXrxLAAHW5FPaCHk544.jpg

③写完之后进行语法检查

1
2
3
4
检查语法
#named-checkconf
检查数据文件
#named-checkzone  "essun.com"  "/var/named/essun.com.zone"

④如果没有错误,就可以启动DNS服务,为其它服务器解析

测试一下:

wKioL1MyPcriUhChAAIzOnPwVg4455.jpg

注:

如果你对以涉及到的知识有疑问请参阅(DNS配置)

⑤将DNS添加到开机启动服务列表,这样就可以开机自动启动服务了

wKiom1MyQcuQxdxBAAC79Hmq5VE736.jpg

======================================到此DNS安装完成=================================

2、编译安装HTTPD

前提:

配置网络属性

第一台HTTPD服务器

主机名:www.apache.essun.com

IP地址:eth0:192.168.1.10/24

DNS:192.168.1.50

第二台HTTPD服务器

主机名:www.apache.essun.com

IP地址:eth0:192.168.1.20/24

DNS:192.168.1.50

先行安装两台APACH服务器。具体配置过程请参考前一篇博文中的编译安装APACHE部分,其过程完全一样。此处略过。

httpd-vhost文件内容如下:(两台配置文件完全相同)

wKioL1MyoibjlhuDAAHsPdVDVak343.jpg

注:

在写虚拟主机通过fcgi来处理php请求时的地址要指向本实验的PHP服务器的IP地址

②在每一台服务器上添加一个普通用户,用于可以访问共享,要与NFS服务器上新建的用户UID相同

1
2
#useradd u 1000 http
# echo "http" | passwd --stdin http

========================================================================================

3、编译安装PHP

前提:

配置网络属性

主机名:www.php.essun.com

IP地址:eth0:192.168.1.30/24

DNS:192.168.1.50

①具体安装安装过程请参阅(安装PHP部分

②要修改监听的IP地址。

③安装nfs.

1
#yum install nfs -y

④挂载一个新硬盘或分区到PHP服务器站点目录

wKiom1MyR83RcxwHAACPE-xcCII952.jpg

⑤共享此目录

wKioL1MySMOR1ZawAACrGSVm-eo701.jpg

⑥添加一个用户

1
2
#useradd u 1000 http
# echo "http" | passwd --stdin http

⑦给共享目录授权

1
2
#chown -R root:http /www/web
#chmod -R 775 /www/web

⑧启动NFS服务

1
#service nfs start

===================================到此PHP与NFS安装完毕=============================

4、安装Mysql

前提

配置网络属性

主机名:www.mysql.essun.com

IP地址:eth0:192.168.1.40/24

DNS:192.168.1.50

①安装过程请参阅(mysql安装

②新建立一个数据库

1
mysql>create database  test ;

wKiom1MyWRHz25QWAAD3U4ffH44296.jpg

③授权用户

1
mysql>GRANT ALL PRIVILEGES ON  test .* TO  'root' @ '192.168.1.30' IDENTIFIED BY  'mysql'  ;

===============================================mysql相关配置完成========================

5、测试

1、安装discuz

下载最新版本的discuz解压到PHP的共享站点目录

wKioL1MyX5CAI1sTAADLkY55JZ4828.jpg

注:

修改配置文件

1
2
3
#cd /www/web/upload/config
#cp config_global_default.php config_global.php
#vim config.global.php

wKioL1Mym1ewwjdVAAG0wrWCcHs050.jpg

要对upload目录给权限(安装需要)

#chmod 777 upload/

2、将PHP上的共享目录挂载到前端

wKiom1MynLGR0TvNAARjLbZaCfw820.jpg

注:APACHE1的挂载方法与此相同。

3、安装discuz

通过浏览器访问www.aache.essun.com/upload就可以在web界面安装discuz论坛了,安装完成后,会让你输入管理员密码,确认后就可以管理论坛了。

4、网络测试

注:

我的测试环境

物理机:

wKiom1MynnyCQeLPAAF_LWCXLbE513.jpg

通过VMnet1与虚拟机中的DNS相连。

wKioL1MynqCz7U2WAAGL4L9XnXc682.jpg

虚拟机中的其它服务器通过VMnet8相连

wKioL1MynuGx6bGiAAGRJ77dvWo415.jpg

(经过多方测试,还是用了VMnet8,这样10段的网络相当于没有生效。。。)

物理机与虚拟机的服务器测试

wKiom1Myn5fTRWuBAAFza-tvz_c197.jpg

5、论坛测试

APACHE1

wKioL1Myn8WgY8gLAAHw55C8E2E023.jpg


APACHE2

wKioL1Myn-ORW0kyAAJf8_enIwQ854.jpg

FQDN

wKioL1MyoAOQr7yQAAJ5eFp6jAM803.jpg

注:

由于两台主机的FQDN相同,所以无法判断访问的是那一台主机,那我用dig测试一下,服务是怎么响应的

dig -t A www.apache.essun.com @192.168.1.50

wKiom1MyoQ6w8qPsAAEZIiMObnA644.jpg

第二次

wKiom1MyoTHS2tu1AAG7cYG0448221.jpg

第三次

wKiom1MyoUqwXCWZAAG4K7qVo9U392.jpg

看到了吧,DNS随机解析,也不能说明就能实现智能解析,我们知道DNS解析过的域名是有缓存的,所以用这种方式还是不妥的,这里仅是实验,将之前的知识结合起来运用,就没有问题了

===================================到此本实验测试结束================================










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1384682,如需转载请自行联系原作者
目录
打赏
0
0
0
0
235
分享
相关文章
|
6月前
|
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
75 3
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
Kubernetes提供了多种存储类型,满足不同的应用需求。`emptyDir`和 `hostPath`适用于临时和宿主机存储需求,`nfs`适用于共享存储,`PersistentVolumeClaim`和 `StorageClass`实现了持久存储的灵活管理。通过理解和配置这些存储类型,可以有效提升Kubernetes集群的存储管理能力。
106 13
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
146 12
Django 后端架构开发:存储层调优策略解析
Django 后端架构开发:存储层调优策略解析
137 2
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
97 7
PyPI 存储库中的 JarkaStealer:深入解析与防范措施
PyPI 存储库中的 JarkaStealer:深入解析与防范措施
60 2
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
深入解析MySQL数据存储机制:从表结构到物理存储
深入解析MySQL数据存储机制:从表结构到物理存储
836 1
深入解析Memcached:内部机制、存储结构及在大数据中的应用
深入解析Memcached:内部机制、存储结构及在大数据中的应用

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等