LVS负载均衡集群+NAT部署

集群的概念和目的

 集群的定义

Cluster,集群(也称群集)由多台主机构成,但对外只表现为一一个整体,只提供一-个访问入口(域名或IP地址), 相当于一台大型计算机。

集群的作用

对于企业服务的的性能提升一般会有两种方式:

垂直扩展向上扩展,增加单个机器的性能----->升级硬件

水平扩展向外扩展,增加设备。并行的运行多个服务,通过网络和算法来调度服务分配的问题。

集群的优点

  • 提高性能:计算密集应用。如天气预报,核试验模拟。
  • 降低成本:相对百万美元的超级计算机,价格便宜。
  • 提高可扩展性:只要增加集群节点即可。
  • 增强可靠性:多个节点完成相同功能,避免单点失败。

企业集群的类型

负载均衡(LB):提高应用系统的响应效率,处理更多的访问请求,减少延迟,提高并发和负载能力。 同时也是如今企业运用最多的群集类型。


高可用(HA): 提高应用系统的可靠性,减少服务中断时间,确保服务的连续性


高性能运算(HPC):将多台主机的硬件计算资源整合到一起实现分布式运用,比如 云计算 

集群的可靠性指标

MTBF:mean time between failure 系统在正常运行期间无故障的平均时间,一般用小时或者天数来表示。MTBF值越高,系统的可靠性越高,出现故障的概率也就越小。

MTTR:系统从发生故障到恢复正常运行的时间(解决问题花了多久),一般用小时或者天数表示。MTTR越小,说明系统恢复故障的能力越强。

A:系统的可靠性指标,越高越好

A=MTBF/(MTBF+MTTR)

设计集群时的考虑原则:

1.可扩展性:集群要有随时可以添加或者删除设备的能力。动态的扩缩容。

2.可靠性:集群中如果有节点发生故障,可以快速检测并且自动切换。

3.负载均衡:合理的分配负载,避免单个节点过载,影响整体性能

4.可维护性:能够方便的进行配置,部署,维护,监控。降低成本。

5.安全性:防止恶意的攻击以及数据的泄密,还有数据丢失。

6.易用性:相关的工作人员可以方便的进入集群,能够快速的开发,部署,测试等等。

LVS集群

lvs集群中的相关术语

vs(virtual server) lvs服务的逻辑名字,外部访问lvs集群时提供的一个虚拟IP地址和端口

DS Director server :lvs集群当中的主服务器,也叫调度器,是整个lvs集群的核心。接受客户端的请求转发到后端RS

RS:real server ,lvs的后端的真实服务器的IP,接受到了DS的请求之后,返回响应结果。

CIP:client ip 客户端的IP地址

VIP virtual ip :对外访问的统一虚拟IP地址。

DIP:Director IP调度器在lvs内部使用的IP地址。用于和真实服务器(RS)进行通信。

RIP:后端真实服务器的IP地址。

lvs负载均衡的方式

集群的负载调度技术有三种工作模式:地址转换(NAT模式) ,直接路由(DR模式),IP隧道(IP-TUN)。对于商用来说,最常用是NAT模式和DR模式。

NAT(地址转换) 


 缺点:调度器作为所有节点服务器的网关,既作客户端的访问入口,也作节点服务器响应的访问出口,也就意味着调度器将成为整个集群系统的瓶颈。

优点:由于再转发过程中做了地址转发,对于节点服务器的安全性比其它模式较好。

调度器至少要有2个网卡,一个承载VIP用于接收客户端的请求,另一个用于使用私有IP在同一个局域网中与节点服务器相互通信。
 

NAT模式的工作原理:

1.调度器上配置双网卡,一个指内,一个指外

2.配置一个可以和公网进行通信的VIP

3.配置转发策略,如果访问vip就会把请求的数据转发到后台的RS。

12.0.0.1:80 ------ 192.168.233.30:80

4.RS处理完请求之后响应客户端。先到调度器,调度器进行地址转换,把内网地址转换成公网地址,调度器响应给用户

192.168.233.30:80------调度器-----nat转换-------12.0.0.1:80 -------客户端

数据请求进入调度器做的是请求报文中ip地址的修改

数据响应进入调度器,根据NAT配置进行地址转换。

DR模式:

