lvs


keepalived

同類軟件 heartbeat
硬件設備:F5 netscaler radware

lvs

同類軟件 haproxy nginx
硬件設備:F5 netscaler radware

ARP 協議
考點:
1.什么是ARP協議,ARP協議的工作原理

  全稱 "Address Resolution Protocol" 地址解析協議。
  使用ARP協議可以通過ip地址獲取物理地址(MAC地址)
  局域網中第一次通訊,ARP廣播尋找目標主機,並緩存ip對應的MAC到本機的ARP表中。通訊的雙方必須在一個網段。

​ 2. ARP帶來的實際問題

利用arp緩存表進行arp欺騙,當有一台主機使用arp欺騙偽造網關mac地址導致不能上網,該如何排查

 - 設備接入時進行mac地址登記

​ 3.遷移網關和高可用服務器后無法上網

arping廣播自己的mac地址
	/sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253
	/sbin/arping -U -I eth0 10.0.0.162

​ 4.命令

arp -a 查看arp緩存表
arp -d 清空arp緩存表

​ 5.應用場景

lvs DR 模式

——————————————————————————————————————————————

  1. lvs(linux virtual server) 可以代理TCP和UDP,並發量幾萬到10萬
    ——————————————————————————————————————————————

項目介紹
集群的體系結構
集群中的ip負載均衡技術
集群中的負載調度

——————————————————————————————————————————————
2.術語
——————————————————————————————————————————————

VIP virtual ip address 虛擬ip地址
RIP real server ip address 真實的ip節點,web的地址
DIP director ip address 負載均衡器的內網ip
CIP client ip address 客戶端的ip

——————————————————————————————————————————————
3.工作模式
——————————————————————————————————————————————

NAT模式 network address translation
TUN模式 tunneling
DR模式 direct routing 直接路由
FULLNAT模式 full network address translation

——————————————————————————————————————————————
3.1.DR模式direct routing 直接路由
——————————————————————————————————————————————

請求過程
	1.請求數據攜帶CIP和VIP 到達LVS, LVS通過調度算法選擇一台后端主機並修改ARP表中VIP對應的mac地址轉發到該realserver上。
	2.realserver 核驗VIP和MAC,realserver 發現MAC地址是自己的但是VIP不是自己的,這時間會丟棄請求的數據包(通過在 realserver 上配置VIP解決該問題)
	3.局域網中同時配置多個VIP 會導致IP沖突,爭搶路由廣播(通過在lo 上配置vip,並通過內核抑制realserver的接收路由廣播)
	4.realserver處理完畢經路由直接將結果發送給CIP 
特點
	1.要求在同一局域網內
	2.負載均衡器只做了mac地址的轉發,因此只能代理相同端口
	3.webserver需要外網ip
	4.優點:並發很高 
	
	客戶端CIP--->lvs --->分發到RIP--->直接將結果返回到客戶端
				|
				|
			修改ARP中的mac地址為web物理地址
				
			a.在真實的web機器上綁定ifconfig lo:0 vip/24 up
			b.抑制ARP

——————————————————————————————————————————————
3.2.NAT模式 network address translation
——————————————————————————————————————————————

請求時改目標ip,數據返回時修改源IP
請求過程
	1.請求數據到達LVS(CIP:VIP)
	2.LVS廣播轉發請求到一台RIP,並將數據包的目標ip修改成該RIP(CIP:RIP) prerouting
	3.RIP 處理后將數據包發送給網關(RIP網關必須為DIP)(RIP:CIP)
	4.LVS 轉換源ip地址后轉發給CIP(VIP:CIP) postroting
特點:	
	1.支持端口轉化
	2.realserver 可以是內網
	3.對LVS 壓力大
	2.負載均衡開啟內核轉發 net.ipv.ip_forward=1

fullnat Lvs同時修改源和目標地址,返回時同時修改源和目標地址。這樣lvs可以是多台,在多台lvs之前的的路由器上使用OSPF技術聚合

——————————————————————————————————————————————
3.3.TUN模式 tunneling
——————————————————————————————————————————————

二次封裝數據包
1.數據到達LVS ,LVS進行二次封裝,在目標地址中添加新的IP指向RIP
2.到達RIP,webserver進行解包,獲取到VIP(需要在webserver lo上添加輔助ip,同時抑制vip。類似DR模式)
3.直接返回數據到客戶端
4.與DR模式相比可以跨網段,跨機房

——————————————————————————————————————————————
4.調度算法 有8種調度算法,常用4種
——————————————————————————————————————————————

rr	round-robin			輪詢算法 靜態
wrr	weight round-robin	加權輪詢 靜態
dh	destination hashing	目標地址hash算法
sh  source hashing  	原地址hash 算法
wlc	weight least-connect 加權最小連接數調度  動態
lc
lblc Locality-Based Least Connections  基於局部性的最少鏈接
LCLCR Locality-Based Least Connections with Replication  帶復制的基於局部性最少鏈接
sed:最短預期延遲(Shortest Expected Delay)
nq	never queue schedure 永不排隊

——————————————————————————————————————————————
5.DR模式安裝配置
——————————————————————————————————————————————

環境

 +++++++++++++++++++++++++++++++++++++++++++++
 192.168.0.2		DIP
 192.168.0.3		RIP	
 192.168.0.4		RIP
 192.168.0.20            VIP
 +++++++++++++++++++++++++++++++++++++++++++++

內核環境檢查

