1. 程式人生 > >DNS實現HA和負載均衡

DNS實現HA和負載均衡

NAPTRSRV均可以實現後臺伺服器的master/slaveload balancing。但是兩者實現的粒度不一樣,所以兩者通常結合起來使用。通過NAPTR可以查詢服務(service),通過SRV可以查詢某個service的細節比如協議,PORTserver

1 SRV(service location)

The SRV RR allows administrators to use several servers for a singledomain, to move services from host to host with little fuss, and to designatesome hosts as primary servers for a service and others as backups. SRV can beused for load balancing.

SRV可實現負載均衡和高可靠性。

●service

對應的service名稱

●protocol

協議名稱。常用的有TCP,UDP,_x-3gpp-pgw

●name

除掉服務和協議後的域名。

●priority

值越低,優先順序越高。只能選擇優先順序最高的。利用這個欄位可以實現master/slave

●weight

用於負載均衡,如果priority一樣,則需要把請求安裝weight指示的比例分配到各個target上。priority聯合使用可以實現maser/slave load balancing

●port

提供服務的埠號。

●target

提供服務的真正server。


2 NAPTR

全稱是naming authority pointer。通過正則表示式對輸入的域名進行計算,輸出一個新域名/URI.

●name

正則表示式的輸入,即key。

●order

只能選擇優先順序最高(order值最小)的。

●preference

類似於SRV中的priority,使用者負載均衡

●flags

“S”NAPTR終止。下一步應該是SRV查詢。

“A”NAPTR終止。下一步應該是A/AAAA查詢。

“U”NAPTR終止。下一步不是DNS查詢,生成的URI比較特殊,沒有研究。

“P”還需要進行下一步NAPTR查詢?

“”  regexp一定為空,需要對replace進行下一步的NAPTR查詢。即S-NAPTR,straightforward- NAPTR。

●service

指定的服務名稱。

●regex

●replacement

提供服務的server。

 

3 NAPTR和SRV使用案例

NAPTRSRV均可以實現後臺伺服器的master/slaveloadbalancing。但是兩者實現的粒度不一樣,所以兩者通常結合起來使用。通過NAPTR可以查詢服務(service),通過SRV可以查詢某個service的細節比如協議,PORTserver

3.1 SIP

SIP(RFC 3263)建議發起一個會話時,首先進行NAPTR查詢。比如,如果試圖解析sip:[email protected],首先需要對some.example.com進行一次NAPTR查詢,只有當NAPTR失敗了才直接進行SRV查詢。因為NAPTR允許定義service,而SRV只提供細節比如埠號和server name。

NAPTR查詢的結果如下。flag “S”指示進行NAPTR後,還需要進行一次SRV查詢,從而得到協議、埠、真正的server。可以看出,NAPTR和SRV的層次是不一樣的。

NAPTR 50  50  "s"  "SIPS+D2T"     ""  _sips._tcp.example.com.

NAPTR 90  50  "s"  "SIP+D2T"      ""  _sip._tcp.example.com

NAPTR 100 50  "s"  "SIP+D2U"      ""  _sip._udp.example.com.

3.2 ENUM

ENUMIETF的電話號碼對映工作組(Telephone NumberMapping working group, 簡稱ENUM)定義的一個協議——RFC2916。它定義了將E.164號碼轉換為域名的方法,從而使國際統一的E.164電話號碼成為可以在網際網路中使用的網路地址資源。E.164號碼是傳統電信網路中使用的重要資源,DNS系統是網際網路的重要基礎,ENUM將兩者結合起來,有益於傳統電信服務向基於IP包交換的方向發展,ENUM是對促進兩網最終融合具有重要意義的技術。

比如,需要把電話號碼+441115551234轉換成對應的域名,則首先要進行如下處理:

AUS = +441115551234

# remove +

441115551234

# reverse digits

432155511144

# separate with a dot

4.3.2.1.5.5.5.1.1.1.4.4

# append .e164.arpa.

4.3.2.1.5.5.5.1.1.1.4.4.e164.arpa

然後再利用NAPTR對4.3.2.1.5.5.5.1.1.1.4.4.e164.arpa進行計算,最後得出[email protected]

3.3  PGW選擇

3GPP-TS-29.3035.1.13小節和3GPP-TS-23.003小節描述了相關資訊。PGW提供的服務名稱是x-3gpp-pgw,協議包括x-s2a-pmip,x-s2b-pmip…

類似於SIP。client端從AAA得到PGW的域名後,先進行一次NAPTR查詢,然後再執行SRV查詢和A記錄查詢,具體流程如下。

1 get aa.bb.com from AAA.

2 send NAPTR.name=aa.bb.com

3 get NAPTR rsp. flag=”s”,replacement= _x-3gpp-pgw._x-s2a-pmip.cc.dd.com

4 send SRV query.name= _x-3gpp-pgw._x-s2a-pmip.cc.dd.com

5 get SRV rsp.target=ff.hh.com

6 send A query. name=ff.hh.com

7 get A rsp. ip=1.2.3.4

另外,client端也需支援SNAPTR。收到的NAPTR響應,如果flag為空,則稱為SNAPTR,下一步需要再執行NAPTR請求。後續的互動同前。

相關推薦

DNS實現HA負載均衡

NAPTR和SRV均可以實現後臺伺服器的master/slave和load balancing。但是兩者實現的粒度不一樣,所以兩者通常結合起來使用。通過NAPTR可以查詢服務(service),通過SRV可以查詢某個service的細節比如協議,PORT,server。1 S

[多活] 分散式、多活資料中心如何實現DNS域名解析負載均衡

      關於雙活技術和業界主流方案,應大家要求做了分析和分享(參考歷史發文),為了幫助大家進一步理解,特意重要知識點做了梳理和細化,並整理成文。由於平時工作繁忙,只有利用週末時間寫寫文章,

