集群学习:LVS集群

目录

集群概述

一、LVS 相关原理

1.LVS简介

2.LVS工作模式

3.LVS调度算法

二、ipvsadm工具

1.ipvsadm工具简介

2.ipvsadm命令

三、LVS-DR集群

1.LVS-DR集群介绍

2.LVS-DR模式工作原理

3.LVS – DR 模式集群构建

四、LVS–NAT集群

1.LVS–NAT集群介绍

2.LVS–NAT工作原理

3.LVS–NAT模式集群搭建

集群概述

1.集群定义

集群是一种并行或分布式系统,该系统包括一个互连的整体计算机集合作为一种单一、统一的计算
资源使用。通过集群技术,我们可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面更高的收益。

2.集群分类

负载均衡集群( Load balancing clusters
高可用性集群( High-availability HA clusters
高性能计算集群( High-performance HPC clusters
网格计算( Grid computing
提示:前两种是互联网行业最常用的集群模式
3.常用集群软件
互联网企业常用的集群软件有: lvs keepalived haproxy nginx apache heartbeat

一、LVS 相关原理

1.LVS简介

LVSLinux Virtual Server的简称,也就是Linux虚拟服务器。使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

2.LVS工作模式

NAT模式(网络地址映射)
IP TUN模式(IP Tunneling IP隧道)
DR模式(Direct Routing 直接路由)


3.LVS调度算法

固定调度算法: rr wrr dh sh
动态调度算法: wlc lblc lblcr SED NQ (后两种官方站点没提到)

二、ipvsadm工具

1.ipvsadm工具简介

ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置,编辑和定制lvs的功能。

2.ipvsadm命令

-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录
-s --scheduler #使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
例:ipvsadm -A -t 192.168.1.2:80 -s wrr

-a --add-server  #在服务器表中添加一条新的真实主机记录
-t --tcp-service #说明虚拟服务器提供tcp服务
-u --udp-service #说明虚拟服务器提供udp服务
-r --real-server #真实服务器地址
-m --masquerading #指定LVS工作模式为NAT模式
-w --weight #真实服务器的权值
-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip #指定LVS的工作模式为隧道模式  
-p #会话保持时间,定义流量被转到同一个realserver的会话存留时间
例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1

-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。
-C -clear #清除内核虚拟服务器表中的所有记录。
-R -restore #恢复虚拟服务器规则
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录
-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list #显示内核虚拟服务器表

--numeric, -n:#以数字形式输出地址和端口号
--exact: #扩展信息,精确值 
--connection,-c: #当前IPVS连接输出
--stats: #统计信息
--rate : #输出速率信息

参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero #虚拟服务表计数器清零(清空当前的连接数量等)

三、LVS-DR集群

1.LVS-DR集群介绍

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。这种模式,需要有一个公共的IP配置在分发器和所有rs上,也就是vip和IP Tunnel不同的是,它会把数据包的MAC地址修改为rs的MAC地址rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己

2.LVS-DR模式工作原理

首先,来自客户端计算机 CIP 的请求被发送到 Director VIP 。然后 Director 使用相同的 VIP 目的 IP 地址将 请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客 户端计算机(不经过director ),并且以此回复数据包使用的目的 VIP 地址作为源 IP 地址。因此,实际上 是客户计算机被“ 欺骗 了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数据包给一台计算机(LB ),并从另一台计算机( RS )接收回复的数据包。

3.LVS – DR 模式集群构建

需要一台电脑作为Director服务器。还需要两台虚拟机用于模拟真实服务器。网关需相同

作用 IP地址 服务 工具
Director(负载调度器)

VIP:192.168.2.120

DIP:192.168.2.120

ipvsadm
node1(真实服务器1) RIP1:192.168.2.129 httpd
node2(真实服务器2) RIP2:192.168.2.131 httpd
node3(客户端) DIP:192.168.2.128

1.配置Director

下载工具
yum install ipvsadm -y
配置LVS虚拟IP(VIP)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:1
vim ifcfg-ens33:1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:1
UUID=809d2184-0cf8-413f-85cf-8799b0311082
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.2.120
NETMASK=255.255.255.0
vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=809d2184-0cf8-413f-85cf-8799b0311082
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.2.132
NETMASK=255.255.255.0
GATEWAY=192.168.2.2

配置转发

[root@driectory ~]# ipvsadm -A -t 192.168.2.120:80 -s rr
[root@driectory ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.120:80 rr
[root@driectory ~]# ipvsadm -a -t 192.168.2.120:80 -r 192.168.2.129:80 -g
[root@driectory ~]# ipvsadm -a -t 192.168.2.120:80 -r 192.168.2.131:80 -g
[root@driectory ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.120:80 rr
  -> 192.168.2.129:80             Route   1      0          0         
  -> 192.168.2.131:80             Route   1      0          0         

2.配置服务器(两台)

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:1
vi ifcfg-lo:1
更改配置
DEVICE=lo:1
IPADDR=192.168.2.120
NETTMASK=255.255.255.255
ONBOOT=yes
NAME=loopback

测试

四、LVS–NAT集群

1.LVS–NAT集群介绍

这种模式借助iptables的nat表来实现;
用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去;
rs需要设定网关为分发器的内网ip;
用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈;
在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源;

2.LVS–NAT工作原理

当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。此时报文的源IP为CIP,目标IP为VIP

PREROUTING检查发现数据包的目标lP是本机,将数据包送至INPUT链

IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。此时报文的源IP为CIP,目标IP为RIP

POSTROUTING链通过选路,将数据包发送给Real Server

Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。此时报文的源IP为RIP,目标IP为CIP

Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。此时报文的源IP为VIP,目标IP为CIP

3.LVS–NAT模式集群搭建

需要一台有两张网卡的Director服务器。其中一张网卡用于模拟Director的VIP。还需要两台相同网关的虚拟机用于模拟真实服务器。

作用 IP地址 服务 工具
Director(负载调度器) VIP:192.168.0.103 DIP:192.168.2.132 ipvsadm
node1(真实服务器1) RIP1:192.168.2.129 httpd
node2(真实服务器2) RIP2:192.168.2.131 httpd
node3(客户端) DIP:192.168.0.104

 1.配置网络环境

给Director添加一张网卡,添加网卡为桥接模式

集群学习:LVS集群_第1张图片

Director VIP网卡配置文件

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
UUID=4d5a39eb-2748-4c7b-80ab-2dff43f7ed05
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.0.103
NETMASK=255.255.255.0

Director DIP网卡配置文件

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=809d2184-0cf8-413f-85cf-8799b0311082
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.2.132
NETMASK=255.255.255.0
GATEWAY=192.168.0.103   #添加网关
~                                   

真实服务器网卡配置文件,两个除IP不同,配置相同

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ad8c2a22-092b-47d6-a5f7-07e6a814bcf6
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.2.129
NETMASK=255.255.255.0
GATEWAY=192.168.2.132     #添加网关   
DNS1=114.114.114.114
DNS2=8.8.8.8

客户端网卡设置桥接模式即可

 

2.配置基础环境

  设置web服务器(两台)

yum install httpd -y
echo "`hostname -I`" > /var/www/html/index.html
systemctl start httpd

关闭防火墙

systemctl stop firewalld
setenforce 0

开启httpd服务,并测试

systemctl start httpd

[root@node1 ~]# curl 192.168.2.129
192.168.2.129 

3.部署LVS-NAT模式调度器

确认调度器的路由转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward #此文件不能使用vim编辑,此方法临时生效
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf#永久方法

 创建集群服务器

ipvsadm -A -t 192.168.0.103:80 -s rr

添加真实服务器

ipvsadm -a -t 192.168.0.103:80 -r 192.168.2.129 -w 1 -m
ipvsadm -a -t 192.168.0.103:80 -r 192.168.2.131 -w 1 -m

检查配置

[root@driectory ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.103:80 rr
  -> 192.168.2.129:80             Masq    1      0          0         
  -> 192.168.2.131:80             Masq    1      0          0         
[root@driectory ~]# 

4.最后测试

集群学习:LVS集群_第2张图片

你可能感兴趣的:(学习,lvs,网络)