发布网友
共5个回答
懂视网
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 集群
热心网友
一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat的日趋成熟,这问题也不大了。网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。
二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。
三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内*,如果是同时拥有内*的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。
四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章。
五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开。
六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、Nginx+Keepalived.
七、LVS的优势非常多:①抗负载能力强;②工作稳定(因为有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx.
八、Nginx对网络的依赖性小,而且它的正则强大而灵活,强悍的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择。
九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。
十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP。
十一、在实际项目实施过程中发现,Lvs和Nginx对https的支持都非常好,尤其是LVS,相对而言处理起来更为简便。
十二、在LVS+Keepalived及Nginx+Keepalived的故障处理中,这二者都是很方便的;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实web,达到短期处理故障的效果,毕竟广告网站和电子商务网站的PV就是金钱,这也是为什么要将负载均衡高可用设计于此的原因;大型的广告网站我就建议直接上CDN系统了。
十三、现在Linux集群都被大家神话了,其实这个也没多少复杂;关键看你的应用场景,哪种适用就选用哪种,Nginx和LVS、F5都不是神话,哪种方便哪种适用就选用哪种。
十四、另外关于session共享的问题,这也是一个老生长谈的问题了;Nginx可以用ip_hash机制来解决session的问题,而F5和LVS都有会话保持机制来解决这个问题,此外,还可以将session写进数据库,这也是一个解决session共享的好办法,当然这个也会加重数据库的负担,这个看系统架构师的取舍了。
十五、我现在目前维护的电子商务网站并发大约是1000左右,以前的证券资讯类网站是100左右,大型网上广告大约是3000,我感觉web层的并发越来越不是一个问题;现在由于服务器的强悍,再加上Nginx作web的高抗并发性,web层的并发并不是什么大问题;相反而言,文件服务器层和数据库层的压力是越来越大了,单NFS不可能胜任目前的工作,现在好的方案是moosefs和DRDB+Heartbeat+NFS;而我喜欢的Mysql服务器,成熟的应用方案还是主从,如果压力过大,我不得不选择oracle的RAC双机方案。
十六、现在受张宴的影响,大家都去玩Nginx了(尤其是作web),其实在服务器性能优异,内存足够的情况下,Apache的抗并发能力并不弱,整个网站的瓶颈应该还是在数据库方面;我建议可以双方面了解Apache和Nginx,前端用Nginx作负载均衡,后端用Apache作web,效果也是相当的好。
十七、Heartbeat的脑裂问题没有想象中那么严重,在线上环境可以考虑使用;DRDB+Heartbeat算是成熟的应用了,建议掌握。我在相当多的场合用此组合来替代EMC共享存储,毕竟30万的价格并不是每个客户都愿意接受的。
十八、无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带嘛;有条件的还可以购买专门的商业扫描网站服务,它会每隔一分钟扫描你的网站,如果发现没有alive会向你的邮件发警告信息或直接电话联系。
十九、至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛三层防火墙+天泰web防火墙,DDOS的安全防护一定要到位;Linux服务器本身的iptables和SElinux均可关闭,当然,端口开放越少越好。
热心网友
Linux下的负载均衡----这跟linux没有关系,操作系统而已。所有操作系统都可以,关键靠软硬件。
负载均衡范围很广,分为系统资源,电力供应,数据读取,网络数据传输,硬盘内存数据传输,
磁盘冗余的,群集负载均衡,问题是你希望在哪方面实现这样的功能。
其实简单点说,当资源或者传输出现重负荷,需要通过各种渠道来平衡,使各种重负荷从点到面。
热心网友
我空间里面有
热心网友
WDAOIJDOISFDSF