第1章 LVS 简介

1.1 LVS介绍

LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立,是国内最早出现的自由软件项目之一

官网:http://www.linuxvirtualserver.org/index.html

中文资料:
LVS项目介绍          http://www.linuxvirtualserver.org/zh/lvs1.html
LVS集群的体系结构    http://www.linuxvirtualserver.org/zh/lvs2.html
LVS集群中的IP负载均衡技术    http://www.linuxvirtualserver.org/zh/lvs3.html
LVS集群的负载调度    http://www.linuxvirtualserver.org/zh/lvs4.html

简单一句话,当并发超过了Nginx上限,就可以使用LVS了。
日1000-2000W PV或并发请求1万以下都可以考虑用Nginx。
大型门户网站,电商网站需要用到LVS。

1.1.1 LVS内核模块ip_vs介绍

早在2.2内核时,IPVS就已经以内核补丁的形式出现

从2.4.23版本开始,IPVS软件就合并到Linux内核常用版本的内核补丁的集合

从2.4.24以后IPVS已经成为Linux官方标准内核的一部分

说明:

LVS无需安装

安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive

ipvsadm是通过命令行管理,而keepalive读取配置文件管理

后面我们会用Shell脚本实现keepalive的功能

第2章 LVS集群搭建

2.1 环境准备

主机名

主机IP

备注

lb03

10.0.0.15

01.Cent0S7.4系统,内存512M

02.防火墙firewall和Selinux关闭

03.web03和web04只安装Nginx软件,并满足

curl http://10.0.0.17/页尾得到结果为web03

curl http://10.0.0.18/页尾得到结果为web04

lb04

10.0.0.16

web03

10.0.0.17

web04

10.0.0.18

2.1 安装ipvsadm管理工具

1 lsmod |grep ip_vs #查看系统的LVS模块->默认没有加载模块,需安装管理工具才会激活 2 yum -y install ipvsadm

查看当前LVS状态,顺便激活LVS内核模块

1 [root@lb03 ~]# ipvsadm -ln
2 IP Virtual Server version 1.2.1 (size=4096)
3 Prot LocalAddress:Port Scheduler Flags
4   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
5 [root@lb03 ~]# lsmod|grep ip_vs
6 ip_vs                 141092  0
7 nf_conntrack          133387  1 ip_vs
8 libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

注意ipvsadm -ln作用:健康检查,即当某台web服务器出现问题时LVS将自动踢出;等恢复后再添加进来

2.1.1 ①在eth0网卡绑定VIP地址(高可用)

1 ip addr add 10.0.0.13/24 dev eth0 #lb服务的IP地址可扩展性较差,故使用VIP地址(删除del;显示show)

2.1.2 ②清除当前所有LVS规则

1 ipvsadm -C

2.1.3 ③设置tcp、tcpfin、udp链接超时时间(s)

1 ipvsadm --set 30 5 60 #控制浏览器与lb01的超时时间

2.1.4 ④添加虚拟服务,调度算法见man ipvsadm

1 ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20 2 3 #LVS默认无80端口,需另外添加新的虚拟IP记录->控制lb01与web01、web02的超时时间

2.1.5 ⑤将虚拟服务关联到真实服务上

1 ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
2
3 ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1

2.1.6 ⑥查看配置结果

1 [root@lb03 ~]# ipvsadm -ln
2 IP Virtual Server version 1.2.1 (size=4096)   #LVS版本号
3 Prot LocalAddress:Port Scheduler Flags     #协议(TCP)本地IP:端口 调度算法 标志(持续时间20s)
4   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
5     #后端节点IP:端口          工作模式 权重 已建立连接 正在连接
6 TCP  10.0.0.3:80 wrr persistent 20
7   -> 10.0.0.17:80                 Route   1      0          0
8   -> 10.0.0.18:80                 Route   1      0          0

2.2 web服务器配置

2.2.1 Ⅰ.在lo网卡绑定VIP地址

1 ip addr add 10.0.0.13/32 dev lo

2.2.2 Ⅱ.修改内核参数抑制ARP响应

1 cat >>/etc/sysctl.conf<<EOF   #其目的是为了让rs顺利发送mac地址给客户端
2 net.ipv4.conf.all.arp_ignore = 1
3 net.ipv4.conf.all.arp_announce = 2
4 net.ipv4.conf.lo.arp_ignore = 1
5 net.ipv4.conf.lo.arp_announce = 2
6 EOF
7
8 sysctl -p

查看结果

 1 [root@lb03 ~]# ip a s eth0
 2 eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 3  link/ether 00:50:56:3b:cb:36 brd ff:ff:ff:ff:ff:ff
 4  inet 10.0.0.13/24 scope global secondary eth0
 5     valid_lft forever preferred_lft forever
 6 [root@web03 ~]# ip a s lo
 7 lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
 8  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 9 inet 10.0.0.13/32 scope global lo
10     valid_lft forever preferred_lft forever

2.2.3 Ⅲ.web浏览器测试

1 http://10.0.0.13/

