使用DNS轮询+NGINX+PHP+NFS+MYSQL实现集群高可用

该实验使用四台虚拟机搭建,本来数据库作为网站的核心,是不能放在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服务,网页仍然能够正常访问。


时间: 2024-10-11 07:21:00

使用DNS轮询+NGINX+PHP+NFS+MYSQL实现集群高可用的相关文章

基于MMM搭建MySQL Replication集群高可用架构

MMM介绍 MMM是Multi-Master Replication Manager for MySQL的缩写,它是MySQL提供的一个多主复制管理器,其核心是使用perl语言编写的一组脚本.实际上MMM是比较早期甚至有点老的一种用于构建高可用MySQL架构的方式,但因其还有一定的应用场景,所以本文将会演示一下如何搭建一个MMM架构. MMM 由两个组件组成: monitor:监控集群内数据库的状态,在出现异常时发布切换命令,一般和数据库分开部署 agent:运行在每个 MySQL 服务器上的代

基于MHA搭建MySQL Replication集群高可用架构

原文地址:https://blog.51cto.com/zero01/2468767

web服务器(LAMP)通过DNS轮询功能和nfs共享实现负载均衡

web服务器(LAMP)通过DNS轮询功能和nfs共享实现负载均衡,部署discuz论坛 拓扑思路: 服务器1:mariadb+nfs:172.20.120.40 服务器2:apache+php-fpm:172.20.120.41 服务器3:apache+bind:172.20.120.42 服务器1:mariadb+nfs:172.20.120.40 yum install mariadb-server nfs-utils 部署nfs共享:分别使用lvm当做数据库目录/mydata.网页文件目

nginx+apache+php+mysql服务器集群搭建

nginx+apache+php+mysql服务器集群搭建 由于需要搭建了一个基本的服务器集群.具体的配置方案先不说了,到有时间的时候再介绍.下面介绍下整个方案的优点. 我总共准备了四台阿里云的主机,架设分别是A,B1,B2,C,A在集群的最前面,B1和B2在A的后面,C在最后面.A主要用的nginx,用nginx做反向代理的功能实在是强大.nginx把来自80的http请求都转发到B1和B2上,B1和B2主要是两台apache,用于php解析.B1和B2来连接C上的mysql.A上的nginx

【58沈剑架构系列】lvs为何不能完全替代DNS轮询

上一篇文章“一分钟了解负载均衡的一切”引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepalived可以替代“DNS轮询” 2)F5能搞定接入层高可用.扩展性.负载均衡,可以替代“DNS轮询” “DNS轮询”究竟是不是过时的技术,是不是可以被其他方案替代,接入层架构技术演进,是本文将要细致讨论的内容. 一.问题域 nginx.lvs.keepalived.f5.DNS轮询,每每提到这些技术,往往讨论的是接入

NFS共享MySQL使用DNS轮询实现Web负载均衡

NFS共享MySQL使用DNS轮询实现Web负载均衡 前言: 今天学习了NFS,遂结合前面学习的LAMP+Bind做一个实验,实现两台Web服务器采用同一个MySQL数据库和相同的网页文件,对LAMP和Bind不了解的可以去查看我以前写的博客: AnyISalIn的文章 实验拓扑图 实验环境 主机名 IP地址 实现 storage.anyisalin.com 192.168.2.5 NFS ns.anyisalin.com 192.168.2.2 dns,MySQL www.anyisalin.

基于DNS轮询和NFS实现简单的网站负载均衡

试验简述:分别在host1和host2上安装php和httpd服务器,并部署Discuz站点,在host2上安装DNS服务,用于通过轮询,向客户提供站点bbs.test.com网站的IP地址.在host3上分别提供mysql数据库用于存放站点数据.,部署LFS服务用于向用户提供附件头像等上传的空间. 1. 在各服务器上分别安装对应服务器程序 Host1: yum -y install httpd php php-mysql Host2: yum -y install httpd php php-

Keepalived 之 双主模式+DNS轮询机制 实现高负载

一.Keepalived双主模式+DNS轮询机制作用 作用:在单主模式下,备机通常会以等待状态放着,不接受任何数据,导致所有数据请求只往主机-负载均衡发送,做成资源浪费:而双主模式,即创造两个VIP,两个VIP分别放在两台负载均衡的机器上,同时两台主机均为对方的备机,以作VIP的漂移,服务接管作用,加入DNS轮询机制,使客户端的域名分别依次解释到两个VIP上,形成两台负载均衡主机同时对外提供服务.同时也解决了单主模式下的单机性能屏颈. 二.网络拓扑图 三.两台负载均衡主机的Keepalived

负载均衡手段之DNS轮询

大多数域名注册商都支持对统一主机添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡.下图的例子是:有3台联通服务器.3台电信服务器,要实现"联通用户流量分摊到3台联通服务器.其他用户流量分摊到电信服务器"这个效果的设置. DNS由于成本较低,所以一般在小型的网站用的比较多.但是大型的网站一般也会将用它和其他负载均衡的方式结合起来一起使用,DNS轮询方式提供的IP地址,在大型网站中往往是一个集群的地址,可能是均衡交