點擊返回架構師成長之路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健康檢測腳本相似。
.......