说明:当lb服务器断开连接后VIP会自动消失,重新连接后需再次添加VIP

2.2.4 Ⅳ. arp解析查看

1 [root@lb04 ~]# arp -n
2 Address                  HWtype  HWaddress           Flags Mask            Iface
3 10.0.0.254               ether   00:50:56:e9:9f:2c   C                     eth0
4 10.0.0.18                ether   00:0c:29:ea:ca:55   C                     eth0
5 10.0.0.13                ether   00:0c:29:de:7c:97   C                     eth0
6 172.16.1.15              ether   00:0c:29:de:7c:a1   C                     eth1
7 10.0.0.17                ether   00:0c:29:4a:ac:4a   C                     eth0

至此,LVS集群配置完毕

注意:所有有访问的返回值都是10.0.0.3

lvs与nginx的不同就在于17和18并不通过IP地址访问,而是通过mac地址访问

至此,LVS集群配置完毕

2.2.4.1 存疑问题:使用抓包工具发现通信的是windows IP和lb03的80端口,但lb03没有80端口?

lvs通过mac地址访问时,访问10.0.0.3就是访问lb01

10.0.0.3的数据包mac地址的返回值就是访问web03

2.3 ARP协议

2.3.1 arp详解

01.ARP协议,全称"Address Resolut ion Protocol",中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址)

ARP协议要求通信的主机双方必须在同一个物理网段(即局域网环境)!

02.为了提高IP转换MAC的效率,系统会将解析结果保存下来,这个结果叫做ARP缓存

1 arp-a   #Windows查看ARP缓存命令
2 arp-n   #Linux查看ARP缓存命令
3 arping -c 1 -I eth0 10.0.0.6
4 #Linux解析IP对应的MAC地址[-c指定超时的ARP数据包数量;-I指定使用哪个网络接口]

ARP缓存表是把双刃剑

①主机有了arp缓存表,可以加快ARP的解析速度,减少局域网内广播风暴。因为arp是发广播解析的,频繁的解析也是消耗带宽的(尤其是机器多的时候) ②正是有了arp缓存表,给恶意黑客带来了攻击服务器主机的风险,这个就是arp欺骗攻击 ③切换路由器,负载均衡器等设备时,可能会导致短时网络中断。因为所有的客户端ARP缓存表未更新

2.3.2 服务器切换ARP问题

当lb01宕机,VIP地址迁移到lb02时需要通过arping命令通知所有网络内机器更新本地的ARP缓存表,从而使得客户机访问时重新广播获取MAC地址

ARP广播进行新的地址解析

1 arping -I eth0 -c 1 -U VIP 2 arping -I eth0 -c 1 -U 10.0.0.13

测试ARP缓存切换(手动漂移VIP)

1 [root@lb03 ~]# ip addr del 10.0.0.13/24 dev eth0
2 [root@lb04 ~]# ip addr add 10.0.0.13/24 dev eth0
3 [root@lb04 ~]# arping -I eth0 -c 1 -U 10.0.0.13
4 ARPING 10.0.0.13 from 10.0.0.13 eth0
5 Sent 1 probes (1 broadcast(s))
6 Received 0 response(s)

windows查看arp -a

1 [e:\~]$ arp -a

2.3.3 LVS集群的工作模式

DR直接路由模式

NAT模式

FULLNAT

TUNNEL

第3章 Keepalive+LVS实现

3.1 安装配置keepalive实例

3.1.1 ①在lb03和lb04上安装keepalive

1 yum install -y keepalived

3.1.2 ②编辑keepalived.conf配置文件

 1 [root@lb03 ~]# cat /etc/keepalived/keepalived.conf
 2 global_defs {
 3    router_id LVS_01
 4 }
 5
 6 vrrp_instance VI_1 {
 7     state MASTER
 8     interface eth0
 9     virtual_router_id 51
10     priority 150
11     advert_int 1
12     authentication {
13         auth_type PASS
14         auth_pass 1111
15     }
16     virtual_ipaddress {
17      10.0.0.13/24
18     }
19 }
20
21 virtual_server 10.0.0.13 80 {
22     delay_loop 6
23     lb_algo wrr
24     lb_kind DR
25     nat_mask 255.255.255.0
26     persistence_timeout 50
27     protocol TCP
28
29     real_server 10.0.0.17 80 {
30         weight 1
31         TCP_CHECK {
32         connect_timeout 8
33         nb_get_retry 3
34         delay_before_retry 3
35         connect_port 80
36         }
37     }
38
39     real_server 10.0.0.18 80 {
40         weight 1
41         TCP_CHECK {
42         connect_timeout 8
43         nb_get_retry 3
44         delay_before_retry 3
45         connect_port 80
46         }
47     }
48 }

3.1.3 ③开启keepalived服务

1 systemctl start keepalived.service 2 ip a #查看VIP,此时应漂移到lb04上