直接路由模式。请求由调度器完成,但是响应给客户端客户端由真实服务器直接响应,不需要通过调度器。

好处:性能高,而且可以配置代理地址(VIP)的高可用,不存在单点故障。

LVS的负载调度算法 

ipvsadm工具使用

用法 作用
-A 添加虚拟服务器
-D 删除整个虚拟服务器
-s(rr,wrr,dh.sh) 指定负载调度的算法


 固定调度算法:rr, wrr, dh,sh

rr:轮询算法(Round Robin)

  • 将请求依次分配给不同的RS节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。
  • 将收到的访问请求安装顺序轮流分配给群集指定各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载


wrr:加权轮询调度(Weighted Round Robin)

  • 依据不同RS的权重值分配任务。权重值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
  • 保证性能强的服务器承担更多的访问流量。


dh:目的地址哈希调度(destination hashing)

  • 以目的地址为关键字查找一个静态hash表来获得所需RS。


sh:源地址哈希调度(source hashing)

  • 以源地址为关键字查找--个静态hash表来获得需要的RS


 动态调度算法: wlc,lc,lblc 

lc:最小连接数调度( Least Connections)

  • ipvs表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。

wlc:加权最小连接数调度(Weighted Least Connections)

  • 假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次取Ti/Wi为最小的RS作为下一个分配的RS。
  • 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重。
  • 性能较高的节点将承担更大比例的活动连接负载。


lblc:基于地址的最小连接数调度(locality-based least-connection)

将来自同一个目的地址的请求分配给同一-台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

tomcat+NAT的部署

负载调度器:配置双网卡:20.0.0.10(内网)12.0.0.1(ens36)

两台后端web真实服务器:20.0.0.20 20.0.0.30

一台NFS共享服务器:20.0.0.40

客户端:40

LVS负载均衡集群+NAT部署_第1张图片

关闭防火墙
systemctl stop firewalld
setenforce 0

test2,test3,test4 安装
yum -y install nfs-utils rpcbind

test4为nfs共享目录
mkdir kgc benet
echo "this is kgc" > /opt/kgc/index.html
benet同理

vim /etc/exports
/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
systemctl restart rpcbind
systemctl restart nfs
exportfs -rv

test2 
systemctl restart rpcbind
systemctl trstart nfs
showmount -e 20.0.0.40
yum -y install httpd
mount 192.168.233.40:/opt/kgc /var/www/html

test3
systemctl restart rpcbind
systemctl trstart nfs
showmount -e 20.0.0.40
mount 20.0.0.40:/opt/benet /var/www/html
df -h


test2
curl 20.0.0.20

test3
curl 20.0.0.30

test2
配置网卡
vim ifcfg-ens33
gateway=20.0.0.10

test3
vim ifcfg-ens33
gateway=20.0.0.10

test1 调度器配置
vim ifcfg-ens33
#gateway
#dns1

给外网添加一个网卡
cp ifcfg-ens33 ifcfg-ens36
ipaddr=12.0.0.1
#gateway
#dns
systemctl restart network

yum -y install iptables-service iptables
iptables -F
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 12.0.0.1

iptables -t nat -vnL
查看

yum -y install ipvsadm*

ipvsadm -A -t 12.0.0.1:80 -s rr

ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.40:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.70:80 -m

ipvsadm-save>/etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service

ipvsadm -d -r 20.0.0.20:80 -t 20.0.0.10:80
ipvsadm -D -t 20.0.0.10:80


ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.40:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.70:80 -m
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm 
ipvsadm -ln

vim /etc/sysctl.conf
最后一行添加
net.ipv4.ip_forward=1
sysctl -p
ipvsadm -ln  查看

curl 12.0.0.1
this is kgc

开另一台客户机 
vim ifcfg-ens33
gateway=12.0.0.1
ipaddr=12.0.0.10
wq
systemctl restart network ifconfig

内部浏览器搜索12.0.0.1

LVS负载均衡集群+NAT部署_第2张图片

LVS负载均衡集群+NAT部署_第3张图片

LVS负载均衡集群+NAT部署_第4张图片

LVS负载均衡集群+NAT部署_第5张图片

LVS负载均衡集群+NAT部署_第6张图片

你可能感兴趣的:(lvs,负载均衡,java)