专栏首页Linux、云计算技术交流第二章 负载均衡LB服务之LVS(二)

第二章 负载均衡LB服务之LVS(二)

第二章 负载均衡LB服务之LVS(二)

2.4 LVS实验案例

2.4.1 LVS集群配置思路

LVS配置集群其实比较简单,首先需要在LVS服务器安装ipvsadm、iptables-services服务,命令如下:

yum -y install ipvsadm iptables-services

然后创建集群,并指定算法,然后加入节点主机,设置工作模式即可。具体相关命令如下:

ipvsadm -A -t VIP:port -s 算法 --- -A 添加一个管理集群

ipvsadm -a -t VIP:port -r node主机ip:port -模式 -w 权重

--- -a 给某个集群添加node主机,-r 指定node主机信息 -t tcp 协议

--- –u udp协议 -模式:-m nat模式 -g dr模式 -i tun模式

ipvsadm -C ---清空集群设置

ipvsadm -L ---查看集群

ipvsadm-save -n > /etc/sysconfig/ipvsadm ---永久保存集群设置

2.4.2 NAT模式

NAT模式的实验,我们按下图部署实验环境:

实验中需要四台虚拟机,其中三台CentOS7.4做服务集群,一台windows做客户端。

我们首先按图中所示,配置各主机的ip,两台web服务配置网关指向LVS内网卡。然后两台web服务器上部署apache服务,页面分别为web1.test.com和web2.test.com,访问效果如下图所示:

注:其实在生产环境中,web节点服务器的页面应该是一样的,此处我们为了显示出LVS的均衡效果,故意设置成不同的页面。

然后,我们来配置LVS服务器。我们本可以逐步输入命令实现LVS集群效果,但是为了让LVS服务器每次重启,都可以启动LVS服务,所以,我们可以把配置命令写入到脚本中,这样设定脚本开机自动运行,就可以永久生效了。具体脚本如下:

vi /usr/lib/sysctl.d/00-system.conf

net.ipv4.ip_forward =1 ---开启路由

注:nat功能的前提是路由,所以要先开路由

systemctl restart network ---重启network服务,路由生效

vi /mnt/lvs_nat.sh ---编辑脚本

#!/usr/bin/bash

VIP=202.0.0.1 ---定义变量,指定服务ip,即VIP

iptables -F ---清空防火墙常规三链中规则

iptables -F -t nat ---清空nat代理链中规则

iptables -X ---清空计数器

iptables -Z ---清空自定义链

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE ---开nat

ipvsadm -C ---清空现有集群设置

ipvsadm -A -t $VIP:80 -s wrr ---创建集群,并指定算法为 wrr

ipvsadm -a -t $VIP:80 -r 192.168.10.1:80 -m -w 2 ---加入节点

ipvsadm -a -t $VIP:80-r 192.168.10.2:80 -m -w 3 ---加入节点

chmod a+x /mnt/lvs_nat.sh ---给脚本增加执行权限

/mnt/lvs-nat.sh ---运行脚本

以上脚本中,首先清理了iptables防火墙策略,然后清理了原有集群。然后开启nat代理功能,在这里nat功能并未按照我们之前教材中讲过的用-j SNAT --to-source设置,而是直接用-j MASQUERADE开启了nat,其实功能是一样的,只是用MASQUERADE设置即直接用外网卡ip做代理ip,不用再--to-source明确指定了。然后使用ipvsadm –A命令创建集群,指定服务ip及端口,又指定了分配算法。然后给集群加入节点,并指定给节点分配是采用的模式,以及节点权重。

好了,运行完毕脚本,就可以使用客户机访问VIP验证LVS效果了:

使用客户端,多次访问VIP地址,可见到显示不同的页面,说明是被LVS分配到了内部不同的web节点上。而且再多访问几次会发现web2页面出现的次数更多一些,这是因为我们设定的web2服务器权重更高。

当访问成功后,我们可以使用 ipvsadm -L 查看一下配置好的集群信息:

图中可见集群服务器centos7-1即本机的http端口使用wrr算法,下面显示的是两台节点主机信息,Forward列表示转发模式为Masq(即nat),Weight列表示权重。

如果我们想要更改算法,可以使用下面命令:

ipvsadm -E -t 202.0.0.1:80-s wrr

更改完毕可以再次ipvsadm -L 查看到使用的是新算法了。

然后用 ipvsadm-save -n >/etc/sysconfig/ipvsadm 命令永久保存集群设置。

2.4.3 TUN隧道模式

隧道模式,我们使用上图的实验环境,LVS服务器单网卡,需要五台虚拟机,其中一台配置为路由器,开启路由功能。读者可根据上图自行配置各主机ip及网络环境。下面我们主介绍LVS服务器及节点服务器的配置。

