LVS-nat架構原理與實現方案

經過NAT實現虛擬服務器(VS/NAT)

因爲IPv4中IP地址空間的日益緊張和安全方面的緣由,不少網絡使用 保留IP地址(10.0.0.0/255.0.0.0、172.16.0.0/255.128.0.0和192.168.0.0 /255.255.0.0)[64, 65, 66]。這些地址不在Internet上使用,而是專門爲內部網絡預留的。當內部網絡中的主機要訪問Internet或被Internet訪問時,就須要 採用網絡地址轉換(Network Address Translation, 如下簡稱NAT),將內部地址轉化爲Internets上可用的外部地址。NAT的工做原理是報文頭(目標地址、源地址和端口等)被正確改寫後,客戶相信 它們鏈接一個IP地址,而不一樣IP地址的服務器組也認爲它們是與客戶直接相連的。由此,能夠用NAT方法將不一樣IP地址的並行網絡服務變成在一個IP地址 上的一個虛擬服務。html

VS/NAT的體系結構如圖所示。在一組服務器前有一個調度器,它們是經過Switch/HUB相鏈接的。這些服務器 提供相同的網絡服務、相同的內容,即無論請求被髮送到哪一臺服務器,執行結果是同樣的。服務的內容能夠複製到每臺服務器的本地硬盤上,能夠經過網絡文件系 統(如NFS)共享,也能夠經過一個分佈式文件系統來提供。nginx



wKioL1V2PwKT9OhHAAGZSOVR9Bg598.jpg



      客戶經過Virtual IP Address(虛擬服務的IP地址)訪問網絡服務時,請求報文到達調度器,調度器根據鏈接調度算法從一組真實服務器中選出一臺服務器,將報文的目標地址 Virtual IP Address改寫成選定服務器的地址,報文的目標端口改寫成選定服務器的相應端口,最後將修改後的報文發送給選出的服務器。同時,調度器在鏈接Hash 表中記錄這個鏈接,當這個鏈接的下一個報文到達時,從鏈接Hash表中能夠獲得原選定服務器的地址和端口,進行一樣的改寫操做,並將報文傳給原選定的服務 器。當來自真實服務器的響應報文通過調度器時,調度器將報文的源地址和源端口改成Virtual IP Address和相應的端口,再把報文發給用戶。算法


NAT基本架構實現
vim


環境準備:安全

設備
軟件環境
網絡環境
virtual_server(dir)
CentOS 6.6+IPVS(ipvsadm)

eth0 : VIP : 192.168.137.128
bash

(對外服務的IP,客戶端訪問的IP)服務器

eth1 : IP:192.168.1.121
real_server_a(rsa)
CentOS 6.6+nginx(監控的服務項目)
eth0 : IP:192.168.1.118
real_server_b(rsb)
CentOS 6.6+nginx(監控的服務項目)
eth0 : IP:192.168.1.119

配置方法:網絡

# 首先在rsa與rsb中啓動nginx,測試是否能夠正常訪問
[root@rsa ~]# /etc/init.d/nginx start
正在啓動 nginx:                                           [肯定]

wKiom1V240bSoqoXAALZhD8WRRU150.jpg

# 爲了訪問更加直觀,咱們修改一下主頁
[root@rsa ~]# vim /usr/share/nginx/html/index.html
This is test page,this is A.
[root@rsa ~]# /etc/init.d/nginx reload
從新載入 nginx:                                           [肯定]
# 咱們在看一下

wKioL1V25ifgAcXzAAB5JU7qICQ313.jpg


# 當rsa與rsb的nginx均可以正常訪問,咱們須要將兩臺設備的網關修改成dir的內網的IP
[root@rsa ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=779f98ef-706a-4b8c-9e78-75fa1e79fcab
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=00:0C:29:56:5C:C5
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.1.118
NETMASK=255.255.255.0
GATEWAY=192.168.1.121
DNS1=202.96.128.166
DNS2=202.96.134.133

[root@rsa ~]# service network restart
正在關閉接口 eth0:                                        [肯定]
關閉環回接口:                                             [肯定]
彈出環回接口:                                             [肯定]
彈出界面 eth0: Determining if ip address 192.168.1.118 is already in use for device eth0...
                                                           [肯定]


接下來咱們開始配置dir的機器,咱們以腳本的形式去配置架構

[root@dir ~]# vim /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服務器上開啓路由轉發功能: 
echo 1 > /proc/sys/net/ipv4/ip_forward 
# 關閉icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

# director 設置nat防火牆
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.1.0/24  -j MASQUERADE
# director設置ipvsadm
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.137.128:80 -s rr 
$IPVSADM -a -t 192.168.137.128:80 -r 192.168.1.118:80 -m -w 1
$IPVSADM -a -t 192.168.137.128:80 -r 192.168.1.119:80 -m -w 1

[root@dir ~]# chmod a+x !$
chmod a+x /usr/local/sbin/lvs_nat.sh
[root@dir ~]# /bin/bash /usr/local/sbin/lvs_nat.sh
# 查看配置的狀態
[root@dir ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.137.128:80 rr
  -> 192.168.1.118:80             Masq    1      0          0
  -> 192.168.1.119:80             Masq    1      0          0


接下來咱們經過VIP進行訪問測試分佈式


wKiom1V26Mfh1anWAACHAL4vWIM090.jpg


wKiom1V26PmDDrHOAACIEFn_Blg566.jpg

相關文章
相關標籤/搜索