lvs

lvs

核心内容

  • 负载均衡选项项目
  • 负载均衡 lvs工作模式
  • 部署后通过wireshark抓包

负载均衡项目 选择

star法则:表达故障/项目

  • s situation 场景/在什么情况下?
  • t task/target 目标/你要完成什么?
  • a action 动作/你是怎么做的?
  • r result 结果/最终结果如何?

使用:例子1 今天中午吃点啥?

  • s 又到了中午饭时间,不知道和谁 不知道吃什么?
  • t 吃饱
  • a 抓阄 选择1个
  • r 吃这个纸 吃饱了

使用:实际案例 故障案例:磁盘空间不足故障

  • s 在外面创建文件/添加用户失败了,提示no space left on device 磁盘空间不足
  • t 解决恢复磁盘空间
  • a
    • df -h; du -sh 一层一层排查
    • df -i; 找出系统中比较大的目录(大于1MB)或者find / -type f | xargs dirname | uniq -c | sort -rn | head
    • lsof | grep delete # catalina.out 文件没了(硬连接数0 入口没了),进程调用数
    • 排查到某个文件或目录 确认后再删除
  • r 解决故障
lsof | grep oldboy.txt

\rm -f /root/oldboy.txt
lsof | grep oldboy.txt

ls /root/oldboy.txt  # 没有那个文件或目录,保存

lsof | grep delete  # 硬连接数为0(没有入口) 进程调用数不为零的文件
Inode block inode block
文件 文件属性信息 block位置 文件的内容(数据)
目录 目录属性信息 block位置 文件名
负载均衡选择项目
s 公司演变用户量越来越多,选择负债均衡搭建多台web服务器,对比与选择负载均衡
T 选择1款 适合负载均衡
A 1.找出市面上常见负债均衡:硬件F5 A10开源软件:lvs,nginx,haproxy
2.对比
3.根据公司实际需求选择
R 根据当前访问量,选择nginx负债均衡,nginx proxy缓存
场景负载均衡对比 优势 缺点
硬件:F5 性能好 技术支持 价格昂贵 购买2台1对
lvs 工作四层效率极其高对数据做的转发 负债均衡 部署 维护(运维成本较高)
nginx 使用简单 支持4层和7层 反向代理 缓存 处理数据代理模式 替用户去查找 找到后发送给用户 并发较大(1w以上)卡
haproxy 相对复杂 支持4层和7层反向代理 处理数据代理模式 替用户去查找 找到后发送给用户 并发较大(1w以上 比nginx多)卡
  • 4层负载均衡 传输层 负载均衡最多认识到端口
  • 7层负载均衡 应用层 url uri 转发 http https

lvs预备姿势-arp

  • DNS 域名解析 域名-->ip

  • arp协议 地址解析协议 IP--->mac地址 3层协议工作在2层

    • ip(网络层 3层)
    • mac(2层)
  • arp解析过程

    • 1.发出广播请求ip对应的mac地址
    • 2.发出响应单播告诉对方我的mac地址
    • 0.7缓存1份mac地址(arp协议)
  • arp病毒

lvs

  • Sersync /jumpserver
  • Linux virtual server linux虚拟服务器 负载均衡
  • lvs放到linux内核中 内核模块ip_vs
  • 通过ipvsadm(管理命令)或keepalived(keepalived for lvs)控制管理 ip_vs内核模块

lvs

lvs工作模式

  • dr direct routing 直接路由模式
  • nat
  • tun 隧道
  • full nat 完全nat模式

预备姿势

lvs

CIP client ip 客户端ip地址
VIP 虚拟ip
DIP director 负载均衡ip
RS服务器 real server 真实服务器 处理用户请求
RIP real server ip

lvs-nat模式

lvs

lvs-dr模式

lvs

  • 特点

    • lvs dr模式中lvs只负责转发 并修改用户请求的目标mac地址 dmact
    • lvs dr模式中响应和处理是后端rs服务器处理处理直接响应给用户
    • lvs vip公网ip rs服务器也要有公网ip
    • lvs dr支持更高并发(几万 几十万) nginx(1w)
    • lvs和后端rs服务器必须要在同一个局域网
    • 用户请求过来的端口无法修改的,用户的请求是什么端口 后端rs服务器就要开端口
  • lvs nat模式特点

    • lvs与rs服务器可以不在同一局域网
    • nat模式 流量出入都要经过lvs 效率 性能不高
    • 端口也可以不同

lvs-dr 模式

环境准备

主机 服务 ip
lb01 lvs 10.0.0.5
vip vip 10.0.0.3
lb02 10.0.0.6
web01 nginx 10.0.0.7
web02 nginx 10.0.0.8
# web01 web02配置
>>> cat /etc/nginx/nginx.conf
work_processes 1;
events {
	worker_connections 1024;
}
http{
	server {
		server_name www.oldboy.com;
		listen 80;
		root /usr/share/nginx/html;
	}
}
>>> echo `hostname` > /usr/share/nginx/html/oldboy.html
>>> pkill nginx
>>> systemctl restart nginx
>>> curl 10.0.0.7/oldboy.html  # web01
>>> curl 10.0.0.8/oldboy.html # web02


# lb01  lb02关闭已经安装的nginx keepalived
>>> systemctl stop keepalived nginx
>>> systemctl disable keepalived nginx

