负载均衡vs反向代理区别

功能(原理)

  • 负载均衡 lvs 请求做转发
  • 反向代理 Nginx Haproxy 代替(代理)用户去请求,得到相应再返回给用户

4层vs7层

层:OSI7层模型

7层 相关内容
应用层 协议:http https
表示层
会话层
传输层 tcp/udp 端口
网络层 IP地址
数据链路层 MAC地址
物理层 0010101

4层 LVS nginx(1.9) haproxy
7层 nginx haproxy

ARP协议

arp基础知识

DNS 域名---->ip地址 域名解析服务/系统 Domain Name Service/System ARP ip--------->MAC地址 地址解析协议 Address Resolution Protocol

arp解析过程

  1. 发出广播消息 查询ip对应的mac地址
  1. 对应的机器会用单播的方式把自己的mac告诉对方
  2. 用户自己留1个arp缓存
[root@m01 ~]# arp -d 10.0.0.51
[root@m01 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.16.1.51              ether   00:0c:29:c5:c1:17   C                     eth1
10.0.0.254               ether   00:50:56:ea:dd:9e   C                     eth0
10.0.0.1                 ether   00:50:56:c0:00:08   C                     eth0
[root@m01 ~]# ping 10.0.0.51
PING 10.0.0.51 (10.0.0.51) 56(84) bytes of data.
64 bytes from 10.0.0.51: icmp_seq=1 ttl=64 time=0.443 ms
64 bytes from 10.0.0.51: icmp_seq=2 ttl=64 time=0.235 ms
^C
--- 10.0.0.51 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.235/0.339/0.443/0.104 ms
[root@m01 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.16.1.51              ether   00:0c:29:c5:c1:17   C                     eth1
10.0.0.51                ether   00:0c:29:c5:c1:0d   C                     eth0
10.0.0.254               ether   00:50:56:ea:dd:9e   C                     eth0
10.0.0.1                 ether   00:50:56:c0:00:08   C                     eth0
image.png

抓包显示:arp解析过程

linux 下面抓包 :wireshark抓包流程
安装:yum install -y wireshark

[root@m01 ~]# arp -d 10.0.0.51
[root@m01 ~]# tshark -i eth1 -f arp
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth1'1 0.000000000 Vmware_bd:29:63 -> Vmware_c5:c1:17 ARP 42 Who has 172.16.1.51?  Tell 172.16.1.612 0.000142710 Vmware_c5:c1:17 -> Vmware_bd:29:63 ARP 60 Who has 172.16.1.61?  Tell 172.16.1.513 0.000157753 Vmware_bd:29:63 -> Vmware_c5:c1:17 ARP 42 172.16.1.61 is at 00:0c:29:bd:29:634 0.000318272 Vmware_c5:c1:17 -> Vmware_bd:29:63 ARP 60 172.16.1.51 is at 00:0c:29:c5:c1:17

tshark (wireshark)
-i 指定网卡 默认第1个网卡(非lo)
-f 指定过滤规则
-w 保存抓包的内容到文件中
抓包过滤语法 man wireshark-filter

问题: arp协议 3层?2层?
ip --- > mac arp三层协议 工作在2层 3层ip----->2层mac地址

arp病毒 arp欺骗

原理

image.png

预防:
1.mac地址与ip地址绑定
2.使用企业安全软件

LVS相关名词

  • CIP Client IP
  • VIP Virtual -p
  • DIP Director 负载均衡IP
  • RS服务器 Real Server 真实服务器
  • RIP Real Server IP 地址

LVS 4个模式

LVS Linux Virtual Server 章文嵩
lvs 被写到Linux 内核中 ip_vs
通过:keepalived (配置文件) 或ipvsadm (命名) 进行控制
ipvsadm ipvs admin
国产开源软件有
Sersync
Jumpserver
MyCA

DR模式

1.原理

image.png

2.特点:

  1. lvs dr模式中 负责修改目标IP(VIP)mac地址 改为后端RS服务器的mac
  2. dr模式中 lvs主要处理用户的请求,响应通过后端rs服务器直接给用户
  3. LVS 与 后端RS服务器要在同一个局域网(网段)
  4. DR模式中 RS服务器公网ip地址
  5. 需要注意RS节点的VIP的绑定(lo:vip/32)和ARP抑制问题。
  6. 由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求报文的目的端 口。LVS DR模式的办公室在二层数据链路层(MAC),NAT模式则工作在三层网络层(IP)和四 层传输层(端口)

NAT 模式

1.原理

image.png

2.特点:

  1. NAT Network Address Translation 网络地址转换
  2. 开启内核转发功能 net.ipv4.ip_forward = 1 #/etc/sysctl.conf
  3. NAT模式中 可以实现 端口转发 请求80 后端转发为 8080
  4. lvs与后端RS服务器 可以不在一个局域网
    TUN隧道模式
    FULL NAT模式
    http://zh.linuxvirtualserver.org
ipvsadm
-C 清除所有规则
-A nginx创建池塘
-t tcp协议
-s scheduler 轮询算法 rr(轮询) wrr(加权轮询)
-p persistent 会话保持的时间 20秒 默认是300s
-a 添加RS服务器 (nginx server)
-r 指定rs服务器ip
-g --gatewaing 使用DR模式 Directing Routing
-w weight 权重
-n 不把ip解析为服务名
-l 查看规则

LVS-DR模式

1.环境准备

主机名 ipeth0
lb01 10.0.0.5
lb02 10.0.0.6
web01 10.0.0.7
web02 10.0.0.8

lb01 lb02
yum install -y ipvsadm ##这是管理lvs的,因为lvs在linux内核里
#关闭nginx负载均衡
#关闭keepalived

[root@lb01 ~]# yum install -y  ipvsadm
[root@lb01 ~]# systemctl stop nginx.service  keepalived.service
[root@lb01 ~]# systemctl disable nginx.service
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.

web01 web02

curl  10.0.0.[7-8]/oldboy.html
web01
web02

DR部署

lvs

加载内核模块
modprobe ip_vs #直接运行ipvsadm -ln

[root@lb02 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@lb02 ~]# lsmod |grep ip_vs
ip_vs                 145497  0
nf_conntrack          133095  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack
[root@lb01 ~]# ping 10.0.0.3PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data ##先确定ip没有被使用
[root@lb01 ~]# ip a add  10.0.0.3 dev eth0  label eth0:0
[root@lb01 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:78:a3:c3 brd ff:ff:ff:ff:ff:ffinet 10.0.0.5/24 brd 10.0.0.255 scope global eth0valid_lft forever preferred_lft foreverinet 10.0.0.3/24 scope global secondary eth0:0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe78:a3c3/64 scope link valid_lft forever preferred_lft forever
[root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20  ##创建一个池塘指定tcp协议 指定wrr加权轮询,会话保持时间20秒
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1   ##往池塘里添加主机,使用DR模式  权重为1
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
[root@lb01 ~]# ipvsadm -ln   ##查看规则
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.3:80 wrr persistent 20-> 10.0.0.7:80                  Route   1      0          0         -> 10.0.0.8:80                  Route   1      0          0

lvs规则配置备份与恢复

[root@lb01 ~]# ipvsadm-save -n
-A -t 10.0.0.3:80 -s wrr -p 20
-a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
-a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
[root@lb01 ~]# ipvsadm-save -n >/root/ipvsamd.rules
[root@lb01 ~]# ipvsadm -C  ##清除规则
[root@lb01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@lb01 ~]# ipvsadm-restore </root/ipvsamd.rules
[root@lb01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.3:80 wrr persistent 20-> 10.0.0.7:80                  Route   1      0          0         -> 10.0.0.8:80                  Route   1      0          0

RS服务器

配置虚拟VIP
抑制VIP

ip addr add 10.0.0.3/32 dev lo label lo:0cat >>/etc/sysctl.conf<<EOFnet.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2EOFsysctl -p

测试lvs负载均衡注意事项:

  1. 不要在 lvs本地进行测试
  2. lvs使用在高并发 访问量巨大时候 不像nginx 访问量和用户量比较高 1:1

    image.png

NAT模式部署

lb01配置成分发器:

1、打开路由转发功能

[root@lb01 ~]# vim /etc/sysctl.conf  改:net.ipv4.ip_forward = 0为:net.ipv4.ip_forward = 1

让配置生效:

[root@lb01 ~]# sysctl -p

ipvsadm配置规则

创建池塘:
[root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s rr-A  添加虚拟服务器
-t   表示TCP的服务  VIP:PORT
-s  指定调度算法  rr表示round-robin 轮循
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -m
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -m
选项:-a   表示添加real server的地址-r    指定real server的IP地址-m  表示masquerade 也就是NAT方式的LVS

查看:

Ipvsadm命令,用于配置及查看内核IPVS表和算法的工具,类似于iptables

[root@lb01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.3:80 wrr-> 10.0.0.7:80                  Masq    1      0          0         -> 10.0.0.8:80                  Masq    1      0          0

配置真实服务器

RealServer:在xuegod62和xuegod64上面配置:

准备:

1、配置IP:REAL SERVER自己的网络相关信息配置成如下:

web01: eth0:10.0.0.7 网关: 10.0.0.5
web02: eth0:10.0.0.8 网关: 10.0.0.5

测试vip

[root@lb01 ~]# curl 10.0.0.3
web02
[root@lb01 ~]# curl 10.0.0.3
web01
[root@lb01 ~]# curl 10.0.0.3
web02
[root@lb01 ~]# curl 10.0.0.3
web01

扩展ipvsadm 更多参数说明

-L -n ==> 查看规则,显示内核虚拟服务器表

-L -n -c ==> 查看客户端连接分发器和real server 的情况

[root@lb01 ~]# ipvsadm -L -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:16  TIME_WAIT   10.0.0.3:55164     10.0.0.3:80        10.0.0.7:80
TCP 01:11  TIME_WAIT   10.0.0.3:55156     10.0.0.3:80        10.0.0.7:80
TCP 01:14  TIME_WAIT   10.0.0.3:55158     10.0.0.3:80        10.0.0.8:80
TCP 01:15  TIME_WAIT   10.0.0.3:55160     10.0.0.3:80        10.0.0.7:80
TCP 01:15  TIME_WAIT   10.0.0.3:55162     10.0.0.3:80        10.0.0.8:80

选项:

-L -n --stats ==> 查看分发情况

-L -n --rate ==> 查看速率

-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)

day55-负载均衡之lvs相关推荐

  1. 服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型

    服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型 下面是"黑夜路人"的<大型网站架构优化(PHP)与相关开源软件使用建议> =============== ...

  2. Linux负载均衡软件LVS

    Linux负载均衡软件LVS之三(配置篇) LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式 ...

  3. [转]LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现 ...

  4. 集群负载均衡之lvs和keepalived

    本篇主要介绍集群的负载均衡. lvs是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器 ...

  5. LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

    转载:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server)即 ...

  6. Linux负载均衡软件LVS(概念篇)

    Linux负载均衡软件lvs(概念篇) 一.LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,它的官方站点是(www ...

  7. LVS负载均衡(LVS简介、三种工作模式、持久化连接)

    一.LVS简介及原理 1.LVS概述 LVS(Linux Virtual Server)即Linux虚拟服务器,在Linux平台运行.LVS被集成到Linux内核模块中被分为2个部分,用户态(ipvs ...

  8. nginx负载均衡和lvs负载均衡的比较分析

    LVS和Nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用. 首先提醒,做技术切不可人云亦云,我云即你云:同时也不可太趋向保守,过于相信旧有方式而等别人来帮你 ...

  9. Linux负载均衡软件LVS之一(概念篇)

    2019独角兽企业重金招聘Python工程师标准>>> 一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...

  10. 负载均衡之LVS集群

    LVS集群 一.负载均衡实现分类: (一)硬件:成本会很高 F5,BIG IP Citrix,Netscaler A10 (二)软件:成本较低,实现快. 四层(路由设备分发到不同设备): LVS 七层 ...

最新文章

  1. 图灵2010.01书讯——看你错过了哪一本
  2. 这个小学生毕业典礼被全世界围观:疫情之下开脑洞,《我的世界》还能这样玩!中国网友:作业写不完的我感到嫉妒...
  3. 网络营销外包对于搜索引擎策略性调整网络营销外包专员如何解析
  4. 【转载】从“关于Java堆与栈的思考”一帖看错误信息的传播
  5. HDU 1086 You can Solve a Geometry Problem too
  6. 练习题之Wait/Notify
  7. pythonjson数据解析错误是什么意思_Python中的JSON解析错误
  8. 用c语言读取和写入文件数据
  9. harfbuzz安装位置 linux_最新Ubuntu 20.04 LTS已发布,在Win10中该如何进行安装和使用?...
  10. python计算一个数的个各位上的数字之和
  11. SQL Server 2019中SQL表变量延迟编译
  12. H3C 单路径网络中环路产生过程(3)
  13. mysql 拼音模糊查询_mysql中文字段转拼音首字母,以及中文拼音模糊查询
  14. 【对话系统】对话系统核心技术概要
  15. FFmpeg结构体分析: AVCodecContext编解码器上下文
  16. 到底灰度化是在干什么?
  17. Module ‘xxx‘ was created for incompatible target arm64-apple-ios9.0 Xcode12 错误解决
  18. B2065 鸡尾酒疗法
  19. 干货 | 奇秀直播连麦技术探索
  20. 读《七周七语言》,感悟其魂

热门文章

  1. 码栈使用手册(二)---界面介绍
  2. vue仿网易云音乐播放器的前端补充
  3. 科比数据集分析与预测
  4. c语言考试程序设计题怎么给分,计算机程序设计C语言考试试卷及评分标准.doc
  5. 机器学习-联合概率分布笔记
  6. 高斯分布4——联合概率分布
  7. 微星MSI-GP65 Ubuntu Linux驱动 ALC 1220声卡
  8. 直击进博会 | 强生、默沙东、史赛克、雅培、丹纳赫、罗氏、拜耳等医药巨头带来哪些新产品、新技术?...
  9. Matlab绘图相关参数备忘录
  10. 微信公众号支付开发流程