首先LVS服务器配置完毕网卡ip后,安装ipvsadm、iptables-services软件包,然后编写如下脚本:

vim /mnt/lvs_tun.sh

#!/bin/bash

VIP=192.168.10.100

RIP1=192.168.10.2

RIP2=192.168.10.3

ipvsadm –C ---清除原有集群设置

ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 up

route add -host $VIP dev ens33:0

ipvsadm -A -t $VIP:80 -s wlc

ipvsadm -a -t $VIP:80 -r $RIP1:80 -i -w 1

ipvsadm -a -t $VIP:80 -r $RIP2:80 -i -w 1

chmod a+x /mnt/lvs_tun.sh

为了与上面的nat模式区别清除,我们可以先清理一下iptables的链规则:

iptables -F ---清空防火墙常规三链中规则

iptables -F -t nat

./mnt/lvs_tun.sh ---执行脚本

上述脚本中,同样先定义了变量指定了VIP与内部节点服务器的真实ip,即RIP,然后清除了原有集群,再给网卡创建了子接口:ens33:0,并绑定了VIP。然后增加了一条静态路由,指示到达VIP的数据通信使用虚拟子接口发送数据,即走隧道通信。由此可知,LVS的TUN隧道模式,是通过虚拟子接口与节点服务器通信的,过程中实现二次封装。最后创建集群,加入节点服务器,当然,在这里我们也可以直接指定节点服务器的RIP,而不使用变量获取RIP的值。

好了,LVS服务器配置完毕,我们来查一下集群信息:

图中可见到转发类型为Tunnel,即隧道模式。

我们在来给web节点服务器配置VIP。同样给web节点主机编写脚本

vi /mnt/web.sh

#!/bin/bash

VIP=192.168.10.100

ifconfig tunl0 down ---注意,此处的tunl0最后两个字符是小写L和零

ifconfig tunl0 up ---重启隧道接口

ifconfig tunl0 $VIP broadcast $VIP netmask255.255.255.255 up

echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

route add -host $VIP dev tunl0

以上脚本中,先是创建了隧道接口tunl0,为了避免与曾经做过的隧道冲突,所以先重启了一下,然后给隧道接口绑定VIP,再下面的六行与arp相关的代码,是关闭arp功能的,上节我们讲过,LVS与节点主机都绑定VIP会被arp协议报ip冲突错误,所以关闭arp协议后就可以了。最后增加一条路由指定隧道通信。

chmod a+x /mnt/web.sh

./mnt/web.sh ---执行脚本

两台web节点都运行上面的脚本,即可成功完成节点配置。

然后使用客户端多次访问http://192.168.10.100站点,即会发现是轮流访问到两台节点主机了。

2.4.4 DR直连模式

直连模式,使用上图中网络环境,共五台虚拟机。同样我们先配置好网络参数,然后配置好两台节点服务器的web服务。

然后我们仍然以编辑脚本的方式配置LVS服务器:

vi /mnt/lvs-dr.sh

#!/bin/bash

VIP=192.168.10.100

RIP1=192.168.10.2

RIP2=192.168.10.3

ifconfig ens33:0$VIP netmask 255.255.255.0 up

route add -host $VIP devens33:0

ipvsadm -C

ipvsadm -A -t $VIP:80 -swlc

ipvsadm -a -t $VIP:80 -r$RIP1:80 -g -w 1

ipvsadm -a -t $VIP:80 -r$RIP2:80 -g -w 1

chmod a+x lvs-nat.sh

./lvs-dr.sh ---执行脚本

脚本中的配置思路,与TUN模式十分类似。

ipvsadm -L ---查看集群,可见Forward列显示是Route,表示直连模式

再来编写web节点服务器的脚本:

vi /mnt/web2.sh

#!/bin/bash

VIP=192.168.10.100

ifconfig lo:0 $VIPnetmask 255.255.255.255 broadcast $VIP

route add -host $VIP devlo:0

echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

chmod a+x web2.sh

./web2.sh ---执行脚本

这个脚本中,并未启动隧道接口,而是把VIP绑定给了主机内部的回环测试接口(loopback,即127.0.0.1接口)的子接口,增加的路由也是指定的lo的子接口。同样关闭了arp响应。

两台节点主机都执行web2.sh脚本后,即可以正常工作了。

然后可以使用客户机,多次访问http://192.168.10.100,证明LVS的均衡成功。

当然,一台节点服务器加入集群后,工作模式也是可以更改的,我们可以在LVS服务器上输入如下命令:

