集群介绍,lvs原理解析及实验

目录

第一部分:集群基本概念(着重介绍负载均衡集群)
第二部分:lvs
第三部分:实验部分

第一部分:集群的基本概念

一.集群的概念
多台服务器协作出来处理用户的业务

二.集群的分类
1.负载均衡集群(LBC,Load Blancing Clusters)
原理:通过调度算法,提高整个服务器集群接收访问量的能力,提高的是带宽,分担服务的总体压力

应用:WEB服务器,B/S架构,C/S架构,浏览器等

特点:每个子节点的工作内容是一致的,向外提供同一种服务,但不是同一个服务,每个节点有其对应的服务(即当我们访问淘宝时,用户A的请求可能被转发到后端负载均衡服务器AA上,用户B的请求可能被转发到后端的服务器BB上,用户A的请求和用户B的请求本质上都是对淘宝的访问,是同一种服务,但对于他们个人而言,他们各自请求的是他们各自的服务,即不是同一个服务)

2.高可用集群(HAC,High Avaliable Clusters)
原理:心跳检测,判断是否有服务器出现了问题,如果有问题那么集群中的(热备)服务器就会进行替代

应用:一些对稳定性要求较高的服务,当某台服务器出现了问题时,备份服务器可以进行快速的顶替,以防止服务的中断

特点:尽可能的保证服务状态的可用性

3.高性能计算集群(HPC,High Performance Computing)
原理:高性能计算区别去负载均衡集群的地方是,高性能计算集群每台服务器共同完成一项任务,每个服务器完成这个任务的一部分,而负载均衡集群是多台不同的任务(大部分情况下任务的类型是相同的)

应用:需要大量计算的一些工程,如DNA工程,或航天工程

特点:将任务分摊,节点工作一般不同,一个整体任务的一部分分配给不同的节点,缩短某个任务的时间,提供单台服务器不能提供的计算能力

三.负载均衡集群
1.工作形式
如下图,
负载均衡集群的工作形式:负载均衡服务器将来自客户的服务请求,通过算法的计算将服务分配到集群下的真实服务器中
两部分组成:负载调度器和真实服务器池

在这里插入图片描述
2.实现方法
负载均衡集群的分类有软件实现和硬件实现两类方法
软件实现的方法:LVS(四层,传输层),Nginx(七层,应用层)
硬件实现的方法:F5(二层,数据链路层)

