Linux项目_LVS_DR调度模型+keepalived

Linux项目_LVS_DR调度模型

一.基本概念

1.负载均衡技术

LVS中文站点:http://zh.linuxvirtualserver.org/

这里写图片描述

这里写图片描述

2.LVS简单介绍

(1)概念

  • LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。

(2)八大调度算法

LVS 的负载调度算法 在内核中的连接调度算法上,IPVS 已实现了以下八种调度算法:

一. 轮叫调度(Round­Robin Scheduling)

轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行 i = (i + 1) mod n,并选出第 i 台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

二.加权轮叫调度(Weighted Round­Robin Scheduling)

加权轮叫调度 (Weighted Round­Robin Scheduling)算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为 1。假设服务器 A 的权值为1,B 的 权值为 2,则表示服务器 B 的处理性能是 A 的两倍。加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服 务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。

三.最小连接调度(Least­Connection Scheduling)

最小连接调度(Least­ Connection Scheduling)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务 器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加 1;当连接中止或超时,其连接数减一。

四.加权最小连接调度(Weighted Least­Connection Scheduling)

加权最小连接调 度(Weighted Least­Connection Scheduling)算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为 1,系统管理员可以动态地设置服务器的权 值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。

五.基于局部性的最少链接(Locality­Based Least Connections Scheduling)

基 于局部性的最少链接调度(Locality­Based Least Connections Scheduling,以下简称为LBLC)算法是针对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群中 客户请求报文的目标 IP 地址是变化的。这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标 IP 地址的 请求调度到同一台服务器,来提高各台服务器的访问局部性和主存 Cache 命中率,从而整个集群系统的处理能力。LBLC 调度算法先根据请求的目标 IP 地址 找出该目标 IP 地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于其一半的工 作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

六.带复制的基于局部性最少链接(Locality­Based Least Connections with Replication Scheduling)

复制的基于局部性最少链接调度(Locality­Based Least Connections with Replication Scheduling,以下简称为 LBLCR)算法也是针对目标 IP 地址的负载均衡,目前主要用于 Cache集群系统。
它与 LBLC 算法的不同之处是它要 维护从一个目标 IP 地址到一组服务器的映射,而 LBLC 算法维护从一个目标 IP 地址到一台服务器的映射。对于一个“热门”站点的服务请求,一台 Cache 服务器可能会忙不过来处理这些请求。这时,LBLC 调度算法会从所有的Cache 服务器中按“最小连接”原则选出一台 Cache 服务器,映射该“热门”站 点到这台 Cache 服务器,很快这台 Cache 服务器也会超载,就会重复上述过程选出新的 Cache 服务器。这样,可能会导致该“热门”站点的映像会出现 在所有的 Cache 服务器上,降低了 Cache 服务器的使用效率。
LBLCR 调度算法将“热门”站点映射到一组 Cache 服务器(服务器集合),当该“热门”站点的请求负载增加时,会增加集合里的 Cache 服务器,来处理不断增长的负载;当该“热门”站点的请求负载降低时,会减少集合里的 Cache 服务器 数目。这样,该“热门”站点的映像不太可能出现在所有的 Cache 服务器上,从而提供 Cache 集群系统的使用效率。LBLCR 算法先根据请求的目标 IP 地址找出该目标 IP 地址对应的服务器组;按“最小连接”原则从该服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载;则按 “最小连接”原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服 务器从服务器组中删除,以降低复制的程度。

七.目标地址散列调度(Destination Hashing Scheduling)

目标地址散列调度 (Destination Hashing Scheduling)算法也是针对目标 IP 地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标 IP 地址映射到一台服务
器。目标地址散列调度算法先根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

八.源地址散列调度(Source Hashing Scheduling)

源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反,它根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法 的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标 IP 地址换成请求的源 IP 地址,所以这里不一一叙述。在实际应用中,源地址散列 调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。

3.keepalived

(1)介绍

