一、硬件選型linux
CPU:12C以上配置bash
內存:16G服務器
網絡:千兆網絡
二、初始化系統配置架構
關閉 iptables負載均衡
service iptables stop chkconfig iptables off
關閉 selinuxoop
vi /etc/sysconfig/selinux SELINUX=disabled
調整ulimit限制性能
vi /etc/security/limits.conf * soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536
三、高性能、高可用DNSui
】spa
1)高可用
物理層: 首先確保兩臺lvs不在同一機櫃、同一物理交換機接入;
其次確保將全部dns服務器也作到不在同一機櫃、同一物理交換機接入;
在不通的idc構建多套dns集羣,爲客戶端提供可切換的配置。
服務層: 堅定摒棄lvs上端口檢測這種方式,採用自定義腳本檢測,爲dns的健康檢測單獨設置一個域名,爲了lvs檢測dns是否存活而設計。
客戶端層: 多idc之間的流量切換是經過客戶端的健康檢測cron實現的,腳本能夠按分鐘運行一次,分別檢測每一個dns集羣虛地址的可用性。
#!/bin/sh timeout=5 Q="" host="/usr/bin/host" if test -z "$1" ; then echo "You need to supply a DNS server to check. Quittind" exit; fi SERVER=$10 ERC=`$host -s -w $timeout $Q SERVER > /dev/null 2>$1; echo $?` if [ $ERC -eq 0 ] ; then exit 0 else exit 10 fi
2)高性能
經過lvs能夠對每一個集羣作橫向擴容,是否須要擴容的依據是對現有系統的壓測結果,以及實時的監控數據。或者能夠在最靠近應用層處,加上一次cache-only集羣,但前提是你的線上環境中,沒有任何系統依賴於dns負載均衡。
四、壓測
cd /usr/local/src/
下載bind源碼 wget http://ftp.isc.org/isc/bind9/9.9.1-P1/bind-9.9.9-P1.tar.gz
解壓 tar -xvf bind-9.9.9-P1.tar.gz
cd /usr/local/src/bind-9.9.9-P1/contrib/queryperf
編譯 ./configure
make
此目錄下生成queryperf文件
cp queryperf /usr/bin
壓測本身建立的DNS服務,建立一個文件test.txt,內容以下(前面爲域名,後面爲A記錄)
view.viewswj.com A view.viewswj.com A view.viewswj.com A view.viewswj.com A view.viewswj.com A
執行命令: /usr/bin/queryperf -d test.txt -s 192.168.137.13
結果:
DNS Query Performance Testing Tool Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $ [Status] Processing input data [Status] Sending queries (beginning with 192.168.137.13) [Status] Testing complete Statistics: Parse input file: once Ended due to: reaching end of file Queries sent: 5 queries Queries completed: 5 queries Queries lost: 0 queries Queries delayed(?): 0 queries RTT max: 0.000283 sec RTT min: 0.000017 sec RTT average: 0.000142 sec RTT std deviation: 0.000076 sec RTT out of range: 0 queries Percentage completed: 100.00% Percentage lost: 0.00% Started at: Wed Oct 26 21:49:31 2016 Finished at: Wed Oct 26 21:49:31 2016 Ran for: 0.000311 seconds Queries per second: 16077.170418 qps
五、監控
系統基礎性能: 使用zabbix自帶的模板。CPU、內存、硬盤、系統load等
LOOPBACK地址綁定狀態監控: 該架構中,dnsserver在集羣中充當realserver的角色,在dr中,須要綁定lookback地址方能同信,所以當loopback地址沒有綁定上是,lvs健康檢測經過,可是當請求到達dnsserver時,請求被拒絕,dns集羣會出現異常。
DNS數據與MASTER一致性監控:
1)經過寫zabbix自定義discovery,獲取dns配置中全部zone,而後分別比對slave和master每一個zone的serial值,當slave與master的值持續5分鐘不一致報警。
2)寫腳本,每15分鐘獲取master上全部域名解析結果,與每一個slave的結果比對,當出現結果不一致狀況時報警。
DNS響應時間監控:遠端一組主機跑在fullnat下(提供高可用),經過dig命令檢測dnsserver的響應時間。
DNS每秒請求數監控:在每臺dns主機上,編寫zabbix腳本,分析named_state文件,獲取每秒請求數。
DNS可用性監控:遠端一組主機跑在fullnat下(提供高可用),經過hosts命令檢測dnsserver的可用性,腳本與lvs健康檢測腳本相似。