02-负载均衡集群LVS(修正版)


制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 第 02 章 剖析负载均衡集群 LVS 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 本章了解什么是集群,集群的特点、集群的功能、集群的分类。Linux 环境下可用那些开源软件来搭建 一个功能强而有稳定的集群系统。了解国人内核级负载均衡开源项目 Linux 虚拟服务器,简称 LVS。 一、集群概述 1、集群定义 集群是由两个或多个计算机(称为节点或成员)组成的一起执行任务的系统。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 2、主要的集群类型有 4 种 存储型(Storage ) 高性能型(High performance ) 高可用性型(High availability 简称 HA ) 负载平衡型(Load balancing ) A:存储型集群 是跨服务器提供一致的文件系统映像,它允许服务器同步地读取和写入单个的共享文件系统。 存储型集 群将应用程序的安装和修补限制到一个文件系统,简化了存储的管理。而且,采用集群范围的文件系统,存 储型集群消除了应用程序数据的冗余拷贝并简化了备份和恢复。 B:高性能型集群 高性能计算(High-Performance Computing)是计算机科学的一个分支,它致力于开发超级计算机,研究并 行算法和开发相关软件,使用集群节点来执行并行运算。 C:高可用性型集群 通过消除单点失效以及在一个节点停止运作时将服务从一个集群节点切换到另外一个节点,提供服务的 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 持续可用性。 实现的软件有 Turbolinux TurboHA、Heartbeat、Kimberlite D:负载均衡型集群 是将网络服务请求分摊在多个集群节点中来平衡请求负载。 3、集群系统采用的操作系统 主要有 UNIX 、WindowsNT 和 Linux 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ UNIX 是服务器或工作站上普遍使用的操作系统,它运行稳定、安全性也比较好,因此许多大的公司都 采用了基于 UNIX 的集群系统解决方案,如 HP 、SUN 、IBM Microsoft 于 1995 年就开始了集群系统的开发工作 Turbolinux 公司推出了能够显著地提高基于 TCP/IP 协议的多种网络服务的服务质量的高可用性集群系统 Turbocluster Red Hat 也提供了基于 Linux Virtual Server 思想构建的高可用性集群系统 Piranha 4、典型的集群系统有哪些? TurboCluster TurboCluster 是一个企业级的集群方案,它允许在多个计算机上构建高可用的、可扩展的网络。它支持 Intel 和 Alpha 芯片,支持 Linux 、Windows NT 和 Solaris 操作系统平台 Linux Virtual Server Linux 虚拟服务器(Linux Virtual Server, LVS )建筑于实际的服务器集群之上,用户看不到提供服务的 多台实际服务器,而只能看见一台作为负载平衡器的服务器 5、集群的特点与功能 高可用性与可扩展性 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 不间断性 7X24 故障切换 负载均衡与错误恢复 集群系统最大的特点是可以灵活、有效地分担系统负载 二、认识负载均衡集群 LVS 1、负载均衡集群 负载均衡集群(Load Balancing) 可实现多台服务器或应用的流量均衡分配。服务器集群对外部应用及客户 表现为一个虚拟的服务器,集群内部各服务器平均地处理由外部应用及客户端所提交的业务,实现服务器之 间的负载均衡处理并提供灵活的可扩展性,当业务压力增大时,可随时加入新的服务器以提高集群的整体性 能。 负载均衡集群特别适用于高并发的网络应用,如网站、文件服务器、各种要求高并发的 Socket 处理等 负载均衡集群方案大多通过专用的硬件“负载均衡器”来实现,但此类硬件产品往往价格昂贵。目前在服务器 领域千兆网络已经非常普及,但是当前中档的百兆负载均衡器依然成本高价。 2、LVS LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ LVS(负载均衡软件,Linux Virtual Server)项目的创始人是我国国防科技大学的章文嵩博士,此项目也是 当前已经加入到 Linux 内核中为数不多的由国人维护的开源项目之一。 3、LVS 的结构 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 从架构上把 LVS 服务器集群系统分 3 部分组成:前端的负载均衡层;中间的服务器群组层;数据共享存 储层。对外部用户来说,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。 4、LVS 中的相关术语 A:集群中的术关术语 Director: 前端负载均衡器即运行 LVS 服务可以针对 web、ftp、cache、mms 甚至 mysql 等服务做 load balances。 RealServer: 后端需要负载均衡的真实服务器,又称为节点。可以为各类系统,Linux 、Solaris 、Aix 、BSD 、 Windows 都可,甚至 Director 本身也可以作为 RealServer 使用. LVS( Linux Virtual Server) LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统 IPVS (IP 虚拟服务器) 是集群负载均衡软件,它是被合并到 Linux2.4.23 内核起的主干内核版本的补丁集合,当与内核路由和数 据包过滤功能一起使用时启用了 IPVS 的内核让你可以将任何运行 Linux 的计算机变成一个集群负载调度 器,启用 IPVS 的集群负载调度器和集群节点一起叫做一个 Linux 虚拟服务器(LVS)。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ client computers 连接到集群请求服务的计算机叫做客户端计算机(Client Computers ) B:IP 地址命名规范术语 VIP(虚拟 ip 地址):Director 用于向客户端计算机提供服务的 IP 地址 RIP(真实 ip 地址):用在集群节点上的 IP 地址 DIP(Director 的 ip 地址):Director 用于连接 Director/RIP 网络的 IP 地址 CIP(客户端计算机的 ip 地址):分配给客户端计算机的 IP 地址,它用作向集群发送请求的源 IP 地址 C:同义词 负载均衡器、调度器、Director、LVS Route、地址转换器为同义词。 真实服务器、节点服务器、RealServer、Pool server、LVS 客户端是同义词。 IP 负载均衡技术、负载均衡模式是同义词 5、负载均衡器三种运行模式 A:Virtual Server via NAT(VS-NAT) 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 用地址翻译实现虚拟服务器。负载均衡器或称为地址转换器能被外界访问到的合法 IP 地址,它修改来自专 有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送 到内部网某台真实服务器节点。 优点:是节省 IP 地址,能对内部进行伪装。 缺点:是效率低,因为返回给请求方的流量经过转换器。 NAT 是 LVS 中最容易实现的模式,同时它也是大多数软/硬件负载均衡器的默认模式。在 NAT 模式下, LVS Route 实现了网络地址转换及 IP 负载分发这两者功能的结合。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ (1) LVS Route 接收用户发来的消息,根据调度算法进行 IP 分流,将数据包发送到后端应用服务器。 (2) 应用服务器执行相应的操作后,将结果消息返回到 LVS Route。 (3) LVS Route 通过 NAT 地址转换将此结果送回给用户,完成用户的一次请求及响应操作。 在整个过程中,所有输入输出的流量都要经过 LVS Route 服务器。因此,LVS Route 的网络 I/O 压力将 会非常大,因此很容易成为瓶颈。 NAT 模式的优点在于配置及管理简单,由于了使用 NAT 技术,LVS Route 及应用服务器可以在不同网 段中,网络架构更灵活,应用服务器只需要进行简单的网络设定即可加入集群。 B:Virtual Server via Direct Routing(VS-DR): 用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用这 种方法,控制管理的计算机接收到请求包时直接送到参与集群的节点。 DR(Direct Routing)模式也被称为直接路由模式,实现此模式时 LVS Route 只实现 IP 分发功能,应用服 务器收到 IP 数据包并处理后,通过自身来实现 IP 地址转换,将数据直接传送给用户。在此模式下,LVS 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ Route 只对 TCP/IP 数据包的头信息进行处理,然后直接路由到应用服务器,不需要处理应用服务器返回的数 据信息,因此性能较高。 (1) LVS Route 接收用户发来的消息,根据调度算法进行 IP 分流,将数据包发送到后端应用服务器。 (2) 应用服务器执行相应的操作后,将结果直接返回给客户。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 可见在处理过程中 LVS Route 只处理请求的直接路由转发,所有响应结果由各个应用服务器自行处理,并对用 户进行回复,网络流量将集中在路由器之上。DR 模式是 3 种模式中性能最好的,唯一的缺陷在于它要求 LVS Route 及所有应用服务器在同一个网段中,因此不能实现集群的跨网段应用。 C:Virtual Server via IP Tunneling (VS-TUN): IP Tunnel 模式可以说是 NAT 及 DR 模式的综合,包含了这两种模式的特点,同时性能也介于它们之间。实现 IP Tunnel 模式时,LVS Route 将 TCP/IP 请求进行重新封装并转发给目标应用服务器,由目标应用服务器直接回复用 户。由于 LVS Route 与应用服务器之间是通过 IP Tunnel 来进行转发,因此两者可以存在于不同的网段中。 当前大多数架构都选择使用 NAT 或 DR 模式来实现 LVS 负载均衡集群。由于 NAT 模式设置较为简单,并与 DR 模式在配置上有很多相似之处,通过两台服务器,实现 HTTP + LVS 负载均衡集群下的 DR 模式。 用 IP 隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将 IP 包封装在其 他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的 VPN,也可使用专线。 集群所能提供的服务是基于 TCP/IP 的 Web 服务、Mail 服务、News 服务、DNS 服务、Proxy 服务器等。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 6、负载调度算法 轮叫调度(Round Robin) “轮叫”调度也叫 1:1 调度,调度器通过“轮叫”调度算法将外部用户请求按顺序 1:1 的分配到集群中 的每个 Real Server 上,这种算法平等地对待每一台 Real Server,而不管服务器上实际的负载状况和连接 状态。 加权轮叫调度(Weighted Round Robin) “加权轮叫”调度算法是根据 Real Server 的不同处理能力来调度访问请求。可以对每台 Real Server 设置不同的调度权值,对于性能相对较好的 Real Server 可以设置较高的权值,而对于处理能力较弱的 Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服 务器资源。同时,调度器还可以自动查询 Real Server 的负载情况,并动态地调整其权值。 最少链接调度(Least Connections) “最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实 服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。 加权最少链接调度(Weighted Least Connections) “加权最少链接调度”是“最少连接调度”的超集,每个服务节点可以用相应的权值表示其处理能力, 而系统管理员可以动态的设置相应的权值,缺省权值为 1,加权最小连接调度在分配新连接请求时尽可能使 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 服务节点的已建立连接数和其权值成正比。 其它算法:基于局部性的最少链接(Locality-Based Least Connections)、带复制的基于局部性最少链 接(Locality-Based Least Connections with Replication)、目标地址散列(Destination Hashing)和 源地址散列(Source Hashing) 三、LVS 的安装与配置 1、负载均衡器(转发器、director)安装 IPVS(IP Virtual Server)是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换就毫无意义 了。在大部分 linux 发行版中, ipvs 被默认安装。(Tar 包安装和 RPM 二进制包安装) [root@localhost ~]# yum install ipvsadm [root@localhost ~]# lsmod | grep ip_vs [root@localhost ~]# modprobe ip_vs [root@localhost ~]# lsmod | grep ip_vs ip_vs 78209 0 注:只有执行 ipvsadm 以后,才会在内核加载 ip_vs 模块。不能以查进程的方式判断 ipvs 是否运 行。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ Ipvs 具体实现是由 ipvsadm 这个程序来完成,判断系统是否具备 ipvs 功能,只需要察看 ipvsadm 程序 是否被安装。察看 ipvsadm 程序最简单的办法就是在任意路径执行命令 ipvsadm [root@localhost ~]# ipvsadm -bash: /sbin/ipvsadm: No such file or directory [root@localhost ~]# yum install ipvsadm [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn 2、ipvsadm 的用法 [root@CentOS ~]# ipvsadm -h ipvsadm v1.24 2003/06/07 (compiled with popt and IPVS v1.2.0) Usage: ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] ipvsadm -D -t|u|f service-address ipvsadm -C ipvsadm -R ipvsadm -S [-n] 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ ipvsadm -a|e -t|u|f service-address -r server-address [options] ipvsadm -d -t|u|f service-address -r server-address ipvsadm -L|l [options] ipvsadm -Z [-t|u|f service-address] ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid] ipvsadm --stop-daemon state 命令选项解释: -A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。 -E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。 -D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。 -C --clear 清除内核虚拟服务器表中的所有记录。 -R --restore 恢复虚拟服务器规则 -S --save 保存虚拟服务器规则,输出为-R 选项可读的格式 -a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器 记录。也就是在一个虚拟服务器中增加一台新的真实服务器 -e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ -d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录 -L|-l --list 显示内核虚拟服务器表 -Z --zero 虚拟服务表计数器清零(清空当前的连接数量等) 其他的选项: -t --tcp-service service-address 说明虚拟服务器提供的是 tcp 的服务 [vip:port] or [real-server-ip:port] -u --udp-service service-address 说明虚拟服务器提供的是 udp 的服务 -f --fwmark-service fwmark 说明是经过 iptables 标记过的服务类型。 -s --scheduler scheduler 使用的调度算法,有这样几个选项 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, -p --persistent [timeout] 会话保持。意思是同一个客户的多次请求,将被同一台真实的服务器处理。 timeout 的默认值为 300 秒。 -r --real-server server-address 真实的服务器[Real-Server:port] -g --gatewaying 指定 LVS 的工作模式为直接路由模式(也是 LVS 默认的模式) -i --ipip 指定 LVS 的工作模式为隧道模式 -m --masquerading 指定 LVS 的工作模式为 NAT 模式 -w --weight weight 真实服务器的权值 --mcast-interface interface 指定组播的同步接口 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ -c --connection 显示 LVS 目前的连接 如:ipvsadm -L -c --timeout 显示 tcp tcpfin udp 的 timeout 值 如:ipvsadm -L --timeout --daemon 显示同步守护进程状态 --stats 显示统计信息 --rate 显示速率信息 --sort 对虚拟服务器和真实服务器排序输出 --numeric -n 输出 IP 地址和端口的数字形式 3、lvs 客户端的配置 Lvs 客户端是指负载均衡器/转发器(director)后面提供服务的真实机器。负载均衡类型有三种模式直接 路由模式 DR 、网络地址转换模式 NAT 以及隧道模式 TUN。 Lvs 客户端的配置是根据其所采用的负载均衡种类来做相应操作的。在应用环境里,为了获得最高的性 能,采用的负载均衡种类一般是直接路由模式 DR。 不管采用哪一种模式,lvs 客户端都不需安装额外的软件。 4、lvs 客户端支持的操作系统 Lvs 客户端支持的操作系统包括:各种 GNU/linux、Unix、Windows。如 RedHat 系列的有: CentOS、 RedHat、Fedora 等。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 四、LVS 集群 NAT 模式实例 1、实验拓扑图 Lvs-Nat 模式是做地址转换,所以调度器(Director Server)必需要拥要两块物理网卡。 2、环境描述 负载均衡器 eth0:192.168.1.250 eth1:10.0.0.1 VIP 192.168.1.240 节点服务器 RIP 10.0.0.13 10.0.0.14 10.0.0.15 网关:10.0.0.1 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 3、负载均衡器安装和配置 A:安装 ipvsadm [root@localhost ~]# yum install ipvsadm [root@localhost ~]# ipvsadm [root@localhost ~]# lsmod | grep ip_vs ip_vs 78209 0 B:编写脚本 为了方便启动停止和调试,写成脚本形式,方便管理 [root@localhost ~]# vi /etc/init.d/lvsnet #!/bin/bash #LVS script NAT VIP=192.168.1.240 RIP1=10.0.0.13 RIP2=10.0.0.14 RIP3=10.0.0.15 case "$1" in start) echo "1">/proc/sys/net/ipv4/ip_forward 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ /sbin/iptables -F /sbin/ipvsadm -C /sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -m /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m /sbin/ipvsadm -a -t $VIP:80 -r $RIP3 -m /sbin/ipvsadm echo "start LVS of DirectorServer NAT" ;; stop) echo "0" > /proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:0 down echo "stop LVS of DirectorServer NAT" ;; *) echo "Usage: $0 {start|stop}" exit 1 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ esac 要执行此脚本,必需赋可执行权限 [root@localhost ~]# chmod +x /etc/init.d/lvsnet 启动脚务测试,因为脚本存放在/etc/init.d/目录下,可以使用 service 方式来执行 [root@localhost ~]# service lvsnet start IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.240:http rr -> 10.0.0.15:http Masq 1 0 0 -> 10.0.0.14:http Masq 1 0 0 -> 10.0.0.13:http Masq 1 0 0 4、节点服务器配置 节点服务器不需要安装任何软件,只需要把网关地址设为负载均衡器的 eth1 的 ip。如果以 NAT 方式做 高可用性集群,eth1 也是一个漂移 IP,可以使用虚拟 IP。如在配置脚本中加入一条 VIP2=10.0.0.1 把这个 VIP2 绑定到 eth1 网卡上。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 5、打开客户机访问测试 VIP:192.168.1.240 A:启服 10.0.0.14 的 http 服务 [root@localhost ~]# service httpd start [root@localhost ~]# cat /var/www/html/index.htm web 14 打开一台客户机,提交 3 次请求,结果如下: [root@CentOS ~]# curl http://192.168.1.240 curl: (7) couldn't connect to host [root@CentOS ~]# curl http://192.168.1.240 web 14 [root@CentOS ~]# curl http://192.168.1.240 curl: (7) couldn't connect to host 由上面结果可以看出,有两次访问返回失败,因为 LVS 负载均衡器只是根据调度算法将请求分发,不检 测节点服务器是否可用。 B:启动另两台服务器的 http 服务 写入不同的主页文件,在客户端向 VIP 发 3 次请求结果 [root@CentOS ~]# curl http://192.168.1.240/ web 15 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ [root@CentOS ~]# curl http://192.168.1.240/ web 14 [root@CentOS ~]# curl http://192.168.1.240/ web 13 查负载均衡器的信息 [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.240:http rr -> 10.0.0.15:http Masq 1 0 1 -> 10.0.0.14:http Masq 1 0 1 -> 10.0.0.13:http Masq 1 0 1 C:用脚本发大量请求 [root@CentOS ~]# for i in $(seq 1 999);do curl http://192.168.1.240;done web 15 web 14 web 13 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ web 15 web 14 web 13 以上是部分结果,以下是查看负载均衡器的结果 [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.240:http rr -> 10.0.0.15:http Masq 1 0 333 -> 10.0.0.14:http Masq 1 0 333 -> 10.0.0.13:http Masq 1 0 333 由以上结果可以看出,发送 999 次请求被平均分发到三台真实主机上。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 五、LVS 集群 DR 模式实例 1、试验拓扑图 2、环境描述 负载均衡器 DIP eth0:10.0.0.11 VIP 10.0.0.10 节点服务器 RIP 10.0.0.13 10.0.0.14 10.0.0.15 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 3、负载均衡器安装和配置 A:安装 ipvsadm [root@localhost ~]# yum install ipvsadm [root@localhost ~]# lsmod | grep ip_vs ip_vs 78209 0 B:编写脚本 [root@localhost ~]# vi /etc/init.d/lvsdsdr #!/bin/bash #description: start LVS of Directorserver DR VIP=10.0.0.10 RIP1=10.0.0.13 RIP2=10.0.0.14 RIP3=10.0.0.15 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of DirectorServer DR" /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ /sbin/route add -host $VIP dev eth0:0 echo "1" >/proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g /sbin/ipvsadm ;; stop) echo " stop LVS of DirectorServer DR" echo "0" >/proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:0 down ;; *) echo "Usage: $0 {start|stop}" exit 1 esac 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ [root@localhost ~]# chmod +x /etc/init.d/lvsdsdr [root@localhost ~]# service lvsdsdr start 4、节点服务器配置 [10.0.0.13@localhost ~]# vi /etc/init.d/lvsrsdr #!/bin/bash #description : start realserver DR VIP=10.0.0.10 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of RealServer DR" /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ ;; stop) /sbin/ifconfig lo:0 down echo "close LVS of RealServer DR" echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce ;; *) echo "Usage: $0 {start|stop}" exit 1 esac [10.0.0.13@localhost ~]# chmod +x lvsrsdr [10.0.0.13@localhost ~]# service lvsrsdr start 其它两节点脚本相同 这里对配置文件里重要的一些项进行说明: 1、VIP (virtual ip)。直接路由模式的 VIP 必须跟服务器对外提供服务的 IP 地址在同一个网段,并且 LVS 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 负载均衡器和其他所有提供相同功能的服务器都使用这个 VIP。 2、VIP 被绑定在环回接口 lo0:0 上,其广播地址是其本身,子网掩码是 255.255.255.255。这与标准的 网络地址设置有很大的不同。采用这种可变长掩码方式把网段划分成只含一个主机地址的目的是避免 ip 地 址冲突。 3、 echo “1”,echo “2”这段的作用是抑制 arp 广播。 5、打开客户机访问测试 VIP:10.0.0.10 A:访问测试 B:多次访问测试 [root@CentOS ~]# for i in $(seq 1 1500);do curl http://10.0.0.10;done 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 六、LVS 集群 TUN 模式实例 1、试验拓扑图 2、环境描述 负载均衡器 DIP eth0:10.0.0.11 VIP 10.0.0.10 节点服务器 RIP 10.0.0.13 10.0.0.14 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 3、负载均衡器安装和配置 A:安装 ipvsadm B:编写脚本 [root@localhost ~]# vi /etc/init.d/lvsdstun #!/bin/bash VIP=10.0.0.10 RIP1=10.0.0.13 RIP2=10.0.0.14 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of DirectorServer Tun" # /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up # /sbin/route add -host $VIP dev eth0:0 /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev tunl0 /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i /sbin/ipvsadm ;; stop) echo "stop LVS of DirectorServer Tun" # /sbin/ifconfig eth0:0 down /sbin/ifconfig tunl0 down /sbin/ipvsadm -C ;; *) echo "Usage: $0 {start|stop}" exit 1 esac 4、节点服务器配置 [root@localhost ~]# vi /etc/init.d/lvsrstun #!/bin/bash #Description start lvs RealServer Tun 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ VIP=10.0.0.10 . /etc/rc.d/init.d/functions case "$1" in start) echo "start lvs of RealServer Tun" /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev tunl0 echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce ;; stop) echo "stop lvs of RealServer Tun" /sbin/ifconfig tunl0 down echo "0" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ ;; *) echo "Usage:$0 {start|stop}" exit ;; esac 5、测试 ifconfig tunl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 uproute add -host 222.90.88.88 dev tunl0 ifconfig tunl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 uproute add -host 222.90.88.88 dev tunl0 ifconfig tunl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 uproute add -host 222.90.88.88 dev tunl0 看详细情况 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ [root@localhost ~]# ipvsadm -lnc IPVS connection entries pro expire state source virtual destination TCP 00:46 FIN_WAIT 10.1.1.100:2618 10.0.0.10:80 10.0.0.13:80 TCP 01:58 FIN_WAIT 10.1.1.100:2640 10.0.0.10:80 10.0.0.13:80 TCP 01:58 FIN_WAIT 10.1.1.100:2641 10.0.0.10:80 10.0.0.14:80 TCP 01:57 FIN_WAIT 10.1.1.100:2636 10.0.0.10:80 10.0.0.13:80 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 七、LVS 负载均衡集群剖析 1、LVS 有那几种工作模式?分别是怎样工作的? 1.1 LVS 有三种工作模式,分别为 LVS-NAT 模式、LVS-DR 和 LVS-TUN 模式。 1.2 LVS-NAT 模式工作过程: A:用户通过 VIP(Virtual IP, 即负载均衡器的外部地址) 访问服务。 (源:CIP 目标:VIP) B:当请求报文到达负载均衡器时,均衡器以负载均衡调度算法的方法从一组真实服务器选出一个 ,将 报文的目的地址 VIP 改写成选定服务器的地址,报文的目的端口改写成选定服务器的相应端口.最后,将报 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 文发送给选定的服务器 。同时,均衡器在 hash 表中记录这个连接。( 当这个连接的下一个报文到达时,从 hash 表中可以得到原选定服务器的地址和端口,进行同样的改写操作。) (源:VIP 目标:RIP) C:真实服务器的回应报文经过负载均衡器时,将报文的源地址和源端口改为 VIP 和相应的端口。 再把 报文发给用户。当连接终止或超时时,负载均衡器将这个连接从 hash 表中删除。这样,用户看到的只是在 virtual IP 上提供的服务。而虚拟服务器的结构对用户是透明的。 (源:CIP 目标:CIP) 1.3 LVS-DR 模式工作过程: A:client 发送一个请求到 LVS 服务器的 VIP 上 B:LVS 调度器根据设定的负载均衡算法选取一台 RealRerver 的 IP,并选取这个 IP 的 MAC 地址作为目 标 MAC,然后重新将 IP 包封装成帧转发给这台 RealServer,(这个新包的目的地址是 RealRerver 的 IP , 源地址是 CIP)LVS 并在 hash 表中记录该次连接。 C:RealServer 收到这个请求封装包,因为数据帧的 MAC 地址是选出的服务器,所以真实服务器肯定可 以接收到该报文。 服务器发现 VIP 地址被配置在本地的网络设备上,所以就处理这个请求,然后根据路由 表将响应报文直接返回给客户。 1.4 LVS-TUN 模式工作过程: A:client 发送一个请求到 LVS 服务器的 VIP 上 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ B:负载均衡器根据各个服务器的负载情况,动态地选择一台服务器 , 将请求报文封装在另一个 IP 报 文中,在将封装后的 IP 报文转发给选出的服务器。 C:真实服务器接到报文后,先将报文解包获得原来目标地址为 VIP 的报文 ,服务器发现 VIP 地址被配置 在本地的 IP 隧道设备上,所以就处理这个请求, 然后根据路由表将响应报文直接返回给客户。(请求报文 的目标地址为 VIP,响应报文的源地址也为 VIP,所以响应报文不需要作任何修改,可以直接返回给客户, 客户认为得到正常的服务,而不会知道是哪一台服务器处理的) 2、 LVS/DR 如何处理请求报文的,会修改 IP 包内容吗? 2.1 LVS-DR 本身不会关心 IP 层以上的信息, 即使是端口号也是 tcp/ip 协议栈去判断是否正确, vs/dr 本身主要做这么几个事: 1)接收 client 的请求,根据你设定的负载均衡算法选取一台 realserver 的 ip; 2)以选取的这个 ip 对应的 mac 地址作为目标 mac,然后重新将 IP 包封装成帧转发给这台 RS; 3)在 hash table 中记录连接信息。 vs/dr 做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。 数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client 2.2 vs/dr 不会修改 IP 包的内容。只是修改 IP 包的目的 MAC 地址。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 3、 RealServer 为什么要在 lo 接口上配置 VIP,在出口网卡上配置 VIP 可以吗? 1) 既然要让 RS 能够处理目标地址为 vip 的 IP 包,首先必须要让 RS 能接收到这个包。在 lo 上配置 vip 能够完成接收包并将结果返回 client。 2) 答案是不可以将 VIP 设置在出口网卡上,否则会响应客户端的 arp request,造成 client/gateway arp table 紊乱,以至于整个 load balance 都不能正常工作。 4、 RealServer 为什么要抑制 arp 帧? 这个问题在上一问题中已经作了说明,这里结合实施命令进一步阐述。我们在具体实施部署的时候都会 作如下调整: echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 我相信很多人都不会弄懂它们的作用是什么,只知道一定得有。我这里也不打算拿出来详细讨论,只是 作几点说明,就当是补充吧。 1) 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 这两条是可以不用的,因为 arp 对逻辑接口没有意义。 2) 如果你的 RS 的外部网络接口是 eth0,那么 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 其实真正要执行的是: echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce 所以我个人建议把上面两条也加到你的脚本里去,因为万一系统里上面两条默认的值不是 0,那有可能 是会出问题。 5、 LVS/DR load balancer(director)与 RS 为什么要在同一网段中? LVS-DR 本身不会关心 IP 层以上的信息,主要 LB 的主要任务: 1)接收 client 的请求,根据你设定的负载均衡算法选取一台 realserver 的 ip; 2)以选取的这个 ip 对应的 mac 地址作为目标 mac,然后重新将 IP 包封装成帧转发给这台 RS; 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 3)在 hash table 中记录连接信息。 它是在数据链路层来实现的,所以 director 必须和 RS 在同一网段里面。 6、 为什么 director 上 eth0 接口除了 VIP 另外还要配一个 ip(即 DIP)? 6.1 如果是用了 keepalived 等工具做 HA 或者 Load Balance,则在健康检查时需要用到 DIP 6.2 没有健康检查机制的 HA 或者 Load Balance 则没有存在的实际意义. 7、 LVS/DR ip_forward 需要开启吗? 不需要。因为 director 跟 realserver 是同一个网段,无需开启转发。 8、 lvs/dr 里,director 的 vip 的 netmask 必须设置为 255.255.255.255,也不需要再去 route add -host $VIP dev eth0:0 ? director 的 vip 本来就是要像正常的 ip 地址一样对外通告的,不要搞得这么特殊。 [root@localhost ~]# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:16:36:75:8A:EA inet addr:10.0.0.10 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 [root@localhost ~]# route del -host $VIP dev eth0:0 [root@localhost ~]# route 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0 9、LVS-TUN 模式调度器 VIP 绑定在 eth0 上是否可行? #!/bin/bash VIP=10.0.0.10 RIP1=10.0.0.13 RIP2=10.0.0.14 echo " start LVS of DirectorServer Tun" /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up sbin/route add -host $VIP dev eth0:0 #/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ #/sbin/route add -host $VIP dev tunl0 /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i /sbin/ipvsadm [root@localhost ~]# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:16:36:75:8A:EA inet addr:10.0.0.10 Bcast:10.0.0.10 Mask:255.255.255.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 提交两次访问 http://10.0.0.10 [root@localhost ~]# ipvsadm -lnc IPVS connection entries pro expire state source virtual destination TCP 01:56 FIN_WAIT 10.1.1.100:2790 10.0.0.10:80 10.0.0.13:80 TCP 01:55 FIN_WAIT 10.1.1.100:2789 10.0.0.10:80 10.0.0.14:80 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 10、 LVS-TUN 模式 VIP 绑定在 eth0 上,那么设为正常 IP 子网 255.255.255.0 是否可以? [root@localhost ~]# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:16:36:75:8A:EA inet addr:10.0.0.10 Bcast:10.0.0.10 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 提交两次访问 http://10.0.0.10 [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.10:http rr -> 10.0.0.14:http Tunnel 1 0 1 -> 10.0.0.13:http Tunnel 1 0 1 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 11、LVS-TUN 模式可以跨网段工作吗? DIP:10.0.0.11 VIP:10.0.0.10 RIP:10.10.10.2 10.0.0.13 10.0.0.14 A:测试负载均衡器 DIP 和跨网段 RIP 通讯测试 跨网段 RealServer 的 RIP PING 负载均衡器 DIP [root@hab02 ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:16:36:22:34:D2 inet addr:10.10.10.2 Bcast:10.10.10.255 Mask:255.255.255.0 [root@hab02 ~]# ping 10.0.0.11 PING 10.0.0.11 (10.0.0.11) 56(84) bytes of data. 64 bytes from 10.0.0.11: icmp_seq=1 ttl=63 time=0.697 ms 64 bytes from 10.0.0.11: icmp_seq=2 ttl=63 time=0.275 ms 负载均衡器 DIP PING 跨网段 RealServer 的 RIP [root@localhost ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:16:36:75:8A:EA inet addr:10.0.0.11 Bcast:10.0.0.255 Mask:255.255.255.0 [root@localhost ~]# ping 10.10.10.2 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data. 64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=0.277 ms 64 bytes from 10.10.10.2: icmp_seq=2 ttl=64 time=0.174 ms B:配置负载均衡器 [root@localhost ~]# service lvsdstun start start LVS of DirectorServer Tun IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.10:http rr -> 10.10.10.2:http Tunnel 1 0 0 -> 10.0.0.14:http Tunnel 1 0 0 -> 10.0.0.13:http Tunnel 1 0 0 提交 3 次访问 [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.10:http rr -> 10.10.10.2:http Tunnel 1 0 1 -> 10.0.0.14:http Tunnel 1 0 1 -> 10.0.0.13:http Tunnel 1 0 1 [root@localhost ~]# ipvsadm -lnc IPVS connection entries pro expire state source virtual destination TCP 00:39 FIN_WAIT 10.1.1.100:2867 10.0.0.10:80 10.0.0.14:80 TCP 00:40 FIN_WAIT 10.1.1.100:2868 10.0.0.10:80 10.0.0.13:80 TCP 00:40 FIN_WAIT 10.1.1.100:2869 10.0.0.10:80 10.10.10.2:80 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 12、 RealServer 为什么要在 tunl0 接口上配置 VIP,如果在出口网卡上配置 VIP 可以吗? 要让 RS 能够处理目标地址为 vip 的 IP 包,首先必须要让 RS 能接收到这个包。而且工作模式为 IP TUN 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 模式,它是将请求报文封装在另一个 IP 报文中,在将封装后的 IP 报文转发给 RS 服务器。真实服务器接到报 文后,先将报文解包获得原来目标地址为 VIP 的报文 ,而且 VIP 地址要被配置在本地的 IP 隧道设备上,所 以就处理这个请求,然后根据路由表将响应报文直接返回给客户。 将一 RS 的 VIP 绑定在 eth0 上,发现请求失败。 13、LVS-TUN 是否只能实现 HTTP 请求?能实现 FTP 负载均衡吗?如果可行需要多个 VIP 吗? A:负载调度器 VIP=10.0.0.10 RIP1=10.0.0.13 RIP2=10.0.0.14 /sbin/ipvsadm -A -t $VIP:21 -s rr -p /sbin/ipvsadm -a -t $VIP:21 -r $RIP1:21 -i /sbin/ipvsadm -a -t $VIP:21 -r $RIP2:21 -i [root@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.10:ftp rr persistent 360 -> 10.0.0.14:ftp Tunnel 1 0 0 -> 10.0.0.13:ftp Tunnel 1 0 0 TCP 10.0.0.10:http rr -> 10.10.10.2:http Tunnel 1 0 0 -> 10.0.0.14:http Tunnel 1 0 0 -> 10.0.0.13:http Tunnel 1 0 0 B:节点服务器 [10.0.0.14@localhost ~]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [10.0.0.14@localhost ~]# touch /var/ftp/ftp.10.0.0.14 [10.0.0.13@localhost ~]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [10.0.0.13@localhost ~]# touch /var/ftp/ftp.10.0.0.13 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ C:访问测试(可以从多台客户机同时访问) 14、关于 arp_ignore 和 arp_announce 是什么意思? 1) arp_announce : INTEGER 不同取值表示对网络接口上本地 IP 地址发出的 ARP 回应作出相应级别的限 制:确定不同程度的限制,宣布对来自本地源 IP 地址发出 Arp 请求的接口。 0 - (默认) 在任意网络接口上的任何本地地址 1 -尽量避免不在该网络接口子网段的本地地址。当发起 ARP 请求的源 IP 地址是被设置应该经由路由达 到此网络接口的时候很有用,此时会检查来访 IP 是否为所有接口上的子网段内 ip 之一,如果该来访 IP 不 属于各个网络接口上的子网段内,那么将采用级别 2 的方式来进行处理。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 2 - 对查询目标使用最适当的本地地址。在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该 地址通信的本地地址,首要是选择所有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地 址,如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该 ARP 回应的网络接口 来进行发送。 2) arp_ignore : INTEGER 定义对目标地址为本地 IP 的 ARP 询问不同的应答模式。 0 - (默认值): 回应任何网络接口上对任何本地 IP 地址的 arp 查询请求。 (比如 eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使 eth0 收到来自 10.1.1.2 这样地址发起的对 10.1.1.1 的 arp 查询也会回应--而原本这个请求该是出现在 eth1 上,也该有 eth1 回应的) 1 –只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求。 (比如 eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使 eth0 收到来自 10.1.1.2 这样地址发起的对 192.168.0.1 的查询会回答,而对 10.1.1.1 的 arp 查询不会回应) 2 -只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求,且来访 IP 必须在该网络接口的子网段 内(比如 eth0=192.168.0.1/24,eth1=10.1.1.1/24,eth1 收到来自 10.1.1.2 这样地址发起的对 192.168.0.1 的查询不会回答,而对 192.168.0.2 发起的对 192.168.0.1 的 arp 查询会回应) 3 - 不回应该网络界面的 arp 请求,而只对设置的唯一和连接地址做出回应 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 15、lvs 工作在哪层? 1) 当 LVS 工作在 NAT 模式下,是工作在 OSI 模型的第四层,因为 LB 必须修改第四层报头信息,包括 IP 地 址和端口,在选择 RS 的时候不但要看 IP 地址,还要看端口,也即在 NAT 模式下 lvs 支持基于同一 IP 不同端口 的第四层负载均衡。 2) 在 DR 模式下,LB 根本都不用拆包到网络层,因为 LB 根本就不用将 IP 包拆开,直接在链路层将目的 MAC 地址改成 RS 的 MAC 地址就完成了转发工作。转发规则里是以 IP 的形式呈现,但是获得目的 IP 的 MAC 地址则 是通过 arp 协议来完成,仍旧是链路层,所以确切地说 DR 模式在包处理上工作在链路层,而在 RS 的选择上(也 就是负载均衡)是根据转发规则里的 IP 地址和调度算法,而虚拟服务端口必须与 RS 服务端口一致,所以 LVS/DR 模式单独讲负载均衡功能而言的话,它是工作在网络(IP)层。 3) TUN 模式主要是 IP 封装,根据 IP 地址进行选择 RS,也是网络层负载均衡。 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 16、三种调度模式能否混合使用? 调度器 10.0.0.12(10.1.1.1) VIP:10.0.0.10 节点 1 10.1.1.1.11 GW:10.1.1.1 节点 2 10.0.0.13 VIP(lo):10.0.0.10 节点 3 10.0.0.14 VIP(tunl0):10.0.0.10 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ A:负载调度器配置 调度器 eth0 10.0.0.12 eth1 10.1.1.1 VIP=10.0.0.10 RIP1=10.1.1.11 RIP2=10.0.0.13 RIP3=10.0.0.14 /sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up /sbin/route add -host $VIP dev eth0:0 /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -m /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i /sbin/ipvsadm [10.0.0.12@localhost ~]# service lvs3mod start start LVS of DirectorServer 3MOD 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.10:http rr -> 10.0.0.14:http Tunnel 1 0 0 -> 10.0.0.13:http Route 1 0 0 -> 10.1.1.11:http Masq 1 0 0 B:节点服务器设置 RS1 设置 NAT 模式(10.1.1.11) 开启 http 服务,网关设为 10.1.1.1 [10.1.1.11@localhost ~]# ifconfig eth0 10.1.1.11 netmask 255.255.255.0 up [10.1.1.11@localhost ~]# route add default gw 10.1.1.1 [10.1.1.11@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 eth0 [10.1.1.11@localhost ~]# service httpd start 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ [10.1.1.11@localhost ~]# echo "10.1.1.11 web">/var/www/html/index.html RS2 设置 DR 模式(10.0.0.13) [10.0.0.13@localhost ~]# yum install httpd [10.0.0.13@localhost ~]# service httpd start [10.0.0.13@localhost ~]# echo "10.0.0.13 web">/var/www/html/index.html VIP=10.0.0.10 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce RS3 设置 TUN 模式(10.0.0.14) [10.0.0.14@localhost ~]# yum install httpd [10.0.0.14@localhost ~]# service httpd start [10.0.0.14@localhost ~]# echo "10.0.0.13 web">/var/www/html/index.html 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ VIP=10.0.0.10 /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev tunl0 echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce C:测试 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ [10.0.0.12@localhost ~]# ipvsadm -lcn IPVS connection entries pro expire state source virtual destination TCP 00:31 FIN_WAIT 10.8.8.200:2161 10.0.0.10:80 10.0.0.14:80 TCP 01:49 FIN_WAIT 10.8.8.200:2209 10.0.0.10:80 10.1.1.11:80 TCP 01:25 FIN_WAIT 10.8.8.200:2198 10.0.0.10:80 10.0.0.13:80 混合模式设置应一步步的进行,如先配置 LVS/NAT 模式,待此模式测试正常后再加上 LVS/DR 模式,再 次加上 LVS/TUN 模式,最后进行综合测试。 17、负载均衡器能否即做调度器又做节点服务器使用? 1)测试负载调度器开启相应端口,是否影响负载分发 [10.0.0.12@localhost ~]# service httpd start 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ Starting httpd: [ OK ] 此时,调度器上开启了 Apache 服务并产生了 80 端口,而且绑定了 VIP:10.0.0.10,那么我们访问此 VIP 的 80 端口,是否负载分发呢?答安是肯定的,依然负载分发。 2)将负载调度器作为节点服务器加入集群节点 [10.0.0.12@localhost ~]# echo "10.0.0.12 Director">/var/www/html/index.html [10.0.0.12@localhost ~]# ipvsadm -a -t 10.0.0.10:80 -r 127.0.0.1 [10.0.0.12@localhost ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.10:http rr -> localhost.localdomain:http Local 1 0 0 -> 10.0.0.14:http Tunnel 1 0 2 -> 10.0.0.13:http Route 1 0 2 -> 10.1.1.11:http Masq 1 0 1 3)测试工作 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 附一、ISO 文件做本地 YUM 源 Red Hat 系列 Linux 操作系统,可以用 YUM 进行安装软件包,最大的优点就是可以从网上自动下载并安 装,解决了手动用 RPM 命令安装而且产生大量依赖包的烦恼。 操作步骤: 1、 挂载 ISO 文件到本地目录 [root@CentOS ~]# mkdir /mnt/iso [root@CentOS ~]# mount -o loop /data/CentOS-5.5-i386-bin-DVD.iso /mnt/iso/ 如果 ISO 文件不在本地存储,而在服务器上,可以用 NFS 服务,把 NFS 目录挂载到本地,再把已经挂 载的 NFS 目录中的 ISO 文件挂载到本地目录。如: [10.0.0.12@localhost ~]# mount -t nfs 192.168.1.5:/data /mnt/nfs [10.0.0.12@localhost ~]# mount -o loop /mnt/nfs/CentOS-5.5-i386-bin-DVD.iso /mnt/iso/ [10.0.0.12@localhost ~]# df -h 192.168.1.5:/data 133G 23G 104G 18% /mnt/nfs /mnt/nfs/CentOS-5.5-i386-bin-DVD.iso 3.9G 3.9G 0 100% /mnt/iso 2、 编辑本地 YUM 配置文件 [10.0.0.12@localhost ~]# cd /etc/yum.repos.d/ 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ 备份原有的配置文件 [10.0.0.12@localhost yum.repos.d]# mkdir bak [10.0.0.12@localhost yum.repos.d]# mv *.repo bak [10.0.0.12@localhost yum.repos.d]# vi iso.repo [c5-media] name=CentOS baseurl=file:///mnt/iso/ gpgcheck=1 enabled=1 3、使用 YUM 进行安装 [10.0.0.12@localhost ~]# yum clean all [10.0.0.12@localhost ~]# yum install httpd 注:如果安装出现以下错误提示 Total warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897 Public key for postgresql-libs-8.1.18-2.el5_4.1.i386.rpm is not installed 这是由于 yum 安装了旧版本的 RPM-GPG-KEY 造成的,解决办法就是 制作人:赶星 联系方式:QQ 10908105 E-mail:hurrystart@foxmail.com RMVB 视频免费送 http://shop62228870.taobao.com/ [10.1.1.12@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY- RPM-GPG-KEY-beta RPM-GPG-KEY-CentOS-5 [10.1.1.12@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
还剩67页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

xianfofo

贡献于2014-07-12

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf