第十周LINUX 学习笔记
lvs集群nat丶dr
ha:高可用
平均无故障时间/(平均无故障时间+平均修复时间)
负载均衡
次序
lb(负载)——>ha()
lb
tcp:lvs,haproxy
应用层:nginx haproxy ats
缓存:varnish squied
ha:heartbeat,corosync keeplived iscsi gfs2 drdb
mogilefs
nosql:mongodb
集群类型:
lb:load banlancing(负载)
扩展容量,实现伸缩性
ha:high availability(高可用)
服务可用性
hp:high performace(高性能)
向量机
并发处理集群
开源方案
lb:lvs,haproxy,nginx,ats
ha:
heartbeat
corosync+pacemaker
cman+rgmanager
cman+pacemaker
keepalived
ultramonkey
hp:hadoop
lb:解决方案
硬件:
f5 big-ip
思杰 citrix netscaler
a10 a10
array
redware
软件:lvs
linux virtual server
章文嵩:正明
ipvs相当于netfilter,将用户转发
框架,需要依赖以规则完成转发
ipvs集群服务
定义一个或多个后端的服务器
ipvsadm
lvs:四层交换、四层路由
vip:
keepalived
cip
director:负载均衡器
real server
dip:跟real server交互
rip
cip<-->vip--dip<-->rip
lvs类型:
nat:-->(dnat)
dr
tun
fullnat
lvs nat的特性
1.rs的应该使用私有地址
2.rs的网关必须指向dip
3.rip和dip必须在同一网段内
4.请求和响应的报文都得经过director,在高负载场景中,director很可能成为性能凭借
5.支持端口映射
6.rs可以使用任意支持集群服务的os
lvs dr类型
1.让前段路由将请求发往vip时,只能是dirctor上的vip
解决方案
1.静态地址绑定
未必有路由器的配置权限
director调用时静态地址绑定将难以使用
2.arptables
3.修改linux内核参数,将rs上的vip配置在lo接口的别名上,限制linux仅对对应接口的arp请求做相应
lvs dr类型的特性
1.rs可以使用私有地址,还可以使用公网地址,此时可以直接通过互联网连入rs,以实现配置、监控等
2.rs的网关一定不能指向dip
3.rs跟dirctory要在同一物理网络内(不能有路由器分隔)
4.请求报文经过directory,但响应报文一定不经过director
5.不支持端口映射
6.rs可以使用大多数的操作系统
lvs tun类型:ip隧道
1.rip,dip,vip都得是公网地址
2.rs的网关不会指向也不可能指向dip
3.请求报文经过directory,但响应报文一定不经过director
4.不支持端口映射
5.rs的os必须得支持隧道功能
lvs的调度方法:10种
下午:回顾
lvs-nat,dnat
lvs-dr(direct routing)
lvs-tun:(ipip)
lns-fullnat
lvs的调度方法:10种
静态方法:仅根据算法本身进行调度
rr:round robin 轮询
wrr:weighted rr 权重轮询
sh:source hashing 源地址hash
dh:destination hashing 目标地址hash
动态方法:根据算法及rs当前的复制状态
lc:least connection 最少连接
计算当前的负载overhead=active*256+inactive来实现
wlc:weighted lc
overhead=(active*256+inactive)/weight
sed:shortest expect delay 最短期望延迟
overhead=(active+1)*256/weight
aq:nerver queus: 永不排队
lblc:locality-based least connection 基于本地的最少连接
相当于dh+lc
lblcr:基于复制的基于本地的最少连接 replicated and locality-based least connection
session持久机制
1.session绑定:始终将统一请求者的连接定向至统一rs(第一次请求时仍有调度选择):没有容错哦能力,有损均衡效果
2.session复制:在rs之间同步session,因此,每个rs持集群中所有的session;对于大服务器集群环境不适用
3.session服务器:利用单独部署的服务器来统一管理session
lns-fullnat:
lvs的集群服务:
四层交换,四层路由
根据请求目标套接字(包括端口的协议类型tcp,udp)来实现转发
ipvsadm
集群服务相关
-a:添加一个集群服务
-t:tcp
-u:udp
-f: firewall make 通常应用于将两个或以上的服务绑定为一个服务进行处理时使用
service-address
-t ip:port
-u ip:port
-f firewall_mark
-s 调度算法,默认为wlc
-p: timeout persistent connection 持久连接
-e:修改定义过的集群服务
-d -t|u|f service-address:删除指定的集群服务
rs相关
-a:向指定的cs中添加rs
-t|-u|-f service-address:指明将rs添加至那个cluster service 中
-r:指定rs,可以包含{ip[:port]},只有支持端口映射的lvs类型才允许此处使用跟集群服务中不同的端口
lvs类型:
-g:gateway,dr
-i:ipip,tun
-m:masquerade(地址伪装),nat
默认为dr
指定rs权重
-w
上限下限:
-x:下限
-y:上限
-e:修改指定的rs属性
-d -t|u|f service-address -r server-address:在指定的集群服务中删除一个指定的rs
情况所有的集群服务:
-c
保存规则(使用输出重定向):
ipvsadm-save
ipvaadm -s
载入指定的规则:(使用输入重定向)
ipvsadmin-restore
ipvasdm -r
查看ipvs规则等
-l [options]
-n 使用数字格式显示ip地址,不反解
-c:查看连接数相关信息
--stats:显示统计数据
--rate:数据传输速率
--timeout:显示tcp会话时长
--daemon:守护进程的信息
--sort:对虚拟服务进行排序,默认为升序
--exact:精确显示,不做单位换算
-z:计数器清零
lvs-dr模型
director两个地址:vip,dip
rs有两个地址:vip,rip
禁止rs响应对bip的arp广播请求
1.在前端路由上实现静态mac地址vip的绑定
前提:得有路由器的配置权限
缺点:directory故障转移时,无法更新此绑定
2.arptables
前提:在各rs在安装arptables程序i,并编写arptables规则
缺点:依赖于独特功能的应用程序
3.修改linux内核参数
前提:rs必须是linux
缺点:适用性差
两个参数:
arp_announce:定义通告模式
arp_ignore:定义收到arp请求的响应模式
配置专用路由,以使得响应报文首先通过vip所篇日志的lo上的别名接口
linux的工作特性:ip地址是属于主机,而非特定网卡
lvs-dr配置架构根据其vip与rip是否在同一个网络内有两种情况
在directory 和rs上配置vip,要使用如下格式
ifconfig alias vip netmask 255.255.255.255 broadcast vip
route add -host vip dev
lvs-dr的配置
director
iptables -t filter -f
ifconfig eth0:0 vip netmask 255.255.255.255 broadcast vip up
route add -host vip dev eth0:0
rs:
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 vip netmask 255.255.255.255 broadcast vip up
route add -host vip dev eth0:0
director:
ipvsadm -a -t ip:port -s scheduler
ipvsadm -a -t ip:port -r rs1 -g
lvs持久连接、dr、防火墙标记
vip 与dip 不在同一网段
dip 和rip在同一网段
lvs持久连接
源地址hash
ipvs的连接模板 可以通过ipvsadm -l -c
持久连接
持久客户端连接 pcc:在固定时间内将来自于同一个客户端发往vip的所有请求统统定向至同一个rs
0表示所有端口
持久端口连接 ppc:将来着余同一个客户端发往某vip的某端口的所有请求统统定向至同一个rs
-p 指定时间
持久防火墙标记连接pfmc:port affinity
基于防火墙标记,将两个或以上的端口绑定为同一个服务
iptables -t mangle -a prerouting -d 172.16.100.8 -p tcp --dport 80 -j mark --set-mark 10
iptables -t mangle -a prerouting -d 172.16.100.8 -p tcp --dport 443 -j mark --set-mark 10
ipvsadm -a -f 10 -s rr
ipvsadm -a -f 10 -r 172.16.100.11 -g
ipvsadm -a -f 10 -r 172.16.100.11 -g
ipvsadm -e -f 10 -s rr -p 1200
ipvs集群两个问题
1.后端rs的监控状态检测?
1.脚本
2.keepalived,ldorectord
2.director自身的可用性?
1.ldirectord(heartabeat,corosync)
2.keeplived
手动脚本检测
1.某rs故障时,要检测至少三次才能让且下线,而重新上线时,只需要检测一次
2.如何让脚本有更好的适应性
推荐阅读
-
linux 学习第十四天(Apache安装、基于ip、基于域名、基于端口配置)
-
第三周LINUX学习笔记
-
Linux学习笔记(十四)磁盘管理(二):格式化、挂载以及Swap分区
-
Linux计划任务Crontab学习笔记(5):常见错误使用案例
-
Linux计划任务Crontab学习笔记(3):配置文件
-
Linux学习笔记(十一)shell基础:管道符、通配符和其他特殊符号
-
Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向
-
linux 学习第十八天学习(DNS分离解析、DHCP配置、邮件服务配置)
-
Linux计划任务Crontab学习笔记(2):基本组成与配置
-
Linux计划任务Crontab学习笔记(4):crontab 的日志