在之前的博文中我己经介绍过了基于不同的主机来实现LAMP,那时我用开了三台虚拟机,这次将说明用五台虚拟机,模拟一个相对简单的生产环境。直接上图(画的不好,请各位看官多多包涵)
一、预备知识:
1、深入了解DNS工作原理。
2、编译安装软件包
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)
③写完之后进行语法检查
1
2
3
4
|
检查语法 #named-checkconf 检查数据文件 #named-checkzone "essun.com" "/var/named/essun.com.zone"
|
④如果没有错误,就可以启动DNS服务,为其它服务器解析
测试一下:
注:
如果你对以涉及到的知识有疑问请参阅(DNS配置)
⑤将DNS添加到开机启动服务列表,这样就可以开机自动启动服务了
======================================到此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文件内容如下:(两台配置文件完全相同)
注:
在写虚拟主机通过fcgi来处理php请求时的地址要指向本实验的PHP服务器的IP地址
②在每一台服务器上添加一个普通用户,用于可以访问共享,要与NFS服务器上新建的用户UID相同
1
2
|
#useradd u 1000 http # echo "http" | passwd --stdin http |
========================================================================================
3、编译安装PHP
前提:
配置网络属性
IP地址:eth0:192.168.1.30/24
DNS:192.168.1.50
①具体安装安装过程请参阅(安装PHP部分)
②要修改监听的IP地址。
③安装nfs.
1
|
#yum install nfs -y |
④挂载一个新硬盘或分区到PHP服务器站点目录
⑤共享此目录
⑥添加一个用户
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
前提
配置网络属性
IP地址:eth0:192.168.1.40/24
DNS:192.168.1.50
①安装过程请参阅(mysql安装)
②新建立一个数据库
1
|
mysql>create database test ;
|
③授权用户
1
|
mysql>GRANT ALL PRIVILEGES ON test .* TO 'root' @ '192.168.1.30' IDENTIFIED BY 'mysql' ;
|
===============================================mysql相关配置完成========================
5、测试
1、安装discuz
下载最新版本的discuz解压到PHP的共享站点目录
注:
修改配置文件
1
2
3
|
#cd /www/web/upload/config #cp config_global_default.php config_global.php #vim config.global.php |
要对upload目录给权限(安装需要)
#chmod 777 upload/
2、将PHP上的共享目录挂载到前端
注:APACHE1的挂载方法与此相同。
3、安装discuz
通过浏览器访问www.aache.essun.com/upload就可以在web界面安装discuz论坛了,安装完成后,会让你输入管理员密码,确认后就可以管理论坛了。
4、网络测试
注:
我的测试环境
物理机:
通过VMnet1与虚拟机中的DNS相连。
虚拟机中的其它服务器通过VMnet8相连
(经过多方测试,还是用了VMnet8,这样10段的网络相当于没有生效。。。)
物理机与虚拟机的服务器测试
5、论坛测试
APACHE1
APACHE2
FQDN
注:
由于两台主机的FQDN相同,所以无法判断访问的是那一台主机,那我用dig测试一下,服务是怎么响应的
dig -t A www.apache.essun.com @192.168.1.50
第二次
第三次
看到了吧,DNS随机解析,也不能说明就能实现智能解析,我们知道DNS解析过的域名是有缓存的,所以用这种方式还是不妥的,这里仅是实验,将之前的知识结合起来运用,就没有问题了
===================================到此本实验测试结束================================