lsmod |grep ip_vs    查看內核模塊是否安裝ip_vs(內核調度模塊)
#如果有多個/usr/src/kernels/2.6.32 要與uname -r 一致
#如果沒有要yum install kernel-devel
ln -s /usr/src/kernels/2.6.32-300.10.1.el5uek/ /usr/src/linux

安裝ipvsadmin

wget  http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar xf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
#不需要configure,報錯需要安裝: yum install libnl* popt* -y
#rpm -ivh popt-static-1.13-7.el6.x86_64.rpm 
make && make install 

把ip_vs 加載到內核 /sbin/ipvsadm 或者 modprobe ip_vs
檢查內核如果出現ip_vs表示安裝成功 lsmd|grep ip_vs

另一種方法通過yum 安裝ipvsadm

vi /root/ipvs.sh

#!/bin/bash
ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for i in $(ls $ipvs_mods_dir|grep -o "^[^.]*")
do
  /sbin/modinfo -F filename $i &>/dev/null
  if [ $? -eq 0 ];then
    /sbin/modprobe $i
  fi
done

#加載ipvs內核模塊
sh /root/ipvs.sh
lsmod | grep ip_vs

#
yum install ipvsadm -y 
# 
ipvsadm -Ln
#

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_announce = 0
sysctl -p

6.配置
6.1負載均衡端配置

#配置vip  lvs 上執行
ifconfig eth0:0 192.168.0.20/24 up
route add -host 192.168.0.20 dev eth0

6.2webserver 端配置

#在各個webserverd端綁定vip
#在 lo上配置,掩碼32
ifconfig lo:0 192.168.0.20/32 up    
route add -host 192.168.0.20 dev lo
6.3 抑制webserver 端APR響應
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore	
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore	
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce	

#參數
arp_ignore 整數
外來ip請求的arp回應限制
0(默認):只要網卡上有配的ip,ARP廣播全部應答
1	:只回答接有網線的網卡上配置的IP
arp_announce 整數
對本地ip發出的arp回應作出相應級別的限制
0(默認) 在任意網絡接口上的任何地址回應

快速啟動

ipvsadm -A -t 192.168.0.20:80 -s rr -p 20	 添加虛擬主機
ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.3 -g -w 1	添加web節點
ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.4 -g -w 1	添加web節點
ipvsadm -L -n --stats  

——————————————————————————————————————————————
9.ipvsadm 命令常用參數
——————————————————————————————————————————————

ipvsadm --help
ipvsadm -C 	清空原有配置
ipvsadm --set  20 5 60  # tcp tcpfin udp 超時時間
#刪除虛擬主機
ipvsadm -D -t 192.168.0.20:80 
-A 添加虛擬主機
-t 指定VIP
-s 指定算法
-p 會話保持
#刪除節點
#ipvsadm -d -t 192.168.0.20:80 -r 192.168.0.4 
-a 添加web節點
-r 添加節點
-g DR模式
-w 指定權重
ipvsadm -L -n  查看配置信息
ipvsadm -Ln --stats 
ipvsadm -Lnc	查看鏈接數及鏈接狀態
ipvsadm -Ln --threshods
ipvsadm -Ln --timeout

centos5 安裝lvs
lvs裂腦
路由配合lvs

ipvsadm

ipvsadm - Linux Virtual Server administration

有兩種基本的格式:

  1. ipvsadm COMMAND [protocol] service-address [scheduling-method] [persistence options]
  2. ipvsadm command [protocol] service-address server-address [packet-forwarding-method] [weight options]

格式1,用於維護 Virtual Server

格式2,用於維護RealServer

command 大寫用於維護 virtual server,小寫用於維護real server

短命令 長命令 解釋
-A --add-service 添加virtual server
-E --edit-service 編輯virtual server
-D --delete-service 刪除virtual server 及相關的real server
-C --clear 清空virtual server
-R --restore 從標准輸入加載
-S --save 保存到標注輸出
-a --add-server 添加real server
-e --edit-server 編輯real server
-d --delete-server 刪除real server
-L,-l --list -Lnc 192.168.0.1
-Z --zero 清空匹配的包
--set tcp tcpfin udp 指定超時時間
--start-daemon master
--start-daemon backup
短命令 長命令 解釋
-t --tcp-service tcp協議service
-u --udp-service udp協議service
-f --fwmark-service
-p --persistent [timeout] 回話保持,timeout 默認300s
-r --real-server
-g --gatewaying direct routing
-i --ipip tunneling
-m --masquerading NAT
-w --weight

scheduling-method

短命令 長 命 令
-s --scheduler rr round-robin
wrr weighted-round-robin
lc least-connection
wlc weighted-least-connection
lblc 相同客戶端訪問相同的服務,如果服務沒有超負荷
lblcr
dh - Destination Hashing
sh Source hashing
sed - Shortest Expected Delay 最小延遲
nq Never Queue 1.優先分配到一個閑置的real server 、或最快的real server 2.如果都繁忙使用sed 調度算法

查詢指令

短命令 長命令 解釋
-c --connection 當前ipvs的 連接情況
--stats 輸出狀態信息
--rate 速率信息
--thresholds 輸出real server的閾值信息
--persistent-conn 輸出會話保持的信息
--sort 排序輸出
--nosort 不排序
-n --numeric 不解析域名
--exact 精確的字節信息

事例

   ipvsadm -A -t 207.175.44.110:80 -s rr
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
   ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m

   Alternatively, this could be achieved in a single ipvsadm command.

   echo "
   -A -t 207.175.44.110:80 -s rr
   -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
   -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
   " | ipvsadm -R


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM