ipvs和ipvsadm


ipvs和ipvsadm

ipvs:內核中的協議棧上實現

	ipvs是LVS軟件核心,是運行在LB上的,這是個基於ip層的負載均衡。
	ipvs的總體結構主要有ip包處理,負載均衡算法,系統配置和管理三個模塊以及虛擬服務器與真實服務器鏈表組成。
	ipvs管理集群服務管理服務上的RS。
	一個ipvs主機可以同時定義多個cluster server,但可能會影響調度性格。
	一個ipvs服務至少應該有一個RS。
	grep -i -C 10 "ipvs" /boot/config-VERSION-RELEASE.x86_64
	支持的協議:TCP,UDP,AH,ESP,AH_ESP,SCTP
	ipvs 規則: /proc/net/ip_vs
	ipvs 連接:/proc/net/ip_vs_conn

ipvsadm:用戶空間的集群服務管理工具

	1)程序包:ipvsadm
		rpm -ql ipvsadm 
		/etc/sysconfig/ipvsadm-config
		/usr/lib/systemd/system/ipvsadm.service
		/usr/sbin/ipvsadm
		/usr/sbin/ipvsadm-restore
		/usr/sbin/ipvsadm-save
		/usr/share/doc/ipvsadm-1.27
		/usr/share/doc/ipvsadm-1.27/README
		
		Unit File: ipvsadm.service
		主程序:/usr/sbin/ipvsadm
		規則保存工具:/usr/sbin/ipvsadm-save
		規則重載工具:/usr/sbin/ipvsadm-restore
		配置文件:/etc/sysconfig/ipvsadm-config
	2)命令:ipvsadm
		ipvsadm - Linux Virtual Server administration
		  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
		  ipvsadm -D -t|u|f service-address
		  ipvsadm -C
		  ipvsadm -R
		  ipvsadm -S [-n]
		  ipvsadm -a|e -t|u|f service-address -r server-address [options]
		  ipvsadm -d -t|u|f service-address -r server-address
		  ipvsadm -L|l [options]
		  ipvsadm -Z [-t|u|f service-address]
		  ipvsadm --set tcp tcpfin udp
		  ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
		  ipvsadm --stop-daemon state
			-A   ,--add-service      	添加一個集群服務
			-E   ,--edit-service     	修改已添加的集群服務
			-D   ,--delete-service   	刪除虛擬服務
			-C   ,--clear            	清空整個表
			-R   ,--restore          	從標准輸入重載
			-S   ,--save             	保存值到標准輸出。
			-a   ,--add-server       	向指定的Client Server中添加Real Server.
			-e   ,--edit-server      	修改RS
			-d   ,--delete-server    	刪除真實服務
			-L|-l,--list             	列出表
			-Z   ,--zero             	清空計數器
			--set tcp tcpfin udp      	設置連接超時值
			--start-daemon            	開啟連接同步后台進程
			--stop-daemon             	停止連接同步后台進程
			-t service-address,--tcp-service     	服務地址是 host[:port],tcp協議
			-u service-address,--udp-service     	服務地址是host[:port],udp協議
			-f fwmark,--fwmark-service           	防火牆標記
			-6          ,--ipv6             	fwmark 項使用 IPv6
			-s scheduler,--scheduler        	rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,調度方法其中之一,默認為wlc。
			--pe engine        	備用持久性引擎可能是 sip,默認情況下不設置
			-p [timeout]      ,--persistent       	持續連接
			-M netmask        ,--netmask          	持久粒度掩碼
			-r server-address ,--real-server      	服務地址主機和端口,只有支持端口映射的LVS類型才允許此處使用和集群服務中不同的端口
			-g                ,--gatewaying       	gatewaying (direct routing) (default),dr模式
			-i                ,--ipip             	ipip encapsulation (tunneling),tun模式
			-m                ,--masquerading     	masquerading (NAT),nat模式
			-w weight         ,--weight           	實際服務器容量,指定權重
			-x uthreshold     ,--u-threshold      	連接的高等門限
			-y lthreshold     ,--l-threshold      	連接的低等門限
			--mcast-interface interface         	連接同步的多播接口
			--syncid sid                        	syncid 同步連接(default=255)
			-c,--connection                      	顯示ipvs連接
			--timeout                           	超時時間輸出(tcp tcpfin udp)
			--daemon                            	后台進程信息輸出
			--stats                             	統計數據
			--rate                              	速率
			--exact                             	精確值
			--thresholds                        	線程信息輸出
			--persistent-conn                   	當前連接信息輸出
			--nosort                            	禁用對服務器/服務的排序輸出
			--sort                              	不做任何事情,因為后台兼容性
			-o       ,--ops                      	單包調度
			-n       ,--numeric                  	數字格式顯示ip和port,注意-n只能寫在-L之后。
			-b flags ,--sched-flags              	調度標志(comma-separated)
			
		3)核心功能:
			集群服務管理:增、刪、改
			集群服務的RS管理:增、刪、改
			查看
		
		4)管理集群服務:增、改、刪
			增、改:
				ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
			刪除:
				ipvsadm -D -t|u|f service-address
				service-address: 
					-t|u|f: 
						-t: TCP 協議的端口,VIP:TCP_PORT
						-u: TCP 協議的端口,VIP:UDP_PORT
						-f :firewall MARK ,標記,一個數字
				[-s scheduler] :指定集群的調度算法,默認為wl
		
		5)管理集群上的RS :增、改、刪
			增、改:
				ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
			刪:
				ipvsadm -d -t|u|f service-address -r server-address
				server-address:
					rip[:port] 如省略port ,不作端口映射
			選項:
				lvs類型:
					-g: gateway, dr 類型,默認
					-i: ipip, tun 類型
					-m: masquerade, nat 類型
					-w weight:指定權重
		6)清空定義的所有內容:ipvsadm –C
		
		7)清空計數器:ipvsadm -Z [-t|u|f service-address]
		
		8)查看:
			ipvsadm -L|l [options]
				--numeric, -n :以數字形式輸出地址和端口號
				--exact :擴展信息,精確值
				--connection ,-c :當前IPVS 連接輸出
				--stats :統計信息
				--rate  :輸出速率信息
		9)保存:
			建議保存至/etc/sysconfig/ipvsadm
			ipvsadm-save > /PATH/TO/IPVSADM_FILE
			ipvsadm -S > /PATH/TO/IPVSADM_FILE
			systemctl stop ipvsadm.service
		10)重載:
			ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
			ipvsadm -R < /PATH/FROM/IPVSADM_FILE
			systemctl restart ipvsadm.service