# lb01 lb02
yum install -y ipvsadm

配置

# lb01手动添加vip  后面是由keepalived生产
ip addr add 10.0.0.3/24 dev eth0 label eth0:0

ipvsadm -C  # clear清除  # iptables -F flush

ipvsadm --set 30 5 60  # 设置tcp超时时间

# 添加命令
ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20  # -A相当于nginx中的upsteam创建连接池 -t表示规则vip:端口 -s轮询算法 wrr加权轮询 -p会话保持时间默认300秒
ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -h -w 1  # -a添加rsa服务器 -r 指定rs服务器的ip和端口 相当于nginx的upsream中的server
ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1  # -g --gatewaying  -t tcp -w 权重

# 查看
ipvsadm -ln
ipvsadm -ln --stats  # 具体流量信息

## web01 web02 webxxx
### lo网卡绑定vip
cat >/etc/sysconfig/network-scripts/ifcfg-lo:1<<EOF
DEVICE=lo:1
IPADDR=10.0.0.3
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
EOF
>>> systemctl restart netwoek

# 抑制arp解析
cat >>/etc/sysctl.conf<<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
>>> sysctl -p

# 注意:
不要在lvs本地进行测试  curl会失败
lvs 负载均衡高并发 用户与访问量巨大的时候 接近于1:1 平时测试的时候 刷新很久 一直是1台机器
一般刷新1次 等到 1-2分钟 在刷新

lvs规则 备份与恢复

  • 后面我们通过keepalived管理lvs
  • ipvsadm-save -n >/root/ipvsadm.conf
  • ipvsadm-restore < /root/ipvsadm.conf

lvs与keepalived配合

  • Keepalived for lvs
  • 配置文件分为几个部分
# GLOBAL CONFIGURATION  全局配置部分
route_iud  每个keepalived软件 独一无二 id

# VRRPD CONFIGURATION  配置vip vrrp实例部分

# LVS CONFIGURATION 配置管理lvs
# 先清除重启
systemctl restart network

# 主配置
# GLOBAL CONFIGURATION 全局定义部分
global_defs {
	router_id lb01  # keepadlived身份 id 每个keepalived 不同
}
# VRRPD CONFIGURATION vrrp实例部分 虚拟路由冗余协议
## vrrp
vrrp_instance oldboy {  # 实例名称  在同1对主备之间 要一致
	state MASTER  # MASTER BACKUP
	interface eth0 # 指定网卡 公网网卡
	virtual_router_id 62  # 虚拟路由id 同1对 主备之间要一致
	priority 100  # 优先级 主>备  相差50
	advert_int 1  # interval 间隔 心跳间隔 秒 每个1秒检查
	autherntication {  # 认证 方式
		auth_type PASS  # 简单认证
		auth_pass 1234  # 在同1对主备之间一致
	}
	virtual_ipaddress {  # vip
		10.0.0.3/24 dev eth0 label eth0:0
		# ip addr add 10.0.0.3/24 dev eth0 label eth0:0
	}
}

# 从配置
# GLOBAL CONFIGURATION 全局定义部分
global_defs {
	router_id lb02  # keepadlived身份 id 每个keepalived 不同
}
# VRRPD CONFIGURATION vrrp实例部分 虚拟路由冗余协议
## vrrp
vrrp_instance oldboy {  # 实例名称  在同1对主备之间 要一致
	state BACKUP  # MASTER BACKUP
	interface eth0 # 指定网卡 公网网卡
	virtual_router_id 62  # 虚拟路由id 同1对 主备之间要一致
	priority 50  # 优先级 主>备  相差50
	advert_int 1  # interval 间隔 心跳间隔 秒 每个1秒检查
	autherntication {  # 认证 方式
		auth_type PASS  # 简单认证
		auth_pass 1234  # 在同1对主备之间一致
	}
	virtual_ipaddress {  # vip
		10.0.0.3/24 dev eth0 label eth0:0
		# ip addr add 10.0.0.3/24 dev eth0 label eth0:0
	}
}

# LVS CONFIGURATION 管理lvs
## invsadm 通过命令
## keepalived通过配置文件控制lvs
# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20
virtual_server 10.0.0.3:80 {  # 创建组 池塘
	delay_loop 6
	lb_algo wrr  # 轮询算法 lv least conn 最小连接数
	lb_kind DR  # lvs DR模式
	nat_mask 255.255.255.0  # vip对应的子网掩码
	persistence_timeout 50 # 会话保持时间 -p
	protocol TCP  # 协议 -t

# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
	real_server 10.0.0.7:80 { # rs服务器的配置
		weight 1			# 权重
		TCP_CHECK {  # -t TCP_CHECK 检查 传输层 tcp/udp端口
		connect_timeout 8
		nb_get_retry 3  # number of get retry  重试的次数
		delay_before_retry 3 # 每次检查之前 等待3秒
		connect_port 80  # 检查端口
		
		}
	}
	real_server 10.0.0.8:80 {
		weight 1
		TCP_CHECK {
			connect_timeout 8
			nb_get_retry 3
			delay_before_retry 3
			connect_port 80
		}
	}
}

上一篇:LVS的调度算法


下一篇:串口通信pyserial