设为首页 收藏本站
查看: 396|回复: 0

[经验分享] 使用DNS轮询+NGINX+PHP+NFS+MYSQL实现集群高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-10 09:50:32 | 显示全部楼层 |阅读模式
该实验使用四台虚拟机搭建,本来数据库作为网站的核心,是不能放在DNS服务器上的,这里迫于虚拟机台数的限制,只能暂时放在DNS服务器上来演示实验,真实环境中数据库是不能放在DNS服务器上的。
QQ截图20150610094926.png
如上图所示
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 中输入以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 中输入以下内容
1
2
3
4
5
6
7
8
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 中输入以下内容(正向解析)
1
2
3
4
5
6
7
8
9
10
11
$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 中输入以下内容(反向解析)
1
2
3
4
5
6
7
8
9
10
11
$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的配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 修改配置如下方这样。
1
2
3
4
5
6
7
8
9
10
11
12
13
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://www.iyunv.com/thread-74847-1-1.html
安装完数据库之后创建一个可以远程访问的账户,这里应为是实验,给予的权限比较大,生产环境中应限定好数据库访问权限。
grant all on *.* to 'root'@'10.6.0.%' identified by '123456';
flush privileges;
然后将discuz的安装包导入到nfs中,通过网页提示进行安装,安装好后可以查询数据库中是否创建了相应的数据库。
至此,该环境搭建完毕,测试DNS轮询的高可用,在两台web服务器中任意停掉一台web服务器的nginx服务,网页仍然能够正常访问。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-75745-1-1.html 上篇帖子: xtrabackup备份数据库 下篇帖子: mysql主从数据库不同步的3种解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表