什么是集群?
集群,是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。集群的工作方式类似于人们之间的协同工作。
lvs-nat集群是一种最简单的集群。他的结构类似于linux透明代理服务器。
lvs-nat模式:
本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统
实现vs-nat简单模式集群:
首先让我们了解下集群中或用到术语及命令:
lvs集群类型中的术语:
VS:Virtual Server, Director, Dispatcher(调度器),Load Balancer
RS:Real Server(lvs), upstream server(nginx),backend server(haproxy)
CIP:Client IP
VIP: Virtual serve IPVS外网的IP
DIP: Director IPVS内网的IP
RIP: Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
命令的介绍:
lvs: ipvsadm/ipvs
ipvsadm:用户空间的命令行工具,规则管理器
用于管理集群服务及RealServer
ipvs:工作于内核空间netfilter的INPUT钩子上的框架
程序包:ipvsadm
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvsadm命令:
核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改
查看
ipvsadm-A|E -t|u|fservice-address [-s scheduler] [-p [timeout]] [-M netmask] [--pepersistence_engine] [-b sched-flags]
ipvsadm-D -t|u|fservice-address 删除
ipvsadm–C 清空
ipvsadm–R 重载
ipvsadm-S [-n] 保存
ipvsadm-a|e-t|u|fservice-address -r server-address [options]
ipvsadm-d -t|u|fservice-address -r server-address
ipvsadm-L|l[options]
ipvsadm-Z [-t|u|fservice-address]
管理集群服务:增、改、删
增、改:
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]:指定集群的调度算法,默认为wlc
管理集群上的RS:增、改、删
增、改:ipvsadm-a|e-t|u|fservice-address -r server-address [-g|i|m] [-w weight]
删除:ipvsadm-d -t|u|fservice-address -r server-address
server-address:
rip[:port]如省略port,不作端口映射
选项:
lvs类型:
-g: gateway, dr类型,默认
-i: ipip, tun类型
-m: masquerade, nat类型
-w weight:权重
其他一些命令
清空定义的所有内容:ipvsadm–C
清空计数器:ipvsadm-Z [-t|u|fservice-address]
查看:ipvsadm-L|l[options]
--numeric, -n:以数字形式输出地址和端口号
--exact:扩展信息,精确值
--connection,-c:当前IPVS连接输出
--stats:统计信息
--rate :输出速率信息
ipvs规则:/proc/net/ip_vs
ipvs连接:/proc/net/ip_vs_conn
保存:建议保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm-S > /PATH/TO/IPVSADM_FILE
systemctlstop ipvsadm.service
重载:
ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm-R < /PATH/FROM/IPVSADM_FILE
systemctlrestart ipvsadm.service
一、实验环境:
规划:5台centos7 防火墙关闭或清空 iptables -F
client : ip:192.168.18.130
route ip :eth0 192.168.18.131 eth1 192.168.114.129
VS ip:(VIP)eth0 192.168.114.128 (DIP)eth1 192.168.179.131
RS1 ip: 192.168.179.130
RS2 ip:192.168.179.128
简单环境拓扑图:
二、实现网络的连通
在客户端上添加网关:
route add default gw 192.168.18.131 //网关指向路由
在路由器上添加路由:
route add -net 192.168.179.0/24 gw 192.168.114.128
在VS中添加路由:
route add -net 192.168.18.0/24 gw 192.168.114.129
在RS1中添加路由:
route add default gw 192.168.129.131
在RS2中添加路由:
route add default gw 192.168.129.131
其中RS1与RS2添加相同 网关是接收数据,处理数据后返回。
在route与VS中开启转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward 这只是临时生效永久修改配置文件
在/etc/sysctl.conf中添加 net.ipv4.ip_forword=1 ,运行sysctl -p 立即生效。
三、设置VS
ipvsadm -A -t 192.168.114.128 -ss rr //增加集群使用模式为roundrobin,轮询
ipvsadm -a -t 192.168.114.128 -r 192.168.179.130 -m 添加RS ,-m使用nat类型。
ipvsadm -a -t 192.168.114.128 -r 192.168.179.128 -m
ipvsadm -Ln 查看
[root@cnetos7 ~]#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.114.128 rr
-> 192.168.179.128:80 Route 1 0 0
-> 192.168.179.130:80 Route 1 0 0
修改:
iptables -E -t 192.168.114.128 -ss wrr //Weighted RR,加权轮询
ipvsadm -e -t 192.168.114.128 -r 192.168.179.130 -m -w 3
到这里就简单的实现了vs-nat的简单集群!
LVS集群的特点可以归结如下:
功能
1.有实现三种IP负载均衡技术和八种连接调度算法的IPVS软件。在IPVS内部实现上,采用了高效的Hash函数和垃圾回收机制,能正确处理所调度报文相 关的ICMP消息(有些商品化的系统反而不能)。虚拟服务的设置数目没有限制,每个虚拟服务有自己的服务器集。它支持持久的虚拟服务(如HTTP Cookie和HTTPS等需要该功能的支持),并提供详尽的统计数据,如连接的处理速率和报文的流量等。针对大规模拒绝服务(Deny of Service)攻击,实现了三种防卫策略。
有基于内容请求分发的应用层交换软件KTCPVS,它也是在Linux内核中实现。有相关的集群管理软件对资源进行监测,能及时将故障屏蔽,实现系统的高可用性。主、从调度器能周期性地进行状态同步,从而实现更高的可用性。
2.适用性
后端服务器可运行任何支持TCP/IP的操作系统,包括Linux,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。
负载调度器能够支持绝大多数的TCP和UDP协议:
协议 内 容
TCP HTTP,FTP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等
UDP DNS,NTP,ICP,视频、音频流播放协议等
无需对客户机和服务器作任何修改,可适用大多数Internet服务。
3.性能
LVS服务器集群系统具有良好的伸缩性,可支持几百万个并发连接。配置100M网卡,采用VS/TUN或VS/DR调度技术,集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。
4.可靠性
LVS服务器集群软件已经在很多大型的、关键性的站点得到很好的应用,所以它的可靠性在真实应用得到很好的证实。有很多调度器运行一年多,未作一次重启动。
5.软件许可证
LVS集群软件是按GPL(GNU Public License)许可证发行的自由软件,这意味着你可以得到软件的源代码,有权对其进行修改,但必须保证你的修改也是以GPL方式发行。