3.1.4 ④web03/web04同时操作以下步骤

 1 ip addr add 10.0.0.13/32 dev lo
 2
 3 cat >>/etc/sysctl.conf<<EOF
 4 net.ipv4.conf.all.arp_ignore = 1
 5 net.ipv4.conf.all.arp_announce = 2
 6 net.ipv4.conf.lo.arp_ignore = 1
 7 net.ipv4.conf.lo.arp_announce = 2
 8 EOF
 9
10 sysctl -p

注意:因为虚拟的ip重启之后就会失效,故须加入开机启动项rc.local文件并赋予其可执行权限

3.1.5 ⑤keepalive健康检查功能

模拟web03出现问题

3.1.5.1 查看lb03 lvs状态

3.1.5.2 关闭web03

3.1.5.3 查看lb03状态

如图发现,web03被剔除

3.1.5.4 开启web03

3.1.5.5 查看lvs状态

web03恢复

以上是健康检查功能

3.1.6 ⑥测试

1 [root@lb04 ~]# curl 10.0.0.13 2 web03 3 [root@lb04 ~]# ipvsadm -ln

3.2 常见LVS负载均衡高可用解决方案

01.开发类似keepalived的脚本,早期的办法(不推荐)

02.heartbeat+lvs+ldirectord脚本配置方案,复杂不易控制(不推荐使用)

03.RedHat工具piranha,一个web界面配置LVS

04.LVS-DR+keepalived方案,推荐最优方案,简单、易用、高效

此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/

转载于:https://www.cnblogs.com/bananaaa/p/7929796.html

Lvs+keepAlived实现负载均衡高可用集群(DR实现)相关推荐

  1. LVS+Keepalived-DR模式负载均衡高可用集群

    LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...

  2. LVS+Keepalive 实现负载均衡高可用集群

    一.LVS 介绍 目前LVS已经被集成到Linux内核模块中.LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,该项目在Linux内核中实现了基于IP的数据请求负载均 ...

  3. LVS原理详解及部署之五:LVS+keepalived实现负载均衡高可用

    本文我们主要讲解的是LVS通过keepalived来实现负载均衡和高可用,而不是我们第三篇文章介绍的通过手动的方式来进行配置.通过脚本的方式来显示RS节点的健康检查和LVS的故障切换.此文会通过一个实 ...

  4. LVS+Keepalived实现负载均衡高可用

    使用脚本实现LVS负载均衡 环境: 3台主机 DS:192.168.100.1 RS1:192.168.100.11 RS2:192.168.100.12 VIP:192.168.100.100 安装 ...

  5. linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...

  6. lvs负载均衡—高可用集群(keepalived)

    基本概念: 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统 ...

  7. Nginx+KeepAlived实现负载均衡高可用原理

    作者:田超凡 原创博文,严禁复制转载,仿冒必究 nginx负载均衡高可用 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务 ...

  8. Ansible(四)ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用

    1.ansible roles简介 <1> roles 用于层次性.结构化地组织playbook. <2> roles 能够根据层次型结构自动装载变量文件.tasks以及han ...

  9. Nginx+Keepalived+LVS高可用集群----相关知识回顾

    1.原理回顾 1.1.集群知识回顾 集群特点: 1)高性能performance. 一些需要很强的运算处理能力比如天气预报,核试验等.这需要上千台计算器协同来完成这个工作的,共同分担计算任务. 2)价 ...

最新文章

  1. 安卓开发笔记(二十六):Splash实现首页快速开屏功能
  2. hadoop1.2.1安装配置
  3. C#中string a=null和string b=区别
  4. 12套经典java实战教程下载链接
  5. php上传商品信息并显示,第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...
  6. 语言程序设计 郭有强_「概念篇8」程序语言如何被计算机理解?靠猜?那就搞笑了...
  7. redis 设置密码 和 redis.config文件
  8. Riverbed收购Mazu Networks巩固领导者地位
  9. Linux第二周考试题
  10. Laravel学习笔记之Demo1——URL生成和存储
  11. 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第2课2.3节概述
  12. 网上订餐叫外卖的发展优势
  13. moses 编译_Ubuntu 8.10下moses测试平台搭建全记录
  14. 【山东seo】-淄博孔祥永seo技术分享博客
  15. mysql查询所有男生中姓王的_MySQL的查询练习
  16. 数据分析笔记:广州市财政收入挖掘预测案例
  17. python电商_电商数据分析(python)
  18. 【Maven】创建模块时出现Invalid packaging for parent POM
  19. 半导体行业岗位选择及专业匹配度规划
  20. java反射机制是什么_java中的反射机制是什么?

热门文章

  1. 当下非常火的VR全景展示到底是什么?
  2. dw网页设计期末设计一个网页_《网页设计与制作Dreamweaver》期末考试试题
  3. 发现一个推特前端替代网站,可以直接浏览推特用户发布的内容。
  4. linux系统工程师面试题答案整理
  5. 隐忍成大事:春秋五霸楚庄王必成雄主之谜
  6. iOS内购(IAP,In App Purchases-在APP内部支付),设置及使用
  7. glob.glob()
  8. C语言编译器的下载、配置和基本使用
  9. winrar解压器_这是一款神奇的压缩解压软件
  10. 解决IDEA 打不开问题