集群及LVS
一、集群
服务器资源:CPU,内存,网络,硬盘I/O
⦁ 概述
⦁ 什么是集群?
— 一组通过高速网络互连的计算组,并以单一系统的模式加以管理
— 将很多服务器集中起来一起,提供同一种服务,在客户端看来就像是只有一个服务器
— 可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益
— 任务调度是集群系统中的核心技术
b) 集群的目的
⦁ 提高性能
— 如计算密集型应用,如:天气预报、核试验模拟
⦁ 降低成本
— 相对百万美元级的超级计算机,价格便宜
⦁ 提高可扩展性
— 只要增加集群节点即可
⦁ 增强可靠性
— 多个节点完成相同功能,避免单点失败
c) 集群分类
1.HPC:高性能计算,为了解决计算量
— 通过以集群开发的并行应用程序,解决复杂的科学问题
⦁ LB:负载均衡,为了解决并发量(LVS软件 Haproxy软件)
— 客户端负载在计算机集群中尽可能平均分摊
3.HA:高可用,为了解决单点故障(Keepalived软件)
— 避免单点故障,当一个系统发生故障时,可以快速迁移
二、LVS软件
⦁ 概述
⦁ LVS项目介绍
⦁ Linux虚拟服务器(LVS)是张文嵩在国防科技大学就读博士期间创建的
⦁ LVS可以是想高可用的、可伸缩的Web、Mail、Cacge和Media等网络服务
⦁ 最终目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群
b) LVS集群组成
i. 前端:负载均衡层
— 由一台或多台负载调度器构成
ii. 中间:服务器群组层
— 由一组实际运行应用服务的服务器组成
iii. 底端:数据共享存储层
— 提供共享存储空间的存储区域
c) LVS术语
i. Director Server:调度服务器
— 将负载分发到Real Server的服务器
ii. Real Server:真实服务器
— 真正提供应用服务的服务器
iii. VIP:虚拟IP地址
— 公布给用户访问的虚拟IP地址
iiii. RIP:真实IP地址
— 集群节点上使用的IP地址
iiiii. DIP : 调度器连接节点服务器的IP地址
iiiiii.CIP : 客户端IP
d) LVS工作模式
⦁ VS/NAT
⦁ 通过网络地址转换实现的虚拟服务器
⦁ 大并发访问时,调度器的性能成文瓶颈
⦁ VS/DR
⦁ 直接使用路由技术实现虚拟服务器
⦁ 节点服务器需要配置VIP,注意MAC地址广播
⦁ VS/TUN
⦁ 通过隧道方式实现虚拟服务器
e) 负载均衡调度算法
⦁ LVS目前实现了10种调度算法
⦁ 常用调度算法由4种(a-d)
⦁ 轮询(Round Robin)
— 将客户端请求平均分发到RealServer
⦁ 加权轮询(Weighted Round Robin)
— 根据Real Server权重值进行轮询调度
⦁ 最少连接(Least Connections)
— 选择连接数最少的服务器
⦁ 加权最少连接(Weighted Least Connections)
— 根据Real Server权重值,选择连接数量少的服务器
e) 源地址散列(Source Hashing)
— 根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表i找出对应的服务器
f) 其他调度算法(5种)
— 基于局部性的最少链接
— 带复制的基于局部性最少链接
— 目标地址散列(Destination Hashing)
— 最短的期望的延迟
— 最少队列调度
⦁ 配置LVS/NAT模式集群
主机角色:
real server : 主机52 和 53
分发器 : 主机54
客户端 : 主机50
1.1 准备实验环境环境
分发器 : 主机54
eth0 私有网络 IP 地址 : 192.168.4.54
eth1 公有网络 IP 地址 : 192.168.2.54
开启内核路由转发功能,使其能够收发不同网段的IP包
# sysctl -a | grep ip_forward
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1(在最后追加)
# sysctl -p (查看内核是否开启路由转发功能,默认是开启的,将结果显示出来)
real server :
主机52
eth0 192.168.4.52
网关地址 : 192.168.4.54
# systemctl stop NetworkManager
# route add default gw 192.168.4.54
# route -n
主机 53
eth0 192.168.4.53
网关地址 : 192.168.4.54
# systemctl stop NetworkManager //关闭网络管理器
# route add default gw 192.168.4.54 //增加网关
# route -n //查看网关
客户端 50
eth1 192.168.2.50
网关指向 192.168.2.54
# systemctl stop NetworkManager
# route add default gw 192.168.2.54
# route -n
删除网关地址命令
# route del default gw 192.168.2.54
1.2 配置网站服务52/53
运行网站服务并编写网页文件
1.3 配置分发器54
安装提供LVS服务的软件包——>创建虚拟服务——>添加real server——>保存配置——>查看配置信息
LVS的IP负载 均衡技术是通过IPVS模块实现的
IPVS模块已成为Linux组成部分
# yum -y install ipvsadm
Ipvsadm 用法
创建虚拟服务器
— -A 添加虚拟服务器
— -t 设置群集地址
— -s 指定负载调度算法
添加、删除服务器节点
— -a 添加真实服务器
— -d 删除真实服务器
— -r 指定真实服务器;-g、-i分别对应DR、TUN模式
— -w 为节点服务器设置权重,默认为1
— -C 删除全部配置
— -D 删除虚拟服务器
创建虚拟服务:
# ipvsadm -A -t 192.168.2.54:80 -s rr
添加real server
# ipvsadm -a -t 192.168.2.54:80 -r 192.168.4.52:80 -m
# ipvsadm -a -t 192.168.2.54:80 -r 192.168.4.53:80 -m
保存配置
# ipvsadm -S
查看配置信息
# ipvsadm -Ln(基本)
# ipvsadm -Ln --stats (详细)
1.4客户端测试配置
客户端连接VIP地址 访问网站服务
主机54监控:
# watch ipvsadm -Ln --stats(动态查看)
客户机50访问
#curl http://192.168.2.54/test.html
1.5 管理集群
删除real server
# ipvsadm -d -t 192.168.2.54:80 -r 192.168.4.53
添加real server
# ipvsadm -a -t 192.168.2.54:80 -r 192.168.4.53:80 -m
修改调度算法
# ipvsadm -E -t 192.168.2.54:80 -s wrr
修改real server 权重值
# ipvsadm -e -t 192.168.2.54:80 -r 192.168.4.53:80 -w 3 -m
清空计数器
# ipvsadm -Z
把策略保存到服务的配置文件里
# ipvsadm -Ln > /etc/sysconfig/ipvsadm
把服务设置为开启启动
# systemctl enable ipvsadm
⦁ 配置LVS-DR
工作原理
客户端: 50 cip
调度器: 54 vip 192.168.4.253
dip 192.168.4.54
realserver 52和53 rip 192.168.4.52/53
需求:客户端访问VIP地址 192.168.4.253 访问网站集群
配置步骤
-
配置分发器 54
⦁ 本机eth0接口绑定VIP地址# ifconfig eth0:1 192.168.4.253 # vim /etc/rc.local(追加) ifconfig eth0:1 192.168.4.253
⦁ 创建虚拟服务
# ipvsadm -A -t 192.168.4.253:80 -s rr
⦁ 添加real server
# ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.52:80 -g
# ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.53:80 -g
⦁ 保存配置
# ipvsadm -S
⦁ 查看状态信息
# ipvsadm -S > /etc/sysconfig/ipvsadm
-
配置real server 52 和 53
a) 修改网络接口的内核参数#cd /proc/sys/net/ipv4/conf/ # echo 1 > lo/arp_ignore # echo 2 > lo/arp_announce # echo 1 > all/arp_ignore # echo 2 > all/arp_announce
a) 在本机的lo接口绑定VIP地址192.168.4.253
# ifconfig lo:1 192.168.4.253/32
删除绑定的VIP地址
# ifdown lo:1
a) 运行网站服务并编写网页文件
52号机# echo web52 > /var/www/html/test.html
53号机# echo web53 > /var/www/html/test.html
client50
# curl http://192.168.4.253/test.html
内核参数说明:
arp_ignore(定义回复ARP广播的方式)
— 0 (默认值)
回应所有的本地地址ARP广播,本地地址可以配置在任意接口
— 1
只回应配置在入站网卡接口上的任意IP地址的ARP广播
arp_announce
— 0(默认)
使用配置在任意网卡接口上的本地IP地址
— 2
对查询目标使用最适当的本地地址
ARP防火墙
使用ARP防火墙也可以禁止对VIP的ARP请求