您的位置:首页 > 运维架构 > Nginx

centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

2015-12-27 09:43 1506 查看
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

LVS核心模块就是IPVS,安装在Director上,Director就是一个路由器,他包含有完成lvs功能的路由表,通过这些路由表把用户请求分发到real server。
同时,在Director上还要安装对realserver的监控模块LDirectord(LDirectord是heartbeat里面的一个插件,还需要perl-MailTools这个rpm包),这个模块用于监测各个real server服务的健康状况, 在real server不可用时把其从lvs路由表中剔除,在恢复时再重新加入

real server可以是:Linux、Windows、Unix、BSD等系统

LVS即使其中一台web服务器挂掉,LVS依然会把请求分发到挂掉的服务器,这是LVS的缺点

LVS权重最大100 最小0

用户的登录态的保持
1、服务器间用共享存储
2、用长连接,不允许会话切换web服务器,让会话保持在一台服务器

服务器:session
客户端:cookies

三种模式区别

$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.100:80 -m -w 1 //-a增加一个real server -m NAT模式 -g dr模式 -t tun模式 -w权重

NAT模式:realserver不需要公网ip,director负责接受请求和返回请求

DR模式/TUN模式:每个realserver都需要有公网ip,返回请求不需要经过director,director只负责分发接受的请求

DR模式和TUN模式区别:TUN模式realserver和dr通信使用隧道(修改了ip包头),DR模式不使用隧道(修改MAC地址)

dip:director ip

rip:real server ip

上半节课

三种模式区别
LVS/NAT 配置
LVS/DR 配置

下半节课

LVS/DR + keepalived配置
nginx ip_hash 实现长连接
LVS是四层LB
注意down掉网卡的方法
nginx效率没有LVS高
ipvsadm命令集

! Configuration File for keepalived

global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id MySQL-HA
}

vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.92.81.164
10.92.81.165
}
}

virtual_server 10.92.81.164 3306 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.128
persistence_timeout 50
protocol TCP

real_server 10.92.81.132 3306 {
weight 3
notify_down /etc/mysql/mysql.sh
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connetct_port 3306
}
}
}

virtual_server 10.92.81.165 3306 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.128
persistence_timeout 50
protocol TCP

real_server 10.92.81.132 3306 {
weight 3
notify_down /etc/mysql/mysql.sh
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connetct_port 3306
}
}
}


View Code

负载均衡的发展历程 http://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=403078442&idx=2&sn=bd31fddfccafde520a2fb0060e9b6522&scene=0#wechat_redirect 1996 F5成立
1998 LVS项目成立
2000 HAProxy项目成立
2004 NGINX推出公共版本
2004 F5推出TMOS平台
2007 F5开始提供应用交付(ADC)产品
负载平衡、SSL卸载、压缩优化、TCP连接优化

(一)LVS的痛点
LVS最常用的有NAT、DR以及新的FULL NAT模式。上图比较了几种常见转发模式的优缺点。

我们认为LVS的每种模式都有其优点和缺点,但最大的问题是其复杂性。相信很多朋友看到这三种方式的优缺点、还有F5的单臂模式、双臂模式都会有云里雾里的感觉。

(二)LVS集群的痛点





雪上加霜的是咱们还需要考虑LVS的性能扩展和容灾方法,这使得整个方案更加的复杂。常见的有基于Keepalived的主备方式和ECMP两种。
Keepalived主备模式设备利用率低;不能横向扩展;VRRP协议,有脑裂的风险。而ECMP的方式需要了解动态路由协议,LVS和交换机均需要较复杂配置;交换机的HASH算法一般比较简单,增加删除节点会造成HASH重分布,可能导致当前TCP连接全部中断;部分交换机的ECMP在处理分片包时会有BUG。

基于DR转发方式
LVS支持四种转发模式:NAT、DR、TUNNEL和FULLNAT(FULLNAT最近新加入的模式 还为合并到内核主线),其实各有利弊。Vortex在设计之初就对四种模式做了评估,最后发现在虚拟化的环境下DR方式在各方面比较平衡,并且符合我们追求极致性能的理念。
DR方式最大的优点是绝佳的性能,只有request需要负载均衡器处理,response可以直接从后端服务器返回客户机,不论是吞吐还是延时都是最好的分发方式。
其次,DR方式不像NAT模式需要复杂的路由设置,而且不像NAT模式当client和后端服务器处于同一个子网就无法正常工作。DR的这个特性使他特别合适作为内网负载均衡。
此外,不像FULLNAT一样需要先修改源IP再使用 TOA 传递源地址,还得在负载均衡器和后端服务器上都编译非主线的Kernel Module,DR可以KISS(Keep It Simple, Stupid)地将源地址传递给后端服务器。

最后,虚拟化环境中已经采用Overlay虚拟网络了,所以TUNNEL的方式变得完全多余。而DR方式最大的缺点:需要LB和后端服务器在同一个二层网络,而这在UCloud的虚拟化网络中完全不是问题。主流的SDN方案追求的正是大二层带来的无缝迁移体验,且早已采用各种优化手段(例如ARP代理)来优化大二层虚拟网络。

f
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: