集群与存储
集群简介
什么是集群
一组通过高速网络互联的计算组,并以单一系统的模式加以管理
将很多服务器集中起来一起,提供同一种服务,在客户看来象是只有一个服务器
可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益
任务调度是集群系统中的核心技术
集群目的
提高性能
如计算密集型应用,如:天气预报、核试验模拟
降低成本
相对百万美元级的超级计算机,价格便宜
提高可扩展性
只要增加集群节点即可
增强可靠性
多个节点完成相同功能,避免单点失败
集群分类
高性能计算集群HPC
通过以集群开发的并行应用程序,解决复杂的科学问题
负载均衡(LB)集群
客户端负载在计算机集群中尽可能平均分摊
高可用(HA)集群
避免单点故障,当一个系统发生故障时,可以快速迁移
LVS概述
LVS项目介绍
Linux虚拟服务器(LVS)是章文嵩在国防科技大学就读博士期间创建的
LVS可以实现高可用的、可伸缩的Web、Mail、
Cache和Media等网络服务
最终目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、
低成本的服务器应用集群
LVS集群组成
前端:负载均衡层
由一台或多台负载调度器构成
中间:服务器群组层
由一组实际运行应用服务的服务器组成
底端:数据共享存储层
提供共享存储空间的存储区域
LVS术语
DirectorServer:调度服务器
将负载分发到RealServer的服务器
RealServer:真实服务器
真正提供应用服务器的服务器
VIP:虚拟IP地址
公布给用户访问的虚拟IP地址
RIP:真实IP地址
集群节点上使用的IP地址
DIP:调度连接节点服务器的IP地址
LVS工作模式
NAT模式 TUN模式 DR模式
LVS工作模式
VS/NAT
通过网络地址转换实现的虚拟服务器
在并发访问时,高度器的性能成为瓶颈
VS/DR
直接使用路由技术实现虚拟服务器
节点服务器需要配置VIP,注意MAC地址广播
VS/TUN
通过隧道方式实现虚拟服务器
负载均衡高度算法
LVS目前实现了10种调度算法
常用调度算法有4种
轮询(RoundRobin)
加权轮询(WeightedRound Robin)
最少连接(LeastConnections)
加权最少连接(WeightedLeast Connections)
负载均衡调度算法
轮询(RoundRobin)
将客户端请求平均分发到RealServer
加权轮询(WeightedRound Robin)
根据RealServer权重值进行轮询调度
最少连接(LeastConnections)
选择连接数最少的服务器
负载均衡调度算法
加权最少连接
根据RealServer权重值,选择连接数最少的服务器
源地址散列(SourceHashing)
根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器
负载均衡调度算法
其他调度算法
基于局部的最少链接
带复制的基于局部性最少链接
目标地址散列(DestinationHashing)
最短的期望的延迟
最少队列调度
LVS-NAT集群
安装软件
安装前准备
LVS的IP负载均衡技术是通过IPVS模块实现的
IPVS模块已成为Linux组成部分
grep-i 'ipvs' /boot/config-3.10.0-327.el7.x86_64
安装ipvsadm
使用rpm命令安装ipvsadm
rpm-ihv ipvsadm-1.27.7.el7.x86_64.rpm
ipvsadm-v
ipvsadm用法
创建虚拟服务器
-A 添加虚拟服务器
-t设置群集地址(VIP,VirtualIP)
-s指定负载调度算法
ipvsadm-A -t 172.16.16.172:80 -s rr
ipvsadm用法
添加、删除服务器节点
-a 添加真实服务器
-d删除真实服务器
-r 指定真实服务器(RealServer)的地址
-m使用NAT模式;-g、-i分别对应DR、TUN模式
-w为节点服务器设置权重,默认为1
ipvsadm-a -t 172.16.16.172:80 -r 192.168.7.21:80 -m
ipvsadm-d -r 192.168.7.24:80 -t 172.16.16.172:80
ipvsadm用法
查看IPVS
ipvsadm-Ln
ipvsadm命令用法
使用命令添加基于TCP一些的集群服务
在集群同一客户端访问,调度器分配固定服务器
会使用ipvsadm实现规则的增、删、改
保存ipvsamd规则
LVS-NAT案例
LVS-NAT集群拓扑
Clinet:10.10.10.10/24 Internet Director Server:eth0:10.10.10.1/24 eth1:192.168.10.254/24
RealServer:192.168.10.11-12/24 共享存储
操作流程
RealServer:
配置WEB服务器
DirectorServer:
在上安装并启用ipvsadm
创建虚拟器服务器
向虚拟服务器中加入节点
Client:
连接虚拟服务器测试
部署LVS调度器
打开ip_forward
vim/etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl-p
启动ipvsadm
systemctlstart ipvsadm
systemctlenable ipvsadm
部署LVS调度器
创建虚拟服务器,VIP为10.10.10.1,采用的调度算法为RoundRobin
ipvsadm-A -t 10.10.10.1:80 -s rr
向虚拟服务器中加入节点,并指定权重分别为1和2,
目前权重不起作用
ipvsadm-a -t 10.10.10.1:80 -r 192.168.10.11 -m -w 1
ipvsadm-a -t 10.10.10.1:80 -r 192.168.10.12 -m -w 2
部署LVS调度器
查看配置
ipvsadm-L -n //注意:这两个选项不写反
保存配置
ipvsadm-save> /etc/sysconfig/ipvsadm
修改Director调度算法为WRR
ipvsadm-E -t 10.10.10.1:80 -s wrr
Client端验证
通过web浏览器访问
使用ab进行大并发测试
ab-c 10 -n 1000 http://10.10.10.1/index.html
在Director上查看连接数
ipvsadm-L -n
部署LVS-NAT集群
准备三台虚拟机
1台作为Director
2台作为RealServer
物理机作为客户端
RealServer安装的主页内容不同
在Director上安装双网卡,并将其配置为NAT模式
集群使用加权轮询调度算法,真实服务器权重与其IP地址末尾数一致
LVS-DR集群
LVS-DR集群拓扑
client Internet Director DIP:192.168.10.1/24 VIP:192.168.10.100/24
RealServer 192.168.10.11-12/24 存储设备
操作流程
RealServer:
配置WEB服务器
配置辅助IP地址、调整内核参数
DirectorServer
在安装并启用ipvsadm
配置辅助IP地址
创建虚拟服务器、向虚拟服务器中加入节点
Client:
连接虚拟服务器测试
ARP广播的问题
当客户端发起访问VIP对应的域名的请求时,根据网络通信原理会产生ARP广播
因为负载均衡器和真实的服务器在同一网络并且VIP设置在集群中的每一个节点上
此时集群内的真实服务器公尝试回答来处客户端的ARP广播,这就会产生问题,
大家都说我是VIP
内核参数说明
arp_ignore(定义回复ARP广播的方式)
0(默认值)
回应所有的本地地址ARP广播,本地地址可以配置在任意网络接口
1
只回应配置在入站网卡接口上的任意IP地址的ARP广播
内核参数说明
arp_announce
0默认
使用配置在任意网卡接口上的本地IP地址
2对查询目标使用最适当的本地地址。在此模式下将忽略这个IP数据包的源
地址并尝试选择与能与该地址通信的本地地址。首要是选择所有的网络接口的
子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址
被发现,将选择当前的发送网的本地地址。如果没有合适的地址被发现,将
选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来
进行发送
ARP防火墙使用ARP防火墙禁止对VIP的ARP请求
yum-y install arptables_if
arptables-A IN -d <virtual_ip> -j DROP
arptables-A OUT -s <virtual_ip> -j mangle --managle-ip-s <real_ip>
LVS-DR案例实施
配置后端Web服务器
配置辅助VIP地址
ifconfiglo:0 192.168.10.100 netmask 255.255.255.255 broadcast 192.168.10.100 up
调整内核参数
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
配置LVS调度器
配置辅助IP地址
ifconfigeth0:1 192.168.10.100 broadcast 192.168.10.100 netmask 255.255.255.255 up
创建虚拟服务器
ipvsadm -A -t 192.168.10.100:80 -s wlc
向虚拟服务器中加入节点
ipvsadm -a -t 192.168.10.100:80 -g -r 192.168.10.11 -w 1
ipvsadm -a -t 192.168.10.100:80 -g -r 192.168.10.12 -w 2
Client端验证
通过web浏览器访问
使用ab进行大并发测试
ab-c 10 -n 1000 http://10.10.10.1/index.html
在Director上查看连接数
ipvsadm -L -n