该实验使用四台虚拟机搭建,本来数据库作为网站的核心,是不能放在DNS服务器上的,这里迫于虚拟机台数的限制,只能暂时放在DNS服务器上来演示实验,真实环境中数据库是不能放在DNS服务器上的。
如上图所示
DNS+mysql服务器 IP:10.6.0.180
WEB1服务器 IP:10.6.0.186
WEB2服务器 IP:10.6.0.187
PHP+NFS服务器 IP:10.6.0.181
首先,安装DNS服务器
yum -y install bind
配置DNS服务器
在 vim /etc/named.conf 中输入以下内容
options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; allow-query { any; }; # 允许任意客户端查询 recursion yes; rrset-order { order random; }; # dns轮询解析 }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones";
在 vim /etc/named.rfc1912.zones 中输入以下内容
zone "huxianglin.com" IN { type master; file "huxianglin.com.zone"; #正向解析配置文件 }; zone "0.6.10.in-addr.arpa" IN { type master; file "10.6.0.zone"; #反向解析配置文件 };
在 vim /var/named/huxianglin.com.zone 中输入以下内容(正向解析)
$TTL 600 @ IN SOA dns.huxianglin.com. admin.huxianglin.com. ( 2015060801 1H 5M 3D 12H ) IN NS dns dns IN A 10.6.0.180 www IN A 10.6.0.186 www IN A 10.6.0.187
在 vim /var/named/10.6.0.zone 中输入以下内容(反向解析)
$TTL 600 @ IN SOA dns.huxianglin.com. admin.huxianglin.com. ( 2015060801 1H 5M 3D 12H ) @ IN NS dns.huxianglin.com. 1 IN PTR dns.huxianglin.com. 2 IN PTR www.huxianglin.com. 3 IN PTR www.huxianglin.com.
(PS但是我实验反向解析貌似不生效,可能配置有问题)
将根域名服务器写入到named.ca文件中去
dig -t NS . >/var/named/named.ca
检测配置是否有问题: named-checkconf
检测正解析: named-checkzone "localhost" /var/named/localhost.zone
检测反解析: named-checkzone "0.6.10.in-addr.arpa" /var/named/10.6.0.zone (这一步好像不成功)
rndc-confgen -r /dev/urandom -a // 这一步是生成 rndc.key, 如果没有这个key namd 是启动不了的。
chown named:named /etc/rndc.key
/etc/init.d/named start
netstat -lnp |grep named // 查看一下named进程是否监听了53端口
首先测试正向解析:dig www.huxianglin.com
接着测试反解析:dig 10.6.0.186 (不成功)
然后,搭建WEB1和WEB2服务器
在服务器上面yum安装nginx服务
yum -y install nginx
启动服务,修改默认页面
echo "10.6.0.186">/usr/share/nginx/html/
service nginx start
然后测试是否能实现通过DNS轮询实现负载均衡
实现负载均衡之后,需要在10.6.0.181上面安装NFS服务和PHP服务。
首先,安装nfs服务使用yum -y install nfs-utils
然后修改配置文件
vim /etc/exports 增加内容如下:
/data/www/ 10.6.0.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)(注意,这个UID和GID都是php-fpm用户的ID)
创建目录并给予权限
mkdir -p /data/www/;chmod 777 /data/www/
启动服务:systemctl start rpcbind;systemctl start nfs
在客户端挂载NFS系统
客户端同样安装 yum install -y nfs-utils
查看服务器端都共享了哪些目录
showmount -e 10.6.0.181
在客户端上挂载服务端的nfs
mount -t nfs -o nolock,nfsvers=3 10.6.0.181:/home/ /mnt/ //如果不加 -o nolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root
下一步安装php服务,使用源码安装完成之后修改php-fpm的配置如下:
cat /usr/local/php/etc/php-fpm.conf [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log [www] listen = 10.6.0.181:9000 user = php-fpm group = php-fpm listen.owner = nobody listen.group = nobody pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024
并启动php-fpm进程。
查看端口是否被侦听:netstat -ant|grep 9000
然后在两台web服务器上面配置nginx的配置文件
vi /etc/nginx/nginx.conf 修改配置如下方这样。
server { listen 80 default_server; server_name www.huxianglin.com; root /data/www/discuz; include /etc/nginx/default.d/*.conf; location / { } location ~ \.php$ { include fastcgi_params; fastcgi_pass 10.6.0.181:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/www/discuz$fastcgi_script_name; }
然后在nfs挂载目录下创建一个php探针检测php是否能够正常解析
vi /data/www/discuz/test.php
<?php echo phpinfo();?>
在浏览器中打开发现能够正常解析PHP。
下一步就需要安装mysql数据库,mysql数据库的安装可以参考下面的链接
http://xianglinhu.blog.51cto.com/5787032/1659415
安装完数据库之后创建一个可以远程访问的账户,这里应为是实验,给予的权限比较大,生产环境中应限定好数据库访问权限。
grant all on *.* to ‘root‘@‘10.6.0.%‘ identified by ‘123456‘;
flush privileges;
然后将discuz的安装包导入到nfs中,通过网页提示进行安装,安装好后可以查询数据库中是否创建了相应的数据库。
至此,该环境搭建完毕,测试DNS轮询的高可用,在两台web服务器中任意停掉一台web服务器的nginx服务,网页仍然能够正常访问。