原理:LVS DR(director Routing)技術利用了Internet服務的非堆成特帶你,排程器隻負責排程Client發出的請求,
而伺服器realserver直接将響應結果發揮給Client,是以相對LVS NAT方式而言可以提高整個叢集資料包的吞吐量。關
于LVS DR的搭建架構應滿足:電鍍漆和伺服器在實體上有一個網卡通過區域網路連結,VIP位址被電鍍漆和伺服器組共享,
電鍍漆配置的VIP位址對外部是可見的,用于接收虛拟服務的請求封包。把所有伺服器的VIP位址配置在各自的NOn-ARP
網路裝置,它對外不可見,隻是用于處理目标位址為VIP的網絡請求。
實驗環境:
客戶機1:
客戶機2
轉發器
realserver1
realserver2
node2
宿主主機
node1
web1
web2
網絡拓撲圖
<a href="http://s5.51cto.com/wyfs02/M02/85/3B/wKiom1edr5fi4L5MAACpFfkDvAk117.png-wh_500x0-wm_3-wmp_4-s_1534785220.png" target="_blank"></a>
node1設定檔案:
需要修改檔案
網元位置 網卡名 連結方式 對應ip
node1 eth0 橋接 RIP
node1 eth0:0 虛拟網卡 VIP
轉發器node1相關配置資訊
<code>eth0eth0:0</code>
<code>DEVICE=eth0DEVICE=eth0:1 </code>
<code>TYPE=Ethernet TYPE=Ethernet </code>
<code>UUID=c64ec2f3-0393-4215-9488-b87eb098fc33 ONBOOT=</code><code>yes</code>
<code>ONBOOT=</code><code>yes</code> <code>NM_CONTROLLED=</code><code>yes</code>
<code>NM_CONTROLLED=</code><code>yes</code> <code>BOOTPROTO=none </code>
<code>BOOTPROTO=none DEFROUTE=</code><code>yes</code>
<code>PREFIX=24 IPV4_FAILURE_FATAL=</code><code>yes</code>
<code>DEFROUTE=</code><code>yes</code> <code>IPV6INIT=no </code>
<code>IPV4_FAILURE_FATAL=</code><code>yes</code> <code>HWADDR=00:0C:29:D0:6B:6B </code>
<code>IPV6INIT=no USERCTL=no </code>
<code>NAME=</code><code>"System eth0"</code> <code>IPADDR=192.168.4.233 </code>
<code>HWADDR=00:0C:29:D0:6B:6B NETMASK=255.255.255.0 </code>
<code>USERCTL=no GATEWAY=192.168.4.149 </code>
<code>IPADDR=192.168.4.201 DNS1=192.168.4.149 </code>
<code>NETMASK=255.255.255.0 [root@node1 network-scripts]</code><code># </code>
<code>GATEWAY=192.168.4.149</code>
<code>DNS1=192.168.4.149</code>
realserver::
網元位置 網卡名 連結方式 對應IP
web1 eth0 橋接 RIP
web1 lo:1 複制lo VIP
相關網卡配置
eth0
<code>lo:1</code>
<code>DEVICE=eth0 DEVICE=lo:0 </code>
<code>TYPE=Ethernet IPADDR=192.168.4.233 </code><code>//VIP</code>
<code>UUID=3a5f26b3-6ef6-4f8f-8a67-dd65291a109e NETMASK=255.255.255.255 </code><code>//</code><code>隻針對此IP位址的包進行處理</code>
<code>ONBOOT=</code><code>yes</code> <code>ONBOOT=</code><code>yes</code>
<code>NM_CONTROLLED=</code><code>yes</code> <code>NAME=loopback </code>
<code>BOOTPROTO=none </code>
<code>PREFIX=24 </code>
<code>DEFROUTE=</code><code>yes</code>
<code>IPV4_FAILURE_FATAL=</code><code>yes</code>
<code>IPV6INIT=no </code>
<code>NAME=System eth0 </code>
<code>HWADDR=00:0C:29:E4:32:DC </code>
<code>USERCTL=no </code>
<code>IPADDR=192.168.4.211 </code>
<code>NETMASK=255.255.255.0 </code>
<code>GATEWAY=192.168.4.149 </code>
realserver2:web2
網元位置: 網卡名 連結方式 對應IP
web2 eth0 橋接 RIP
web2 lo:0 複制lo VIP
相關網卡配置資訊
<code>eth0 lo:0</code>
<code>DEVICE=eth0 DEVICE=lo:0 </code>
<code>TYPE=Ethernet IPADDR=192.168.4.203 </code>
<code>UUID=3a5f26b3-6ef6-4f8f-8a67-dd65291a109e NETMASK=255.255.255.255</code>
<code>ONBOOT=</code><code>yes</code> <code>ONBOOT=</code><code>yes</code>
<code>NM_CONTROLLED=</code><code>yes</code> <code>NAME=loopback </code>
<code>NAME=</code><code>"System eth0"</code>
<code>HWADDR=00:0C:29:D4:56:5C </code>
<code>IPADDR=192.168.4.212 </code>
director相關檔案:
<code>vi</code> <code>/etc/sysctl</code><code>.conf </code>
<code>net.ipv4.ip_forward = 1 </code><code>//</code><code>修改位置</code>
<code>sysctl -p </code><code>//</code><code>對剛才配置檔案進行儲存</code>
<code>對于realserver web1和web2伺服器可以通過配置檔案永久生效如下所示</code>
<code>realserver(1&2):</code><code>echo</code><code>"net.ipv4.conf.eth0.arp_ignore=1 </code>
<code> </code><code>net.ipv4.conf.eth0.arp_announce=2 " >></code><code>/etc/sysctl</code><code>.conf</code>
<code> </code><code>sysctl -p</code>
<code>RealServer或臨時生效:</code>
<code> </code>
<code>echo</code> <code>2 > </code><code>/proc/sys/net/ipv4/conf/eth0/arp_announce</code>
<code> </code><code>echo</code> <code>1 > </code><code>/proc/sys/net/ipv4/conf/eth0/arp_ignore</code>
主角部分:在分發器上安裝ipvsadm管理工具
<code>rpm -ivh </code><code>/media/cdrom/LoadBlanced/ipvsadm-1</code><code>.26-4.el6.x86_64.rpm </code>
<code>ipvsadm -A -t 192.168.4.201:80 -s rr</code>
<code>ipvsadm -a -t 192.168.4.201:80 -r 192.168.4.211 -g</code>
<code>ipvsadm -a -t 192.168.4.201:80 -r 192.168.4.212 -g </code>
<code>/etc/init</code><code>.d</code><code>/ipvsadm</code> <code>save</code>
<code>ipvsadm -L -n</code>
生成驗證檔案
<code>realserver:生成驗證檔案,使用httpd服務</code>
<code>并對:web1 </code><code>echo</code> <code>"web11111"</code> <code>>> </code><code>/var/www/html/index</code><code>.html</code>
<code>web2 </code><code>echo</code> <code>"web22222"</code> <code>>> </code><code>/var/www/html/index</code><code>.html</code>
虛拟機linux用戶端測試:
<code>yum -y </code><code>install</code> <code>elinks</code>
<code>elinks 192.168.4.201 -dump </code><code>//</code><code>觀察結果 滿足預測結果</code>
<code>[root@node2 ~]</code><code># elinks 192.168.4.233 -dump</code>
<code> </code><code>web5678</code>
<code> </code><code>web1234</code>
<code>[root@node2 ~]</code><code>#</code>
宿主主機測試
<a href="http://s3.51cto.com/wyfs02/M00/85/3B/wKioL1eds8LyJ_4iAAALcCPahRs140.png-wh_500x0-wm_3-wmp_4-s_3876653175.png" target="_blank"></a>
轉發器node1結果
<code>[root@node1 ~]</code><code># ipvsadm -L -n</code>
<code>IP Virtual Server version 1.2.1 (size=4096)</code>
<code>Prot LocalAddress:Port Scheduler Flags</code>
<code> </code><code>-> RemoteAddress:Port Forward Weight ActiveConn InActConn</code>
<code>TCP 192.168.4.233:80 rr</code>
<code> </code><code>-> 192.168.4.211:80 Route 1 0 8 </code>
<code> </code><code>-> 192.168.4.212:80 Route 1 0 7</code>
<code>[root@node1 ~]</code><code># ipvsadm -L -n --stats</code>
<code>Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes</code>
<code> </code><code>-> RemoteAddress:Port</code>
<code>TCP 192.168.4.233:80 24 116 0 9597 0</code>
<code> </code><code>-> 192.168.4.211:80 12 60 0 4980 0</code>
<code> </code><code>-> 192.168.4.212:80 12 56 0 4617 0</code>
現實情況中可根據實際規劃資訊進行相應的算法排程,LVS所提供的12中排程算法,在一定程度上能滿足大多數伺服器的架構需求。
本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1832438