keepalived 软件起初是专为LVS 负载均衡软件设计的,用来管理并监控LVS集群中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能,因此。keepalived除了能够管理LVS软件之外,还可以作为其他服务的高可用解决方案
keepalived 软件主要通过VRRP协议实现高可用的功能。VRRP是virtual router redundancy protocol (虚拟冗余路由协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障的问题,他能够保证当个别节点宕机时,整个网络可以不间断的运行。

(2)VRRP 的工作模式

1 VRRP 虚拟冗余路由协议,解决静态路由的单点故障
2 通过竞选机制将路由任务交给某台VRRP路由器
3 VRRP采用多播IP 及224.0.0.18 实现高可用之间的通信
4 工作时主节点发包,当备节点接收不到数据包时,通过竞选backup上升为主节点。
5 VRRP 使用了加密数据,但keepalived 官方希望使用明文用户名和密码
6 keepalived 高可用是通过VRRP实现的,keepalive在服务时,只有主节点是接受资源的,备节点是停滞状态、。当主节点恢复时,备用节点将自动将数据交给主节点。

(3)keepalived 服务的三个重要功能

1 管理LVS负载均衡软件
2 实现对LVS集群节点的健康检查功能
3 作为系统网络服务的高可用功能

二.DR(直连)轮叫

1.准备三台虚拟机

server1 172.25.0.1
server2 172.25.0.2
server3 172.25.0.3

2.在server1中搭建yum源

vim /etc/yum.repos.d/rhel-source.repo
yum repolist

这里写图片描述

这里写图片描述

3.ipvsadm

(1)安装ipvsadm

yum install -y ipvsadm

(2).添加LocalAddress 配置

添加虚拟IP(VIP)
[server1]
ip addr add 172.25.0.100/24 dev eth0
ip addr

这里写图片描述

(3).添加ipvsadm策略

-A:添加虚拟服务 -t:添加服务地址 -s:采用的方式
(10种算法:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|)
-g:直连,默认采用直连

ipvsadm -A -t 172.25.0.100:80 -s rr
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.2:80 -g
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.3:80 -g
保存策略:
/etc/init.d/ipvsadm save
查看策略:
cat /etc/sysconfig/ipvsadm
ipvsadm -ln
分别在server2和server3上启动httpd

这里写图片描述

这里写图片描述

物理机测试:
ping 172.25.0.100
查看100的机器端口

arp -an | grep 100

这里写图片描述

可在server2和server3中执行
ip addr add 172.25.0.100/32 dev lo
再用arp -an | grep 100查看

清理缓存
curl 172.25.0.100

在物理机中执行
curl 172.25.0.100
此时的轮叫在清除缓存后失败
这里写图片描述

需要进行
server2和server3中
配置和server1一样的yum源
安装软件yum install arptables_jf.x86_64 -y

查看策略arptables -L
添加策略:
arptables -A IN -d 172.25.0.100 -j DROP
arptables -A OUT -s 172.25.0.100 -j mangle –mangle-ip-s 172.25.0.2
/etc/init.d/arptables_jf save

查看策略:
这里写图片描述

此时完成缓存处理:
在物理机中执行
arp -d 172.25.0.100
即可完成轮询
这里写图片描述

(4).调度端对后端的健康检查

[server1]
安装工具ldirectord-3.9.5-3.1.x86_64.rpm
自动检测ipvsadm策略是否正常

yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
复制配置文件模版
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/

主配置文件
vim /etc/ha.d/ldirectord.cf
/etc/init.d/ldirectord start

这里写图片描述

若done调server3
这里写图片描述

修改主配置文件
这里写图片描述

此时便不会报错
这里写图片描述

三.keepalived(高可用)

高可用HA介绍网址:http://www.linux-ha.org/wiki/Main_Page
keepalived介绍网址:http://www.keepalived.org/

(1)安装环境软件

openssl-devel
libnl3-devel
ipset-devel
iptables-devel
libnfnetlink-devel
mail

(2)源码安装

解压keepalived:
tar zxf keepalived-1.4.3.tar.gz
cd keepalived-1.4.3
./configure –prefix=/usr/local/keepalived/ –with-init=SYSV

有以下报错:缺少相关依赖性
这里写图片描述

安装libnl-devel
yum install libnl-devel.x86_64 -y

这里写图片描述

再次执行
./configure –prefix=/usr/local/keepalived/ –with-init=SYSV
make
make install

默认安装地址:
/usr/local/keepalived/
这里写图片描述

主配置文件目录
/usr/local/keepalived/etc/rc.d/init.d/keepalived
这里写图片描述

建立链接

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /bin/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

将安装好的复制给server4,复制链接

[server1]
scp -r keepalived/ server4:/usr/local/
[server4]
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /bin/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

修改配置文件
vim /etc/keepalived/keepalived.conf

这里写图片描述

ip addr del 172.25.0.100/24 dev eth0
删除策略
/etc/init.d/ldirectord stop
关闭ldirectord,防止冲突
chkconfig ldirectord off
修改配置文件vim /etc/keepalived/keepalived.conf
添加vip
这里写图片描述

/etc/init.d/keepalived start
启动服务
此时vip已经加入到文件中,重启服务自动添加
复制设置给server4

scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/

这里写图片描述

[server4]
yum install -y ipvsadm
修改backup和权限值
/etc/init.d/keepalived start
这里写图片描述

[server1]
查看ipvsadm策略
已知bug,iptables默认全部人访问
iptables -F
/etc/init.d/iptables save

这里写图片描述

[server1]
执行
echo c > /proc/sysrq-trigger
使内核崩溃
vip会自动传递到优先级系数较低的server4上
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zwhzwh0228/article/details/80082852
今日推荐