ipvsadm -e -t 192.168.10.100:80 -r 192.168.10.2:80 -i -w 1

但由于更改模式后,其他相关配置也需要相应的更改,不甚方便,所以这种操作使用较少。

本文分享自微信公众号 - 教主小筑(gh_e0879483602d),作者:教主小筑

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第二章 负载均衡LB服务之LVS

    上一章我们介绍过,负载均衡服务是由一组服务器共同完成同一个服务,它的具体原理是:一组服务器中选择一台作为主管理服务器,其他服务器其在它管辖之下,称为内部服务节点...

    晓天
  • 第三章 负载均衡LB服务之Haproxy(二)

    客户端访问http://202.0.0.1时,要把请求分发到192.168.10.100、192.168.5.102,这两台服务器上。

    晓天
  • 第三章 负载均衡LB服务之Haproxy

    上一章,我们介绍了LVS负载均衡,其实在实际生产环境中,Linux系统中的LB功能还有haproxy、Nginx方向代理等多种工具可以实现。本章将介绍Hapro...

    晓天
  • 第三章 负载均衡LB服务之Haproxy(三)

    在上一节的案例中我们看到,通过acl可设定URI的访问规则,那么里面的hdr(host)是什么意思,又有哪些其他可以做设置的项呢?下面我们就来具体分析一下。

    晓天
  • 大点干!早点散----------深入剖析LVS负载均衡群集原理

    LVS在基本的生产环境中,都会同时运行在二台硬件相近的服务器上:LVS Router(主 LVS ),一个作为备份LVS(备份 LVS )。 主 LVS 服务...

    不吃小白菜
  • 紫金山沈洋:基于可编程交换机和智能网卡的四层负载均衡器

    在2020网络数据平面峰会上,来自紫金山实验室未来网络中心的研究员——沈洋给我们带来了《基于可编程交换机和智能网卡的四层负载均衡器》的主题演讲。

    SDNLAB
  • 20张图让你彻底掌握负载均衡的秘密!

    今天我们来深度揭秘一下负载均衡器 LVS 的秘密,相信大家看了你管这破玩意儿叫负载均衡?这篇文章后,还是有不少疑问,比如 LVS 看起来只有类似路由器的转发功能...

    kunge
  • Linux 集群总结 + LVS(负载均衡器)原理及配置

    相信你已经对集群分类有了大致了解了,那么我们现在详细说说使用LVS来实现负载均衡集群。

    小土豆Yuki
  • 搞懂分布式技术10:LVS实现负载均衡的原理与实践

    该系列博文会告诉你什么是分布式系统,这对后端工程师来说是很重要的一门学问,我们会逐步了解常见的分布式技术、以及一些较为常见的分布式系统概念,同时也需要进一步了解...

    Java技术江湖
  • 负载均衡知识汇总

    一、DNS轮询 1.实现 DNS配置多个IP域名解析(A记录) 2.优点 部署简单 3.缺点 非高可用(健康监测需人工干预) 会话状态需要共享(ses...

    苦咖啡
  • LVS负载均衡集群架构

    为什么需要使用负载均衡呢?这是一个必较重要的问题 实际生产环境中某单台服务器已不能负载日常用访问压力时,就需要使用负载均衡,把用户的请求数据分担到(尽可能平均...

    民工哥
  • 001.LVS简介及算法

    LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能。

    木二
  • 浅谈LVS

    集群(cluster),从字面上就知道,集与群都是多的概念。集群就是多台机器组合在一起共同完成一个需求。

    若与
  • LVS原理知多少?

    LVS简介   Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来讲, CP...

    小小科
  • 企业集群平台架构设计与实现--LVS篇(一)

    应用的负载均衡器实现方案很多,有基于硬件的F5方式,也有基于软件的Linux LVS方式。在云计算中,私有云一般采用硬件防火墙来实现负载均衡器,...

    希望的田野
  • LVS+Keepalived高可用环境部署梳理(主主和主从模式)

    在介绍LVS之前,先介绍下集群的概念 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义...

    洗尽了浮华
  • 集群——菜鸟学习Linux集群之概念篇

        前两天学习了集群的应用,简单总结下:集群并不是很高深难懂的知识,只要掌握其原理,那么实现起来并不是很困难。下面我们一起来简单学习下集群。 什么是集群? ...

    端碗吹水
  • 大点干!早点散----------负载均衡LVS-DR群集部署

    cip为客户端的地址 vip为虚拟地址 rip为真实的服务器 lip为本地地址

    不吃小白菜
  • gRPC服务发现&负载均衡

    构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:

    李海彬

扫码关注云+社区

领取腾讯云代金券