集群的分类:
1.)LB Load Balancing 负载均衡集群
常见例子:LVS和piranha
2.)HA High Availability 高可用集群
常见例子:heartbeat,keepalived和ultramokey
3.)HP High Performance 高性能集群
常见例子:bowerful和drbd
LVS的优点:
1.)LVS具有更大的吞吐量
2.)LVS有冗余设备和链路
3.)LVS有强大的扩展性和适应性
LVS的IP:
1.)VIP 虚拟IP,是一个公网IP ,外网用户所见到的IP
2.)RIP realserver的IP
3.)DTP Director的IP
4.)CIP Client computer的IP
LVS的三种类型:
第一种,LVS-NAT
1.)real servers它们必须在同一个网段内
2.)RIP通常是私有IP
3.)Director将处理所有的会话、通信(包括内网和外网交互的所有数据)
4.)real servers必须指定网关为DIP
5.)Director可做端口重定向
6.)对操作系统不作要求
7.)Director很可能成为瓶颈
第二种,LVS-DR
1.)real servers必须和Director在同一个网段内
2.)RIP可以不是私有的
3.)Director只处理进来的通信
4.)real servers不能以DIP为网关
5.)大多数操作系统支持此模式
6.)当director坏掉时,realserver可作分布式服务
第三种,LVS-TUN
1.)Director和real servers可以在不同的网段内
2.)RIP不能是私有地址
3.)Director不能做端口重定向
4.)操作系统必须是双方都支持隧道协议
LVS的调度方法:
一.固定算法
1.)Round-robin rr 轮调
新的连接请求被轮流分配至各RealServer;算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度
2.)Weighted Round-robin wrr 加权轮调
3.)Destination hasing dh 目标地址散列调度
4.)Source hasing sh 源地址散列调度
在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口
二.动态调度算法:跟踪处于活动状态和非活动状态的连结;活动状态连结处于TCP的ESTABLISHED状态,非活动状态连结是处于ESTABLISHED状态;当非活动状态连结超时时,则可引起连接断开,但LVS保留状态一段时间,保护了数据的完整应。
1.)Least-connection lc 最少连接次数
“当前连接数=256*活动连接数+非活动连接数”谁的当前连接数小就把下一次连接交给谁
2.)Weighted Least-connection wlc
“当前连接数=(256*活动连接数+非活动连接数)/权重”谁的当前连接数小就把下一次连接交给谁
3.)SED sed wlc的改进版,不加入非活动连接
“当前连接数=活动连接数/权重”谁的当前连接数小就把下一次连接交给谁
4.)NQ nq 不排队算法
5.)LBLC lblc 基于局部性的最少链接调度
“动态的方式实现dh”
6.)LSLCR lblcr 带复制的基于局部性最少链接调度
避免了某台服务器过忙;若一台服务器的工作量是另一台服务器的两倍,则将不会使用lblc算法,而会把下一次连接交给工作量小的服务器
三种重要的超时:
1.)空闲的TCP会话超时:处于TCP的ESTABLISHED状态,不转发数据包
2.)双方正常断开时的超时时间:使客户端能够访问几分钟之前访问到的real server,应用于邮件系统、网购、论坛;默认超时时长为30s
3.)UDP的超时时间:防止网络抖动等问题引起客户端访问的real server发生改变
LVS持续连接类型:
1.)PCC 客户端持久连接;一个客户端的所有服务请求都连接同一个real server
2.)PPC 服务端持久连接;客户端访问的同一个服务都被定义到同一个real server
3.)PNMPP 数据包持久连接;根据防火墙标记进行持久连接
4.)FTP connections 关于FTP的持久连接
5.)Expired persistence 过期持久连接
关于ipvsadm:
ipvsadm是运行于用户空间、用来与ipvs交互的命令行工具,它的作用表现在:
1、定义在Director上进行dispatching的服务(service),以及哪此服务器(server)用来提供此服务;
2、为每台同时提供某一种服务的服务器定义其权重(即概据服务器性能确定的其承担负载的能力);
ipvsadm的命令:
ipvsadm
-A 定义一个新服务
-C 清空虚拟服务表
-D 删除一个服务
-R 从一个文件来恢复服务规则
-E 修改一个服务
-L 查看ipvsadm的规则
-S 保存ipvsadm的设置
-Z 清空计数器
-a 对服务添加一个realserver
-e 修改一条服务的规则
-t tcp协议 VIP:port
-u udp协议 VIP:port
-s 指定调度方法
-d 删掉一条规则链
-f 防火墙标记
-x 请求连接的上限
-y 请求连接的下限
搭建一个LVS-NAT类型的LVS
在搭建LVS-NAT类型的LVS之前首先要准备4个虚拟机:Director、realserver1、realserver2、client。其中Director主机有两块网卡,其它主机只需要一块网卡;Director的2个IP分别为192.168.0.28和172.16.0.1,realserver1的IP分别为172.16.0.2,realserver2的IP为172.16.0.3,client的IP为192.168.0.29
Director的配置:
1.)安装ipvsadm
yum install ipvsadm
2.)配置防火墙
service iptables start
iptables -F
service iptables save
3.)配置ipvsadm
ipvsadm -A -t 192.168.0.28:80 -s wlc
ipvsadm -a -t 192.168.0.28:80 -r 172.16.0.2 -m -w 2
ipvsadm -a -t 192.168.0.28:80 -r 172.16.0.3 -m -w 1
realserver1的配置:
1.)装上httpd服务,启动httpd服务
yum install httpd
echo "realserver1" > /var/www/html/index.html
service httpd start
chkconfig httpd on
2.)配置IP地址,别忘了配置网关为172.16.0.1
realserver2的配置:
1.)装上httpd服务,启动httpd服务
yum install httpd
echo "realserver1" > /var/www/html/index.html
service httpd start
chkconfig httpd on
2.)配置IP地址,别忘了配置网关为172.16.0.1
测试:
1.)使用client在浏览器上输入"http://192.168.0.28",打开网页不断刷新网页
2.)在Director主机上输入命令`watch -n 1 "ipvsadm -L -n"`进行监控
搭建一个LVS-DR类型的LVS
在搭建LVS-DR类型的LVS之前首先要准备4个虚拟机:Director、realserver1、realserver2、client。其中所有主机只需要一块网卡;Director的IP为192.168.0.27及VIP为192.168.0.28,realserver1的IP分别为192.168.0.1,realserver2的IP为192.168.0.2,client的IP为192.168.0.29
Director的配置:
1.)安装ipvsadm
yum install ipvsadm
2.)配置防火墙
service iptables start
iptables -F
service iptables save
3.)设置eth0设备别名eth0:1的IP为VIP
ifconfig eth0:1 192.168.0.28 broadcast 192.168.0.28 netmask 255.255.255.255
route add -host 192.168.0.28 dev eth0:1
4.)配置ipvsadm:
ipvsadm -A -t 192.168.0.28:80 -s wrr
ipvsadm -a -t 192.168.0.28:80 -r 192.168.0.1 -w 5 -g
ipvsadm -a -t 192.168.0.28:80 -r 192.168.0.2 -w 50 -g
realserver1的配置:
1.)重启lo回环网卡
ifdown lo
ifup lo
2.)修改arp_ignore和arp_announce的限制级别
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
3.)在回环网卡上创建别名为VIP
ifconfig lo:0 192.168.0.28 broadcast 192.168.0.28 netmask 255.255.255.255 up
route add -host 192.168.0.28 dev lo:0
realserver2的配置:同realserver1的配置
测试:
1.)使用client在浏览器上输入"http://192.168.0.28",打开网页不断刷新网页
2.)在Director主机上输入命令`watch -n 1 "ipvsadm -L -n"`进行监控