FireWall Mark:FWM

	1)MARK target 可用於給特定的報文打標記,在netfilter上給報文打標記,mangle表
		--set-mark value
		其中:value 為十六進制數字
	
	2)借助於防火牆標記來分類報文,而后基於標記定義集群服務。
		可將多個不同的應用使用同一個集群服務進行調度。
		也就是將http和https統一調度,可以實現無論你訪問http和https都給你調度到后面的真實的服務器,不用每一個服務都單獨的創建一個集群服務。
		打標記實現方法:
			在Director 主機打標記:
				iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER
			在Director 主機基於標記定義集群服務:
				ipvsadm -A -f NUMBER [options]++++
		定義集群服務:
			ipvsadm -A -f MARK -s rr -p
			ipvsadm  -a  -f   MARK  -r  ip  -g  -w 1
		查看
			ipvsadm -Ln 
			ipvsadm -Ln --rate
				Forward:轉發方法
				Weight:權重
				ActiveConn:活動連接數
				InActiveConn:非活動連接數
				CPS:connections per seconds
				InnPPS:Input packets per seconds
				OutPPS:output packets per seconds
				InBPS:input bytes per seconds
				OutBPS:Output bytes per seconds
	3)作用:
		同一服務不同端口使用一個設置搞定
		 
	4)具體實現
		在VS上進行如下設置
			iptables -t mangle -A PREROUTING -d 192.168.74.88 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 12  
				##無論訪問VIP的80還是443端口統一打標簽為12
			iptables -t mangle -vnL 
			ipvsadm -A -f 12 -s wrr   -
				##創建一個集群服務,只要標簽是12的調度算法都是wrr
			ipvsadm -a -f 12 -r 192.168.74.129 -g -w 3  
				##將RS添加到集群服務里
			ipvsadm -a -f 12 -r 192.168.74.133 -g
			ipvsadm -Ln
		在客戶端進行測試
			curl 192.168.74.88
			curl -k https://192.168.74.88/  
				##k表示忽略證書訪問


免責聲明!

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



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