shell解决DNS负载均衡RS的健康检测

DNS负载均衡,是最早的实现负载均衡技术的。在DNS的配置文件中为多个地址配置同一个名字,即配置多条指向不同ip的A记录,而客户端在查询这条A记录的时候将随机获得其中一个地址。通过以上描述不难发现,DNS负载均衡有着配置简单,性能优异,没有修改架构的开销等特点。因此,经常被用在内网。

说了优点,也要说说缺点。DNS负载均衡采用的是简单的轮循负载算法,不能分辨服务器的差异,不能根据后端服务器的运行状态进行动态调整,即健康检查。由于实现算法的随机性,不能为性能较好的服务器更多的分配请求,经常会出现将请求集中在某一台服务器上的现象。

如果你负载均衡的要求很高,不如使用其他负载均衡技术来的容易,比如LVS,Nginx或者HAproxy。修改算法,不仅要看明白洋洋散散几万行源码,还要将自己的代码完美融合进去,这个成本因人而异,但肯定不是一朝一夕之功。但如果只是后端服务器的健康检测问题,使用shell脚本就可以办到。

思路:DNS服务器通过某种机制对后端RS主机的运行状态进行判断,如果后端主机出现故障,那么DNS所要做的是修改配置文件,将问题主机从配置文件中提出并重启服务。更进一步,当RS主机恢复时,DNS主机还要将其恢复到配置文件中。

首先是健康检测机制。如果RS主机是web服务,那么可选的至少有三个,icmp,telnet,curl分别工作在第三层,第四层,和第七层。我们在这里使用icmp。修改配置文件,可以通过将提前准备好的配置文件覆盖原文件做到,当然还有sed -i,我们在这里使用sed -i。最后使用while及if elif将这些元素合理的嵌套。

web1 192.168.1.1     web2  192.168.1.2

DNS配置文件:

 

www IN A 192.168.1.1

www IN A 192.168.1.2

#! /bin/bash

while true;do #定义无限循环,让脚本不间断工作。

ping -c1 192.168.1.1 &> /dev/null #由于linux下的ping命令会无限进行下去,所以我们要使用-c参数指定数据包个数,并将标准错误和标准输出全部重定向到/dev/null这个脏目录中。

if ! [ $? -eq 0 ];then #如果$?的返回值不为零,即ping不通。

    sed -i '/192.168.1.1/s/^/;/' dns #修改配置文件,将包含192.168.1.1的行开头替换成;号。(dns配置文件的注释是;号)

    /etc/init.d/bind restart

else

    sed -i '/192.168.1.1/s/;//' dns #如果可以ping通,那么去掉;

    /etc/init.d/bind restart

fi

ping -c1 192.168.1.2 &> /dev/null

if ! [ $? -eq 0 ];then

    sed -i '/192.168.1.2/s/^/;/' dns

    /etc/init.d/bind restart

else

    sed -i '/192.168.1.2/s/;//' dns

    /etc/init.d/bind restart

fi

    sleep 5 #休息5秒,继续工作。

done

时间: 2024-08-01 10:25:47

shell解决DNS负载均衡RS的健康检测的相关文章

win2012+powershell+win dns 解决网站负载均衡

用Windows powershell,加windows的dns服务器.从调整dns服务器解析ip时间段的角度,解决网站负载均衡问题. win2012r2中,用powershell管理dns服务器的,命令列表PS C:\Users\admin> get-command * -module DnsServer CommandType Name ModuleName----------- ---- ----------Alias Export-DnsServerTrustAnchor DnsServ

DNS 负载均衡:如何提升网站性能

如果你想提高你的网站或Web应用程序的访问速度,DNS负载均衡或许可以帮助你实现这一目标.通过帮助你分散收到的流量,有助于使网站以最佳的速度运行. 什么是DNS负载均衡? DNS负载均衡是一种用来帮助将对某个域的请求分配在不同机器上的技术,这样就不需要使用某个单一机器来承载全部负载.这种方法有助于提高网站和(或)Web应用程序的性能,因为流量负载可以在众多的服务器上共享,而不是由一个单一机器承担. DNS表示域名系统.它是用来把一个域名,如Google.com,翻译成一个特定服务器的IP地址,如

Lvs如何解决服务器负载均衡

