lvs简单使用
LB集群实现
硬件
F5
BIG-IP
Citrix NetScaler
A10
Redware
软件
1 lvs
2 haproxy
3 nginx
4 ats apache traffic server
5 perlbal
基于工作协议层次划分
传输层
lvs,haproxy(mode tcp)
应用层
naproxy, nginx, ats, perlbar
LVS基础知识
工作在传输层的软件(TCP/IP协议栈),能基于TCP和UDP(目标IP和目标PORT)对请求进行负载均衡,也称四层交换、四层路由
能根据负载均衡算法发送至后端主机集群中某一台主机
netfilter链使用
PREROUTING ---> INPUT ---> POSTROUTING
ipvsadm
用户空间命令行工具,定义集群规则,管理集群服务
ipvs
工作在内核中netfilter INPUT钩子上
ipvsadm通过系统调用将规则发送给ipvs
支持TCP、UDP、AH、EST、AH_EST、SCTP等诸多协议
查看内核编译IPVS情况
grep -i -A 10 'IPVS' /boot/config-3.10.0-693.17.1.el7.x86_64
LVS Arch
调度器:director, dispatcher, balancer
RS:Real Server
LVS Type
lvs-nat

MASQUERADE类型
多目标的DNAT模式(iptables):它通过修改请求报文的目标IP地址(必要时一并修改目标PORT)至挑选出的Real Server的IP地址实现转发
特性
1. RealServer的IP地址和DIP使用私网地址
2. 请求和响应报文都经由调度器转发,极高负载的场景中,调度器:director可能会成为系统瓶颈
3. 支持端口映射
4. RealServer可以使用任意OS
5. RIP 和 DIP 最好在同一IP网络
lvs-dr (direct routing)

GATEWAY类型
它通过修改请求报文的目标mac地址进行转发
1. 保证前端路由器将目标IP为VIP的请求报文发送给Director
静态绑定
arptables
修改RS主机的内核参数
2. RIP可以使用私网地址也可以使用公网地址,只要保证能和Director、公网通信
3. RealServer 和 Director 要在一个局域网中
4. 请求报文经由Director调度,但响应报文直接由Real Server发送
5. RealServer网关不能指向DIP
6. 不支持端口映射
7. RealServer可以用大多数OS
lvs-tun (ip tunneling)

IPIP类型 1. RIP,DIP,VIP全都是公网地址 2. RealServer的网关不能指向DIP 3. 请求报文必须由Director调度,但响应报文必须由RealServer发送 4. 不支持端口映射 5. RealServer必须支持隧道功能
lvs-fullnat

