• 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表示忽略证书访问
    
  • 相关阅读:
    Node Express4.x 片段视图 partials
    SVG知识难点
    MongoDB的安装和配置成服务的三种方法和一些难点
    git的使用
    单击获取索引的两种方式
    IOTA初识
    开始写博客啦
    虚拟化技术
    可信计算概论
    负载均衡
  • 原文地址:https://www.cnblogs.com/shenxm/p/8461257.html
Copyright © 2020-2023  润新知