LVS 是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR): 十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). 官方网站:http://www.linuxvirtualserver.org/ 本次试用使用自己的小本,在小本上通过VMware安装3个red

Oray域名双线路智能DNS负载均衡

什么是双线路智能DNS解析:(原理图如下): 双线路智能DNS解析是Oray针对目前电信与网通互联互通问题推出的一种DNS解决方案.具体实现的效果是:把同样的域名如www.oray.com,网通的客户访问会返回一个指向网通服务器的IP地址, 电信的客户访问会指向一个电信服务器的IP地址.通过这种方式,尽量避免网通的客户去访问电信的网络,以及电信的客户去访问网通的网络.(注:如果只有一个IP则无法使用智能DNS功能.) 例如: 访问www.skycn.com,出现的第一页面就是要选择对应的线路服务

循环复用DNS实现多服务器的负载均衡

1 概述 企业知名度增加,网站访问量逐渐上升,是每一个网管所盼望的.但同时应用服务器的数据流量和访问量将成倍增加,服务器将不堪重负. 这时,可采用两种方式解决此问题,一是进行硬件升级,购买配置更高.性能更好的服务器,这种方法的优点是简单易行,缺点是投资大, 会造成现有资源的浪费,且下一次业务量的提升还会面临同样问题.另一种方法是采用集群技术,利用两台以上的服务器进行协同工作,在集群系统中运行的服务器并不一定是高档产品(可以是企业现有的服务器),但服务器的集群却可以提供相当高性能的不停机服务:另外

FreeBSD基于DNS的负载均衡

可以使用上面提到的各种技术来提升Apache服务器的性能,同时也可以使用增加硬件性能的方法来提高Web 服务器的性能.但是单台服务器的性能总是有限的,尤其是服务器上需要运行大量的CGI程序时,不可能仅靠上面的调整服务器设置的方法来建立一个面向整个Internet,如同Yahoo等站点一样的高负载Web站点. 为了建立一个高负载的Web站点,必须使用多服务器的分布式结构.上面提到的使用代理服务器和Web服务器相结合,或者两个Web服务器相互协作的方式也属于多服务器的结构,但在这些多服务器的结构中,

Java微服务开发指南 -- 集群管理、失败转移和负载均衡的实践

集群管理.失败转移和负载均衡的实践     在前一章节中,我们快速的介绍了集群管理.Linux容器,接下来让我们使用这些技术来解决微服务的伸缩性问题.作为参考,我们使用的微服务工程来自于第二.第三和第四章节(Spring Boot.Dropwizard和WildFly Swarm)中的内容,接下来的步骤都适合上述三款框架. 开始     我们需要将微服务打包成为Docker镜像,最终将其部署到Kubernetes,首先进入到项目工程hola-springboot,然后启动jboss-forge,

章文嵩(正明)博士和他背后的负载均衡(LOAD BANLANCER)帝国

案首语: 阿里集团技术大牛,@正明,淘宝基础核心软件研发负责人.LVS创始人.阿里云首席科学家章文嵩博士从阿里离职,去追求技术人生另一段历程,让阿里像我一样的很多热爱技术的工程师都有一丝牵动和感触. 我个人作为一个平凡的一线技术工程师,对章博士是很敬佩的(虽然他还不认识我),国内IT业界这么多年,在底层基石技术层面有所建树,打到Linux标准内核模块层面的应该就LVS了吧,而且就广泛影响力方面,LVS在Linux逐渐取代IBM Aix, Sun Solaris,HPUX 这些Unix们的过程中,

负载均衡进阶:SLB常见问题解决方法

摘要:在由和阿里云网络团队联合主办的2017阿里云网络技术在线高峰论坛上,阿里云技术专家添毅分享了网络产品部根据客户和阿里云运维的反馈提炼出的几大最主要和最常见的在使用SLB产品中发生的问题,并为大家介绍了针对这些常见问题的相应处理方法.想知道如何借助SLB构建高可用系统以及健康检查是如何实现的,本文不容错过! 本文内容根据演讲嘉宾分享视频以及PPT整理而成. 本次的分享将会主要围绕以下5个部分 基本概念回顾 如何构建高可用系统 选择性能共享型还是性能保障型实例 为什么健康检查异常 为什么负载不