第二部分:LVS(Linux Virtual Server


一.LVS(四层,传输层)的实现原理
最本质特点:用户和服务器之间只有一个TCP连接
实现关键:源目的地址的转换
调度器的作用就是转发数据包
在这里插入图片描述
1.用户访问网站在公网上的IP
2.用户访问数据包到达集群的负载均衡服务器时根据LVS规则库中的轮询规则,将数据包发往对应的真实服务器(通过DNAT,目的地址转换技术,改变目的地址)
3.真实服务器队用户的请求作出响应,先发送数据包到负载均衡控制器
4.再由负载均衡控制器进行SNAT(源地址转换)后,再将数据包发回

二.LVS环境下的工作模式
LVS环境下的工作模式一共有三种:
·NAT模式
·TUN模式(不详细介绍)
·DR模式(负载量最高)
在这里插入图片描述

1.NAT模式
在这里插入图片描述
特点:
(1)集群节点位于同一个网络环境中
(2)真实服务器的网关指向负载调度器
(3)DS(Director Server,负责服务器),负责进行地址转化
(4)进出数据报文都要经过负载调度器,压力较大

2.DR模式
在这里插入图片描述
特点:
(1)服务器集群有共同的虚拟IP地址,即对客户访问的地址,还有真实地址,虚拟地址可以认为是别名地址(其用意在于,让RS真实服务器发出的报文的源地址就是客户的目的地址,而不需要再通过DS的转换过程,直接通过路由器出去,降低了DS的业务压力)
(2)真实服务器将网关指向真实路由器
(负载调度器只负责处理入站请求,压力较小)

实现这一模式,存在以下几个问题
1.如何将DS收到的用户请求包,转发给RS
解决方法:采用MAC地址,也就是走的是二层,报文的IP报头不改变,DS端进行轮询的时候将MAC地址改为需要处理的真实服务器的MAC,真实服务器收到之后,需要在真实服务器上添加路由条目来根据三层报文,送往指定的接口

2.如何控制RS,设置了别名IP之后,不发送ARP,来通告MAC地址(如果发送ARP通告,会造成局域网中交换机的MAC地址表混乱)
解决方法:修改ARP的相关参数
ARP响应级别
arp-ignore
0 只要本机配置有相应IP地址就对ARP请求作出相应 默认是这样的
1 仅在请求的目标地址配置在请求到达的网络接口时,才给与响应
(举个例子,RS 真实网卡 192.168.1.1 ,真实网卡的子接口192.168.1.2.如果将响应级别改为1时,那么真实物理网卡收到192.168.1.2的ARP请求时不会作出响应,那么别人就不会知道192.168.1.2是RS的一个别名IP地址,就不会造成局域网内混乱的情况)

arp-announce
0 将本机任何网络接口上的任何地址都向外通告
1 尽可能避免
2 仅向目标网络通告于其网络相匹配的地址信息

DR模式下 就需要我们使用
ignore 级别1
announce 级别 2

具体更改在 /etc/sysctl.conf 下

第三部分:lvs实验(通过lvs实现apache的负载均衡)

一.实验简单拓扑
在这里插入图片描述
本地windos充当客户端进行访问
在Vmware中开启三台虚拟机
一台作为DS:真实地址为192.168.10.10,别名IP为192.168.10.100
两台作为RS:真实地址分别为192.168.10.20和192.168.10.30,别名IP为192.168.10.100

二.实验思路及最终要显现的结果
思路:
1.DS作为负载均衡调度器DS,负责对用户的请求按照算法转发到后端的真实服务器上

2.后端的RS,上面安装了apache作为http服务器,RS1的初始化页面内容为“this is server 1,ip address is 192.168.10.20”,RS2的初始化页面内容为“this is server 2,ip address is 192.168.10.30”

3.本地Windows作为客户端通过浏览器访问192.168.10.100,不断的进行刷新,可以看到页面的内容不断的在2中描述的两个页面之间来回转换

三.配置思路
负载调度器的配置
1.关闭负载均衡调度器的防火墙和Selinux
2.关闭网卡的守护进程
3.拷贝创建子接口,子接口的IP地址为虚拟IP,并打开子接口
4.优化项:关闭主机的广播功能,对/etc/sysctl.conf进行修改,修改之后要写入
5.重载ipvs模块
6.安装ipvsadm工具
7.使用ipvsadm创建集群,增加子节点
配置完成后保存,并设置开机启动

RS的配置思路
1.关闭防火墙和Seliunx
2.关闭网卡守护进程
3.创建子接口
4.更改ARP参数,/etc/sysctl.conf
写入内核文件
5.打开对应子接口
6.添加去往子接口的路由

四.具体配置
负载调度器上的配置

##关闭网卡的守护进程
service NetworkManager stop 
即时关闭 setenforce 0   getenforce 
永久关闭 修改/etc/sysconfig/selinux 将enforcing改为
disabled    

##拷贝eth0网卡子接口充当集群入口接口
/etc/sysconfig/network-scripts下
cp ifcfg-eth0 ifcfg-eth0:0
将子接口下的内容修改,需要修改的地方
DEVICE = eth0:0
IPADDR = 虚拟的IP地址 ,即代表集群的IP地址
NETMASK = 对应子网掩码

##开启对应虚拟接口
ifup eth0:0

##关闭网卡重定向功能   即关闭广播功能
vim /etc/sysctl.conf
文件最后最后加入以下代码
net.iPv4.conf.all.send_redirects = 0 
net.iPv4.conf.all.send_redirects = 0 

sysctl -p 更新内核文件

##重载ipvs模块
modphrobe vs  

##安装ipvsadm命令行工具
rpm -ivh ipvsadm -1.261

##ipvsadm的用法
ipvasdm -v    查看当前ipvs集群内容
ipvsadm -A -t  <虚拟IP>:80 -s rr     添加ipvsTCP集群
ipvsadm -a -t  <虚拟IP>:80 -r 网站 1:80 -g    添加ipvsadm集群子节点

##保存ipvs集群内容至文件,进行持久化存储
service ipvsadm save

##设置为开机自启动
chkconfig ipvsadm on 

真实服务器上的配置

##关闭网卡守护进程
service NetworkManager stop

##拷贝环回网卡子接口
/etc/sysconfig/network-scripts下
cp ifcfg-eth0 ifcfg-lo:1
将子接口下的内容修改,需要修改的地方
DEVICE = lo:1
IPADDR = 虚拟的IP地址 ,即代表集群的IP地址
NETMASK = 对应子网掩码


##关闭对应ARP响应及其公告功能
修改文件为
/etc/sysctl.conf 
添加下列代码
net.ipv4.conf.all.arp_ignore =1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore =1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore =1
net.ipv4.conf.lo.arp_announce = 2

##将改变写入内核文件
sysctl -p

##打开对应子接口
ifup lo:1

##添加指向子接口的路由
route add -host <虚拟IP> dev lo:1  添加路由记录,当主机收到去往虚拟IP地址的数据包时送往子接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值