当前位置:Gxlcms > 数据库问题 > 使用DNS轮询+NGINX+PHP+NFS+MYSQL实现集群高可用

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

时间:2021-07-01 10:21:17 帮助过:22人阅读

 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服务,网页仍然能够正常访问。



本文出自 “柠檬” 博客,请务必保留此出处http://xianglinhu.blog.51cto.com/5787032/1660071

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

标签:dns轮询   php   nginx   mysql   nfs   集群   

人气教程排行