TACACSD進(jìn)程必須獲取到認(rèn)證請(qǐng)求的Source IP,為此我們嘗試引入TProxy。 它允許你”模仿"用戶的訪問(wèn)IP,就像負(fù)載均衡設(shè)備不存在一樣,TProxy名字中的T表示的就是transparent(透明)。當(dāng)網(wǎng)元發(fā)起的認(rèn)證請(qǐng)求到達(dá)后端的AAA服務(wù)器時(shí),可以通過(guò)抓包看到的請(qǐng)求Source IP就是網(wǎng)元的真實(shí)IP。
即使用上“HAProxy+TProxy”的組合拳,還是存在另外一個(gè)問(wèn)題: 設(shè)備對(duì)于認(rèn)證結(jié)果報(bào)文,似乎需要請(qǐng)求報(bào)文的目標(biāo)地址(代理服務(wù)器)與結(jié)果報(bào)文的發(fā)送端(Real AAA Server)一致。

過(guò)程描述:網(wǎng)絡(luò)設(shè)備會(huì)發(fā)送該用戶的憑證到 TACACS+ 服務(wù)器進(jìn)行驗(yàn)證,然后決定分配訪問(wèn)相關(guān)設(shè)備的權(quán)限,并將這些決定的結(jié)果包含在應(yīng)答數(shù)據(jù)包中并發(fā)送到網(wǎng)絡(luò)設(shè)備上,再由網(wǎng)絡(luò)設(shè)備發(fā)送到用戶終端。 至于是否真的是這個(gè)校驗(yàn)規(guī)則,或者我們還沒(méi)有找到更好的解釋。暫且擱置,引述一段RFC 1492的說(shuō)明,日后再補(bǔ)充這個(gè)問(wèn)題。 CONNECT(username, password, line, destinationIP, destinationPort) returns (result1, result2, result3)
This request can alt="物聯(lián)網(wǎng)" width="550" height="236" />
另外,為了防止LVS控制機(jī)的單點(diǎn)故障問(wèn)題,還選用了Keepalived,負(fù)責(zé)LVS控制機(jī)和備用機(jī)的自動(dòng)故障切換。

LVS依賴項(xiàng):IPVS內(nèi)核模塊和ipvsadm工具包。 具體配置不做過(guò)多說(shuō)明,可以自行檢索,關(guān)鍵注意以下幾點(diǎn): 1)檢查服務(wù)器是否已支持ipvs modprobe -l |grep itvs 2)檢查依賴包: rpm -q kernel-devel rpm -q gcc rpm -q openssl rpm -q openssl-devel rpm -q popt 3)配置realserver節(jié)點(diǎn)ARP及VIP綁定腳本 vi /etc/init.d/lvs 4)啟動(dòng)LVS-DR /etc/init.d/lvsdr start 5)查看VIP 情況 ip addr list 6)啟動(dòng)realserver節(jié)點(diǎn)LVS /etc/init.d/lvs start
五、小結(jié)
1. 各種負(fù)載均衡實(shí)現(xiàn)在網(wǎng)絡(luò)中的位置

四層負(fù)載均衡的特點(diǎn)一般是在網(wǎng)絡(luò)和網(wǎng)絡(luò)傳輸層(TCP/IP)做負(fù)載均衡,而七層則是指在應(yīng)用層做負(fù)載均衡。 四層負(fù)載均衡對(duì)于應(yīng)用侵入比較小,對(duì)應(yīng)用的感知較也少,同時(shí)應(yīng)用接入基本不需要對(duì)此做特殊改造。 七層負(fù)載均衡一般對(duì)應(yīng)用本身的感知比較多,可以結(jié)合一些通用的業(yè)務(wù)負(fù)載邏輯做成很細(xì)致的方案,比如我們通常用HAProxy/Nginx來(lái)做網(wǎng)站流量的分發(fā)。
實(shí)踐再次教育我們,天下沒(méi)有一招鮮,任何技術(shù)都有它的江湖位置。
2. 仿真能力
這次實(shí)踐可以用一句話概括就是:“成也仿真,敗也仿真”。 起初走了很長(zhǎng)一段彎路,可以說(shuō)是因?yàn)閷?duì)整個(gè)負(fù)載均衡體系的理解不深入,也可以說(shuō)是測(cè)試不足導(dǎo)致,憑著慣性,想當(dāng)然地認(rèn)為可以簡(jiǎn)單復(fù)制原來(lái)的“經(jīng)驗(yàn)”,而 忽視了實(shí)驗(yàn)環(huán)境的構(gòu)建。
后來(lái)可以快速推進(jìn),是因?yàn)橹匦乱?guī)整了測(cè)試方法和目標(biāo),并且基于虛擬機(jī)搭建了驗(yàn)證環(huán)境,包括引入了可以仿真路由器的GNS3平臺(tái),完整地測(cè)試了真實(shí)的業(yè)務(wù)流程。LVS集群環(huán)境也是先完成構(gòu)建、試運(yùn)行一段時(shí)間之后才完成的業(yè)務(wù)割接。
IPTABLES NAT的方案并沒(méi)有在早期發(fā)現(xiàn)性能瓶頸,也說(shuō)明這快的測(cè)試能力不足。
3.花邊故事
HAProxy的官網(wǎng)目前是被封鎖的,國(guó)內(nèi)不翻墻訪問(wèn)不了,Why ? 在他們家的操作手冊(cè)后面有LVS、Nginx的推薦鏈接。以前并沒(méi)有注意。
TPROXY最早是作為L(zhǎng)inux內(nèi)核的一個(gè)patch,從linux-2.6.28以后TPRXOY已經(jīng)進(jìn)入官方內(nèi)核。iptables只是Linux防火墻的管理工具而已,位于/sbin/iptables。真正實(shí)現(xiàn)防火墻功能的是Netfilter,它是Linux內(nèi)核中實(shí)現(xiàn)包過(guò)濾,如果要探討Netfilter,又會(huì)是一個(gè)很長(zhǎng)的故事。
LVS開(kāi)始于1998年,創(chuàng)始人是章文嵩博士,從Linux2.4內(nèi)核以后,已經(jīng)完全內(nèi)置了LVS的各個(gè)功能模塊。到今天為止,依然是目前國(guó)內(nèi)IT業(yè)界達(dá)到Linux標(biāo)準(zhǔn)內(nèi)核模塊層面的唯一碩果。章博士同時(shí)是前淘寶基礎(chǔ)軟件研發(fā)負(fù)責(zé)人、前阿里云CTO,三個(gè)月前剛轉(zhuǎn)會(huì)到滴滴打車任副總裁。淘寶技術(shù)體系曾大規(guī)模使用了LVS,不過(guò)最新消息,淘寶的同學(xué)已經(jīng)鼓搗出一個(gè)VIPServer,正逐步替代了LVS。
羅列的這幾條信息,其實(shí)與這次的主題關(guān)系不大,但確是整理這次篇帖子過(guò)程中,感覺(jué)很有意思的事情。技術(shù)并不冰冷,它就像個(gè)江湖,到底還是關(guān)于人的故事。