LVS 分流器
nginx 为应用层的分流企业
LVS专业做分流
lb 负载平衡器 调度器
lvs的工作模式 和区别
NAT模式 调度器通过个人ip访问公网 公网通过调度器 调度器回进行改变 源ip不会变 目标ip会进行改变
在ip层 也就是网络层 网络地址和转换
优点 可以隐藏后段的真实服务器
缺点 容易出现性能瓶颈 调度器的压力比较大
入网和出网都要经过调度器
DR模式 直接路由模式 应用最多
调度器 和交换机和路由器
客户机访问一个 ip
路由会把包传进来 交给交换机
把后台机器的ip帮在调度器上的lo口 (交互机寻找后段 调度器进行响应 从而进行调度)
调度到后段的一台机器上
又把ip绑定到后端的一台机器
回应的时候机器直接甩给网关 不用经过调度器 所以减轻了调度器的压力
地址解析界协议 arp协议
为什么两个人不能用同一个ip地址?
当我们设置ip之后 网卡会告诉交换机自己的ip 如果有人回答此ip有人在用 就会引起ip冲突
其他的后台机器绑定调度器材io端口 (环回口) 只有调度器才是一个真正的访问的ip地址
正向arp 网关到调度
代理arp 后段机器到外网 这样路由器就是一个代理arp
源mac目标和目的mac目标 数据帧
以上两种都在一个网段上
TUNNAL 模式 隧道模式 跨异地的时候比较常用
客户访问虚拟ip 后段服务器绑定lo环回端口
调度器绑定了虚拟ip 调度器把数据原封不动 在数据外层加ip头 设置新的源和目的的地址 传递给后段服务器 然后进行解包
要做实验需要打开路由转发功能
vim /etc/sysctl.conf 中 添加
net.ipv4.nat ip_forward = 1
sysctl -p 生效
sysctl -a |grep -i forward
yum -y install ipvsadm 调度器的软件
ipvsadm -A -t ip(这是就是虚拟的ip) -s rr 添加一个虚拟网卡
ipvasdm -a -t ip(虚拟的ip) -r ip(这个是真实后端的ip):80 -m(模式 nat 隧道模式 和 dr 模式) 真实的
大A是虚拟的 小a是真实的
ipvsadm -L 查看
ipvsadm -n 查看端口
DR 模式
ifconfig 网卡名字 +ip netmask 255.255.255.255 up 绑定网卡
-a +-g
到后段电脑 绑定lo回环端口
ifconfig lo:0+ip netmask 255.255.255.255 up 绑定
nat -m
dr -g
TUNNAL -i
-g
ipip协议 ip头 技术
gre 技术
隧道练习
modprobe ipip 插入模块(插入后出现tunl0 网卡
lsmode |grep ipip 过滤模块
绑定虚拟ip
ip addr add dev tunl0 30.30.30.30/32
ifconfig tunl0 up
ifconfig tunl0 up
调度ip转发功能
配置规则 -i
ipvsadm -S
去令一台机器
插入ipip模块
调度算法 -s rr论叫法
wrr 权重加法
lc 最小连接
wlc 在lc的基础上设置权重
源地址哈希
目标地址哈希 cdn 内容分发网络 整个缓存系统
keepalived 主备切换 使用多路复用io 机器你一个业务上线了两台服务器 一个坏了一个立刻补上 保证业务的可用性
为了防止lb死掉 因此设置一个组播(心跳检测 心跳线 224.0.0.18 )如果master死掉了 他会自己把自己的vrrp杀掉 然后组播里的别的服务器会自动争抢master 从而保证lb的高可用性 主备切换
vrrp就是发送hello的 用来选择主从的 如果自己死了 就不会发送hello 备机 就会自动抢走主的位置
有自己的checkd的检测办法 如http 和tcp
vim /etc/keepliave
global全局设置
通知谁 谁是管理员
你的发件人是谁
你的smtp的服务器是谁
连接多久超时
设置自己的id 特别重要 不能引起id冲突
vrrp的实例{
实例的名字可以随意
几个机器的id要设置成一样的
优先级0-255
通话间隔
密码 默认1111
虚拟ip
自己设置
}
虚拟ip 必须和上面设置的一样
指定时间
真实ip
ssl 检测
tcp检测
http检测
复制这个配置 到另一台机器
修改BACKUP
id需要修改
优先级需要修改
都是有一个问题 两台机器在故障恢复的时候有一个短暂的时间 这个问题怎么解决的 ?
在从机的backup中添加
nopreempt
然后在主机
把master改成BACKUP
也添加一个配置
nopreement 不抢占