LVS负载均衡

LVS

调度器

我们通常访问的大型系统的IP地址,解析域名后得到的IP地址,不是真正工作的服务器IP,而是LVS(调度器)IP,叫做VIP
LVS(调度器)决定访问哪个工作的服务器IP(real server,检查RIP)


Cluster概念

就是集群

在这里插入图片描述


LB

负载均衡集群

在这里插入图片描述


HA

高可用集群

高可用两个调度器,Down掉一个,另一个还可以用


HPC

高性能集群


Cluster–基于软件/硬件分类

在这里插入图片描述


Cluster—基于工作的协议层次划分

在这里插入图片描述


负载均衡中的会话保持

  • Session绑定:
    • Source IP(源地址)-----不均衡
    • Cookie------同Cookie被调到同一服务器
  • session replication:每台服务器拥有全部session
    • session multicast cluster–会话多播集群-----服务器资源占用较多
  • session server:专门的session服务器(推荐)
    • Memcached,Redis—需要主从服务器,防止session服务器宕机

HA集群实现方法

避免调度器单点失败

  • keepaliverd:vrrp协议
    • LVS天生一对,是非常优秀的解决LVS单点失败的解决方案
  • ais:应用接口规范----已淘汰
    • heartbeat
    • cman+rgmanager(RHCS)
    • coresync_pacemaker

LVS简介

LVS:Linux Virtual Server,负载调度器,集成在Linux内核中。
发明人:阿里 章文嵩


LVS集群类型中的术语:

  • VS:Virtual Server / Director Server(DS)
    • Dispatcher(调度器),Load Balancer(负载均衡器)
  • RS:Real Server(真实服务器)/upstream server(ngnix里叫:上游服务器)
    • backend server(haproxy里叫:后端服务器)
  • CIP:Client IP(客户端IP)
  • VIP:Virtual Server IP VS外网的IP
  • DIP:Director IP VS(调度器)连接内网的IP
  • RIP:Real Server IP 真实服务器的内网IP
  • L4: 四层路由器或交换机

访问流程

CIP(客户端IP)<—>VIP(VS外网IP)==DIP(VS内网IP)<—>RIP(后端服务器内网IP)


LVS工作原理

VS根据请求报文的目标IP目标协议目的地端口将其调度转发至某RS,根据调度算法来挑选RS


LVS负载均衡算法

  • rr : 轮询算法
  • wrr : 加权轮询算法
  • lc : 最少连接
  • wlc : 默认的调度算法
  • lblc :
  • lblcr :
  • dh : 目标地址哈希
  • sh : 源地址哈希
  • sed : 最低延迟
  • nq : 从不排队

在这里插入图片描述


LVS集群的类型

ipvsadm/ipvs 是命令行工具,需要安装

  • LVS:ipvsadm/ipvs
    • ipvsadm: 用户空间的命令行工具,规则管理器
      • 用于管理集群服务RealServer(真实服务器)
    • ipvs:工作于内核空间netfilterINPUT钩子上的架构

LVS三种工作模式原理、以及优缺点比较:

  • NAT模式(VS-NAT):修改请求报文的目标IP,多目标IP的DNAT
  • IP隧道模式(VS-TUN) :在原请求IP报文之外新增一个IP首部
  • 直接路由模式(VS-DR):操纵封装新的MAC地址
  • FullNAT :修改请求报文的目标IP

Centos7安装LVS

ipvsadm项目地址:http://www.linuxvirtualserver.org/

安装用于k8s的docker–配置ipvs

官方doc-IPVS 代理模式

在这里插入图片描述

https://www.cnblogs.com/Yuanbangchen/p/16533293.html
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config

# 配置ipvs功能
yum install -y ipset ipvsadm

内核问题

Linux kernel 4.19版本已经将nf_conntrack_ipv4 更新为nf_conntrack
而 kube-proxy 1.13 以下版本,强依赖 nf_conntrack_ipv4

解决方式:
1、降级内核到 4.18


加载IPVS模块

## 添加需要加载的IPVS模块
cat <<EOF >/etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
## 高版本内核nf_conntrack_ipv4被nf_conntrack替换了
# modprobe -- nf_conntrack_ipv4
modprobe -- nf_conntrack
EOF

执行脚本

## 为脚本添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules

## 执行脚本
/bin/bash /etc/sysconfig/modules/ipvs.modules

## 查看对应模块是否加载
lsmod | grep -e ip_vs -e nf_conntrack

LVS常用参数

https://www.cnblogs.com/xiangsikai/p/8865890.html
https://www.linuxcool.com/ipvsadm

