其他分享
首页 > 其他分享> > lvs

lvs

作者:互联网

lvs

核心内容

负载均衡项目 选择

star法则:表达故障/项目

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

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

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多)卡

lvs预备姿势-arp

lvs

lvs工作模式

预备姿势

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

lvs-nat模式

lvs-dr模式

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规则 备份与恢复

lvs与keepalived配合

# 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
		}
	}
}

标签:10.0,lvs,ip,ipvsadm,nginx,80
来源: https://www.cnblogs.com/weiweivip666/p/15144714.html