.net core webapi使用nginx實現叢集負載均衡

第一步:先編寫webapi介面:      介面介紹:     1、介面採用appkey和appsecret     2、訪問的話,在報文頭加上,appkey和sign。       1、sign由請求地址(例如:http://www.xxx.com/api/user/xx/,那麼地址是/api/u

使用zookeeper實現叢集負載均衡

package com.bubble.cluster; import java.net.InetSocketAddress; import java.util.List; import java.util.Random; import java.util.concurre

Zookeeper實現叢集負載均衡---(5)Zabbix整合Zookeeper示例

1.前言 上一章主要描述了zabbix整合Zookeeper的方案,本文主要描述zabbix整合Zookeeper示例。 2.整合前置條件 1. 安裝完按成Zabbix,其中包括Java Gateway元件 2. 修改Zook

Docker的安裝鏡像管理並利用Docker容器實現nginx的負載均衡、動靜分離

docker的安裝和鏡像管理並利用docker容器實現nginx的負載均衡、動靜分離Docker的安裝一、Docker的概念Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互

《商城專案02》--用Nginx實現反向代理負載均衡

一, Nginx的安裝 1, 下載解壓安裝 (這裡提供一個1.8.0的windows版本:  連結:https://pan.baidu.com/s/1Cf0sbrlUuc15OKDQ36J9mQ  提取碼:y5z5) 2, 啟動測試 雙擊nginx.ex

編譯安裝nginx並實現反向代理負載均衡快取功能

一、編譯安裝nginx 1、下載 [[email protected] ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2、解壓 [[email protected] ~]#&

haproxy實現discuz論壇的動靜分離負載均衡

一、在cs2、cs3、cs4上安裝httpd [[email protected] ~]# yum install httpd [[email protected] ~]# yum install&

springcloud 實現反向代理負載均衡

springcloud 實現反向代理和負載均衡   1. 搭建註冊中心,路由服務zuul,兩個服務端         參考我的上一篇部落格 springcloud專案搭建   &nbs

nginx實現對映多個域名負載均衡

當前我有2個網站,都需要部署上去,但是無奈,雲服務只有一臺,在買一臺的話就又太費錢,所以利用了nginx的多域名配置,從而實現利用一個 ip 訪問不同的域名,也節省了開支   配置方法也相對比較簡單,在nginx.conf配置檔案中 配置多個server 即可 user nob

Nginx聯合Tomcat在一臺機器上最快方式實現反向代理負載均衡

準備 解壓安裝編譯Nginx 解壓Tomcat 將解壓後的Tomcat複製兩份分別叫Tomcat1和Tomcat2 在Tomcat1目錄下修改conf/server.xml檔案裡埠號 第22行<Server port="8005" shutdown="

基於consul實現微服務的服務發現負載均衡

一. 背景 隨著2018年年初國務院辦公廳聯合多個部委共同釋出了《國務院辦公廳關於促進“網際網路+醫療健康”發展的意見(國辦發〔2018〕26號)》,國內醫療IT領域又迎來了一波網際網路醫院建設的高潮。不過網際網路醫院多基於實體醫院建設,雖說掛了一個“網際網路”的名號,但網

Eureka + Ribbon實現微服務的服務發現負載均衡

目錄 1:原理結構圖 2:搭建Eureka Server服務註冊中心 3:搭建Eureka Provider (服務提供者,即Eureka Client) 4:搭建 Eurka-Consumer 1:原理結構圖 2:搭建Eureka Server服務註冊中心 建

Apache + Tomcat基於mod_jk模組實現反代、動靜分離、熱備負載均衡

1、簡單說明: mod_jk是ASF的一個專案,是一個工作於Apache端基於AJP協議與Tomcat通訊的聯結器,是Apache的一個模組,是AJP協議的客戶端,服務端是Tomcat的AJP聯結器。 Web客戶訪問Tomcat JSP元件的兩種方式: 2、演示環境:

spring cloud使用zuul實現反向代理負載均衡

談到spring cloud,就要提及到其核心元件:zuul元件,這個元件其實功能很多,比如反向代理,負載均衡還有許可權控制等功能,這篇部落格主要寫的是zuul的反向代理和負載均衡。首先是進行eureka的實現,程式碼如下:首先是pom.xml,新增依賴:<dependency>

用DCOSmarathon-lb實現服務發現負載均衡:第一部分

最近在研究使用Mesos,對marathon-lb和mesos-dns等諸多工具,只是停留在知道和會用的階段,特別是對於基於marathon-lb的HAProxy的應用分組和使用更是一頭霧水。現在資料也少,看了官網上的這篇文章覺得講得還算是全面。兄弟英文水平差,

nginx結合tomcat實現反向代理負載均衡的部署

部署環境:CentOS6.5   nginx1.8     tomcat7 下載nginx地址:http://nginx.org/en/download.html nginx安裝 1.安裝時依賴環境:yum -y install make gcc-c++ zlib zlib

SpringCloud整合zuul並實現反向代理負載均衡

首先,這篇文章參考的是http://blog.didispace.com/springcloud5/這位大牛的部落格。本人是通過這篇部落格來學習zuul的,現在寫的部落格只是個人在學習時個人的一些感受和理解。 談到spring cloud,就要提及到其核心元件:zuul元件,這個元件其實功能很多

用DCOSmarathon-lb實現服務發現負載均衡:第二部分

最近在研究使用Mesos,對marathon-lb和mesos-dns等諸多工具,只是停留在知道和會用的階段,特別是對於基於marathon-lb的HAProxy的應用分組和使用更是一頭霧水。現在資料也少,看了官網上的這篇文章覺得講得還算是全面。兄弟英文水平差,