-L|-l list the table
-n 地址和端口以数字输出
-C 清除所有的虚拟服务规则
-A 添加一个虚拟服务
-E 修改虚拟服务器
-D 删除虚拟服务
-t 指定tcp协议
-u 指定udp协议
-s 指定调度算法,rr轮询算法
-a 在一个虚拟服务中添加一个新的RS(真实服务器)
-r RS(真实服务器)IP地址
-g 指定LVS 的工作模式为直接路由模式
-w RS(真实服务器)权重值
-e 编辑某个RS(真实服务器)


查看lvs配置规则

# 查看配置 
## -L|-l  list the table
## -n  地址和端口以数字输出
ipvsadm -ln

清空所有配置

# 清空所有配置
## -C 清除所有的虚拟服务规则
ipvsadm -C

管理虚拟服务(listener)

常用负载均衡算法
在这里插入图片描述


添加一个虚拟服务(listener),使用轮询算法(rr):

# 添加一个虚拟服务(listener),使用轮询算法
## -A 添加一个虚拟服务
## -t 指定tcp协议 
## -u 指定udp协议
## -s 指定调度算法,rr是轮询算法
ipvsadm -A -t 192.168.11.60:80 -s rr

## IPV6要用方括号扩起来
## sed 最小延迟
ipvsadm -A -t [2001:250:4000:2000::50]:888 -s sed

修改虚拟服务(listener)的算法为加权轮询(wrr):

## -E 修改
## -t 指定tcp协议
## -s 指定调度算法,wrr是加权轮询算法
ipvsadm -E -t 192.168.11.60:80 -s wrr

查看虚拟服务列表

# 先查看有哪些虚拟服务列表
## -L|-l  list the table
## -n  地址和端口以数字输出
ipvsadm -nL

在这里插入图片描述


删除一个虚拟服务(listener)

# 删除一个虚拟服务(listener)
## -D 删除虚拟服务
## -t 指定tcp协议
ipvsadm -D -t 192.168.11.60:80

RS(后端服务器)管理


添加RS(真实服务器)-NAT模式

在一个虚拟服务中添加一个新的RS(真实服务器)

## -a 在一个虚拟服务中添加一个新的RS(真实服务器)
## -t 指定tcp协议
## -u 指定UDP协议
## -r 后端服务器IP
## -m masquerading (NAT模式)
## -w 权重值
ipvsadm -a -u 10.187.71.3:8000 -r 10.187.71.5:8000 -m -w 100

在这里插入图片描述


添加RS(真实服务器)-DR模式

DR模式内核配置:https://www.cnblogs.com/klb561/p/9215704.html

## -a 在一个虚拟服务中添加一个新的RS(真实服务器)
## -t 指定tcp协议 
## -u 指定udp协议
## -r 指定真实的服务器地址
## -g 指定LVS 的工作模式为直接路由模式
## -w 真实服务器的权值
ipvsadm -a -u 10.187.71.3:8000 -r 10.187.71.5:8000 -g -w 100

在这里插入图片描述


修改RS(真实服务器)

## -e 编辑某个真实服务器
## -t 指定tcp协议 
## -r 真实的服务器地址
## -g 指定LVS 的工作模式为直接路由模式
## -w 真实服务器的权值
ipvsadm -e -t 10.187.71.3:8000 -r 10.187.71.5:8000 -g -w 10

删除RS(真实服务器)

## -d 删除某个真实服务器
## -t 指定tcp协议
## -u 指定udp协议
## -r 真实的服务器地址
ipvsadm -d -u 10.187.71.3:8000 -r 10.187.71.5:8000

在这里插入图片描述


保存规则

lvs默认路径在/etc/sysconfig/ipvsadm文件中

# 1.保存规则到/etc/sysconfig/ipvsadm文件中
ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm

# 启动ipvsadm服务会自动保存规则
## 规则默认保存到/etc/sysconfig/ipvsadm文件中
systemctl enable --now ipvsadm

在这里插入图片描述

# 将规则导入到ipvsadm中-从/etc/sysconfig/ipvsadm文件中
ipvsadm -R < /etc/sysconfig/ipvsadm
ipvsadm-restore < /etc/sysconfig/ipvsadm

在这里插入图片描述


iptables/netfilter:

  • iptables
    • 用户空间的管理工具
  • netfilter
    • 内核空间上的架构
  • 流入
    • PREROUTING–>INPUT
  • 流出
    • OUTPUT–>POSTROUTING
  • 转发
    • PREROUTING–>FORWARD–>POSTROUTING
  • DNAT
    • 目标地址转换;PERROUTING
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值