Linux运维-day56/57-负载均衡之lvs

一、负载均衡与反向代理的区别

1.1 功能(原理)

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

1.2 4层 vs 7层

OSI 7层模型 相关内容
应用层 协议:http、https
表示层
会话层
传输层 tcp/udp 端口
网络层 ip地址
数据链路层 MAC地址
物理层 0010101、网线设备
  • 4层 LVS nginx(1.9)、haproxy
  • 7层 nginx(1.9)、haproxy

二、ARP协议

2.1 ARP基础知识

DNS 域名-----解析---->ip地址(域名解析服务/系统 Domain Name Service/System)
ARP ip--------解析---->MAC地址

2.2 ARP解析过程

1>发出广播消息,查询ip对应的MAC地址
2>对应的机器会用单播的方式把自己的MAC地址告诉对方
3>用户自己留1个ARP缓存

2.3 arp解析过程-抓包

[root@m01 ~]# arp -d 10.0.0.51
[root@m01 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.0.51                ether   00:0c:29:37:ad:94   C                     eth0
10.0.0.254               ether   00:50:56:e2:d2:d2   C                     eth0
172.16.1.51              ether   00:0c:29:01:43:c3   C                     eth1
10.0.0.1                 ether   00:50:56:c0:00:08   C                     eth0

[root@m01 ~]# ping 10.0.0.51 -c 1
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=1.22 ms
--- 10.0.0.51 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.225/1.225/1.225/0.000 ms


Linux中抓包显示:arp解析过程

在m01上安装wireshark:yum install -y wireshark

[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_46:1a:d7 -> Broadcast ARP 42 Who has 172.16.1.51?
Tell 172.16.1.61
2 0.000242395 Vmware_37:ad:9e -> Vmware_46:1a:d7 ARP 60 172.16.1.51 is at
00:0c:29:37:ad:9e
3 5.016325835 Vmware_37:ad:9e -> Vmware_46:1a:d7 ARP 60 Who has
172.16.1.61? Tell 172.16.1.51
4 5.016345052 Vmware_46:1a:d7 -> Vmware_37:ad:9e ARP 42 172.16.1.61 is at
00:0c:29:46:1a:d7

tshark(Wireshark)参数:

-i 指定网卡 默认第1个网卡(非lo)
-f 指定过滤规则
-w 保存抓包的内容到文件中
抓包过滤语法 man wireshark-filter
问题: arp协议 3层?2层?
ip --- > mac
arp三层协议 工作在2层 3层ip----->2层mac地址

2.4 ARP病毒,欺骗故障

2.4.1 原理
2.4.2 预防

1>mac地址与ip地址绑定
2>使用企业安全软件

三、LVS相关名词

相关名词 含义
CIP Client IP
VIP Virtual IP
DIP Director 负载均衡IP
RS服务器 Real Server 真实服务器
RIP Real Server IP地址

四、LVS 4个模式

LVS(Linux Virtual Sercer)是由章文嵩发明的;
lvs太强大,被写入到Linux内核中,叫ip_vs;
通过:keepalived(配置文件)或ipvsadm (命令)来控制
中文官网:http://zh.linuxvirtualserver.org/

4.1 DR模式(直接路由模式)<u>性能最好</u>

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

4.2 NAT模式(网络地址映射)

4.2.1 原理
4.2.2 特点
  • NAT (Network Address Translation):网络地址转换
  • 开启内核转发功能net.ipv4.ip_forward=1 #/etc/sysctl.conf
  • NAT模式中,可以实现端口转发。如请求80,后端转发为8080
  • lvs与后算RS服务器,可以不在一个局域网中

4.3 TUN隧道模式

4.4 FULL NAT模式

五、DR模式

5.1 环境准备

主机名 外网eth0 内网eth1
lb01 10.0.0.5 172.16.1.5
lb02 10.0.0.6 172.16.1.6
web01 10.0.0.7 172.16.1.7
web02 10.0.0.8 172.16.1.8

5.2 在lb01和lb02上安装ipvsadm

注:如果有nginx和keepalived,请关闭nginx和keepalived,否则会冲突

 yum install -y ipvsadm

5.3 在web01和web02上安装nginx,并配置oldboy.html

[root@web01 ~]# cat /usr/share/nginx/html/oldboy.html 
web01 10.0.0.7
[root@web02 ~]# cat /usr/share/nginx/html/oldboy.html 
web02 10.0.0.8

[root@web01 ~]# curl  10.0.0.[7-8]/oldboy.html
[1/2]: 10.0.0.7/oldboy.html --> <stdout>
--_curl_--10.0.0.7/oldboy.html
web01 10.0.0.7

[2/2]: 10.0.0.8/oldboy.html --> <stdout>
--_curl_--10.0.0.8/oldboy.html
web02 10.0.0.8
[root@web01 ~]# 

5.4 DR模式部署

5.4.1 LVS配置

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

1>在lb01上添加临时ip

[root@lb01 ~]# ip a add 10.0.0.3/24 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 1000
    link/ether 00:0c:29:3f:03:e3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.3/24 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3f:3e3/64 scope link 
       valid_lft forever preferred_lft forever

2>设置tcp超时时间

[root@lb01 ~]# ipvsadm --set 30 5 60

3>添加10.0.0.3的池塘

[root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20
[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

4>给10.0.0.3的池塘添加规则

[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 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     
ipvsadm参数 含义 举例
-C 清除所有规则 ipvsadm -C
-A 相当于nginx中创建池塘
-t 使用tcp协议
-s 轮询算法rr(普通轮询)、wrr(加权轮询)
-p 会话保持的时间20秒,默认300秒
-a 添加RS服务器,相当于nginx中的server
-r 指定RS服务器的ip
-g 相当于--gatewaing,使用DR(Directing Routing)模式
-w weight权重
-ln 显示规则 ipvsadm -ln

lvs规则的配置备份(注意)
上面设置的内容ipvsadm -C之后,就会被清除掉,估将这些配置要保存下来用ipvsadm-save -n,然后导出到一个文件中,这样不小心清除了,可以用ipvsadm-restore进行恢复

[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

\\将配置的内容导出到ipvsadm.rules文件中
[root@lb01 ~]# ipvsadm-save -n >/root/ipvsadm.rules
[root@lb01 ~]# ll
total 8
-rw-r--r--  1 root root  113 Jul  4 17:01 ipvsadm.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/ipvsadm.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         
[root@lb01 ~]# 
5.4.2 RS服务器配置(web01和web02)

1>在web01和web02上都添加一个ip,绑定到lo

ip a add 10.0.0.3/32 dev lo  label lo:1

2>在web01和web02上都配置抑制ip解析

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的dr模式就搭建完成了

5.4.3 测试lvs

1>注意事项:

  • 不要在lvs本地进行测试
  • lvs使用在高并发,访问量巨大的时候,估访问量和用户量比较高,请求比例才会接近1:1,不像nginx(应用场景)
    2>抓包测试


    通过抓包可以看出请求和响应的时候,修改的是mac地址,端口并没有发生变化
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容