Director通过同时修改请求报文的目标地址和源地址进行转发 1. VIP是公网地址,RIP和DIP是私网地址,二者无须在同一网络中 2. Real Server 接收到请求报文的源地址为DIP,因此要响应给DIP 3. 请求报文和响应报文都经由Director 4. 支持端口映射机制 5. Real Server 可以使用任意OS
LVS Scheduler
静态方法:仅根据算法本身调度
RR
round robin,轮询
WRR
weight round robin,加权轮询
DH
destination hash,将对同一个目标的请求始终调度至同一RealServer
SH
source hash,session保持机制
动态方法:根据算法和各RealServer当前负载状态进行调度
LC
least connection,最少活动连接
Overhead(负载) = Active * 256 + Inactive
WLC
weight least connection,加权最少活动连接
Overhead = (Active * 256 + Inactive) / weight
SED
shortest expection delay,最短期望延迟
Overhead = (Active + 1 ) * 256
NQ
never queue,永不排队
SED算法改进:第一轮用SED挑,挑一个排除一个,直到所有的RS都处理过一个请求,后续的使用SED处理
LBLC
locality-based least connection,动态DH算法
正向代理情形下的cache server调度
LBLCR
Locality-Based Least-Connection with Replication,带复制功能的LBLC
ipvs集群服务
1. 一个ipvs主机可以同时定义多个cluster service 2. 一个cluster service上至少应该有一个Real Server 3. 定义cluster service时,要同时指明lvs-type、lvs scheduler
ipvsadm用法
service-address
tcp:-t ip:port
udp:-u ip:port
fwm:-f mark
server-address
ip[:port]
lvs-type
-g:gateway,dr
-i:ipip,tun
-m:masquerade,nat
scheduler
-s:默认为wlc
管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler]
ipvsadm -D -t|u|f service-address
管理集群服务的RealServer
ipvsadm -a|e -t|u|f service-address -r server-address
ipvsadm -d -t|u|f service-address -r server-address
清空和查看
ipvsadm -C
ipvsadm -L|l [options]
-n:numberic,以数字格式显示地址和端口
-c:connection,显示当前TCP连接
--stats,statistics,显示统计数据
--rate:速率
--sort:排序
--exact:精确值
保存和重载
ipvsadm -R
ipvsadm -S [-n]
置零计数器
ipvsadm -Z [-t|u|f service-address]
实例:lvs-nat
Director
VIP 192.168.111.128
DIP 192.168.1.1
RealServer(Web Server)
RIP1 192.168.1.2:8080
RIP2 192.168.1.3:8080
ipvsadm -A -t 192.168.111.128:80 -s rr
ipvsadm -a -t 192.168.111.128:80 -r 192.168.1.2 -m
ipvsadm -a -t 192.168.111.128:80 -r 192.168.1.3 -m
ipvsadm -L -n
ipvsadm -E -t 192.168.111.128:80 -s sh
ipvsadm -L -n
ipvsadm -e -t 192.168.111.128:80 -r 192.168.1.2:8080 -m
ipvsadm -e -t 192.168.111.128:80 -r 192.168.1.3:8080 -m
ipvsadm -S > /etc/sysconfig/ipvsadm || ipvsadm-save
实例:lvs-dr
Director
VIP 192.168.111.10
DIP 192.168.111.128
RealServer(Web Server)
RIP1 192.168.111.11 gw 192.168.111.1
VIP1(lo) 192.168.111.10
RIP2 192.168.111.12 gw 192.168.111.1
VIP2(lo) 192.168.111.10
LAN-ARP问题解决(多个VIP地址相同,IP地址必须唯一)
修改RealServer两个内核参数
arp_announce
0 通告自身拥有的所有地址
1 尽量避免把非本网络的地址往外通告
2 总是使用最佳地址向外通告(能解决问题)
arp_ignore
0 通告自身拥有的所有地址
1 请求报文从哪个接口进入,就用哪个接口的地址响应(能解决问题)
Director VIP Configure (alias broadcast intface_network)
ifconfig ens33:0 192.168.111.10/32 broadcast 192.168.111.10 up
route add -host 192.168.111.10 dev ens33:0
Real Server Configure (defined kernel args)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
ifconfig lo:0 192.168.111.10/32 broadcast 192.168.111.10 up
route add -host 192.168.111.10 dev lo:0
IPVS Rule
ipvsadm -A -t 192.168.111.10:80 -s rr
ipvsadm -a -t 192.168.111.10:80 -r 192.168.111.11 -g
ipvsadm -a -t 192.168.111.10:80 -r 192.168.111.12 -g
多服务负载使用同一集群
将共享同一组RS的集群服务同一进行定义
Directior
# 使用FWM定义集群
iptables -t mangle -A PREROUTING -d 192.168.111.10 -p tcp -dport 80 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -d 192.168.111.10 -p tcp -dport 443 -j MARK --set-mark 10
# iptables -t mangle -A PREROUTING -d 192.168.111.10 -p tcp -dport 22 -j MARK --set-mark 10
# 基于FWM定义集群服务
ipvsadm -A -f 10 -s rr
ipvs -a -f 10 -r 192.168.111.11
ipvs -a -f 10 -r 192.168.111.12
实例:lvs-dr (RIP,DIP不在同一网段)
加一台Route Host两个IP地址,一个能和公网通信,另一个是RIP的网关
这样即使RIP和DIP不在同一网段,也能通过这台路由器转发数据包
路由器既要对DIP到RIP的数据包进行转发,也要对VIP到CIP的数据包进行转发
RealServer高可用
防止:RS宕机而Director还继续对它进行调度
方法:让Director对其做健康状态检测机制,并根据检测的结果自动完成添加或移除等管理功能
总结
1. 基于协议层检测
网络层:icmp
传输层:检测端口的开放状态
应用层:请求获取关键性资源
2. 检查频率
3. 状态判断
下线: success ---> failure ---> failure ---> failure
上线:failure ---> success ---> success ---> success
4. 日志问题
做PV时,健康检测访问Web的日志不应该被算入正常请求日志
5. back server, sorry server
所有RS宕机时,需要反馈用户一些信息
默认sorry server weight为0,当所有RS宕机时sorry为1
解决Session保持问题
session绑定
object
source ip hash
cookies hash
lvs sh
将来自同一个用户IP的请求都定向到同一个Real Server,自行维护一个会话追踪表
lvs persistence
无论ipvs使用何种调度方法,其都能实现将来自同一个Client的请求始终定向至上一次调度时挑选出的RS
需求:持久连接模板,sourceip realserver timer,每个连接都有一个计数器, 存储在模板中,为LVS提供算法调度的参数
持久连接的实现方式
每个端口持久:PPC,单服务持久调度
每个FWM持久:PFWMC,单FWM持久调度
PORT AFFINITY
每个客户端持久:PCC,单客户端持久调度
Director会将用户的任何请求都识别为集群服务,并向RS进行调度
使用:-p指定超时时间单位s
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
session复制
...
session集群
...
session服务器
...
lvs简单使用的更多相关文章
- lvs简单配置
负载均衡服务器将会用到两块网卡,eth0为公网地址(此处将局域网ip作为公网地址),IP地址为192.168.1.104,eth0:1,IP地址为192.168.2.1在负载均衡器上添加一个ip别名, ...
- LVS简单介绍
一.LVS简介 linux virtual server简称LVS,Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器 ...
- LVS简单实现NAT&DR模型
LVS:Linux Virtual Server 一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分 ...
- keepalived+lvs简单实现
一,部署实战环节 01,服务架构图: 服务器镜像为centos6.9 02,服务安装: 10.0.0.10: 下载keeplived官方包--> http://www.keepalived. ...
- LVS简单理解
LVS LVS(Linux Virtual Server)即Linux虚拟服务器 目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案 终端用户 ...
- LVS简单搭建(一)
先说一个坑: 192.168.65.110为虚拟ip,在主节点设置(ifconfig eth0:8 192.168.65.110/24),其他子节点要与主节点保持一致(ifconfig lo:3 ...
- linux高级技巧:heartbeat+lvs(一)
1.heartbeat一个简短的引论: Heartbeat 项目是 Linux-HA project的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组 ...
- Linux运维主流架构简单剖析
随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如CentOS.RedHat.Ubuntu.Fedora等等,成千上亿个网站涌现在当今互联网,互联网 ...
- LVS详细介绍以及遇到的坑
LVS详细介绍以及遇到的坑 一,概述 本文介绍了我搭建LVS集群的步骤,并且在使用LVS(Linux Virtual Server)过程中遇到的问题和坑, 二,LVS简单介绍 大家都知道,LVS中文意 ...
随机推荐
- POJ 2311 Cutting Game [Multi-SG?]
传送门 题意:n*m的纸片,一次切成两份,谁先切出1*1谁胜 Multi-SG? 不太一样啊 本题的要求是后继游戏中任意游戏获胜就可以了.... 这时候,如果游戏者发现某一单一游戏他必败他就不会再玩了 ...
- 数据分析之pandas教程-----概念篇
目录 1 pandas基本概念 1.1 pandas数据结构剖析 1.1.1 Series 1.1.2 DataFrame 1.1.3 索引 1.1.4 pandas基本操作 1.1.4. ...
- ASCII Art (English)
Conmajia, 2012 Updated on Feb. 18, 2018 What is ASCII art? It's graphic symbols formed by ASCII char ...
- Centos-7 + Docker-1.12 中 devicemapper + direct_lvm 的 Docker 存储配置
html,body { font-size: 12pt } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...
- markdown语法探究
\[\sum_{i=1}^n a_i=0\] \[f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2 \] \[\sum^{j-1}_{k=0 ...
- zabbix客户端一键安装脚本
#!/bin/bash #通过命令行参数指定if [ ! -z "$1" ];then ip=$1 echo "手动指定IP:$ip"else#根据默认路由获取 ...
- C# 托管堆和垃圾回收器GC
这里我们讨论的两个东西:托管堆和垃圾回收器,前者是负责创建对象并控制这些对象的生存周期,后者负责回收这些对象. 一.托管堆分配资源 CLR要求所有的对象都从托管堆分配.进程初始化时,CLR划出一个地址 ...
- Git环境配置+VSCode中文乱码问题
异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 1.VSCode中文乱码问题 (files.autoguessEncoding= ...
- VSCode插件MSSQL教程(昨天提了一下)
推荐一个跨平台SQL IDE:https://docs.microsoft.com/zh-cn/sql/sql-operations-studio/download 什么数据库都木有(系统自带的不算) ...
- Linux下 开启防火墙端口
命令行输入: vi /etc/sysconfig/iptables 将 -A INPUT -m state --state NEW -m tcp -p tcp --dport 端口号 -j ACCEP ...