点击返回架构师成长之路html
采用LVS-DR模式负载均衡,多IDC,多套DNS集群,经过master-slave技术保证dns配置的一致性。bash
物理层:服务器
服务层:架构
脚本示例:
负载均衡
客户端层:oop
安装queryperf性能
下载bind源码:wget http://ftp.isc.org/isc/bind9/9.7.3/bind-9.7.3.tar.gz 解压bind源码:tar zxf bind-9.7.3.tar.gz 进入解压后bind源码目录:cd bind-9.7.3/contrib/queryperf/ 编译:./configure make 会在当前目录下出现queryperf,能够将它拷贝至/usr/bin/下 编辑域名记录文件(test.txt),格式以下: www.baidu.com A www.baidu.com A www.baidu.com A www.baidu.com A www.baidu.com A 压测命令:queryperf -d test.txt -s 8.8.8.8
在相同idc的压测下,单台dns-server的qps能够达到35~40kspa
使用zabbix自带模板便可。Cpu、内存、主机存活、磁盘空间、主机运行时间、系统load设计
该架构中,dnsserver在集群中充当realserver的角色,在dr中,须要绑定loopback地址方能通讯,所以当loopback地址没有绑定上时,lvs健康检测经过,可是当请求到达dnsserver时,请求被拒绝,dns集群会出现异常。server
此处建议方案是分为两部分:
远端一组主机跑在fullnat下(提供高可用),经过dig命令检测dnsserver的响应时间。
在每台dns主机上,编写zabbix脚本,分析named_stats文件,获取每秒请求数
#!/bin/bash #rndc stats STATS='/var/named/chroot/var/log/named_stats' if [[ $# -ne 1 ]] then echo "$0 [querys]" exit 2 else which=$1 fi if [[ -f "${STATS}" ]] then echo > ${STATS} rndc stats >/dev/null 2>&1 else echo "${STATS} not found." exit 2 fi case ${which} in querys) RESULT=`awk '{if ($2=="QUERY") {print $1}}' ${STATS}` ;; *) echo "$0 [querys]" exit 2 ;; esac echo ${RESULT}
远端一组主机跑在fullnat下(提供高可用),经过host命令检测dnsserver的可用性,脚本与lvs健康检测脚本相似。
.......