目录
一、集群
负载均衡集群(Load Balance Cluster)
高可用集群(High Availability Cluster)
高性能运算集群(High Performance Computer Cluster)
二、负载均衡工作模式
VIP地址特性(虚拟IP地址)
VIP地址的好处
NAT模式(地址转换)
数据流向
TUN模式(IP隧道)
DR模式(直接路由)
DR模式特点
优点与缺点
优点
缺点
三、内核态与用户态
内核态
用户态
内核态与用户态的区别
内核态的特点
用户态的特点
四、LVS主要作用
LVS与Nginx比较
LVS负载调度算法
轮询(Round Robin)
加权轮询(Weighted Round Robin)
最少连接(Last Connections)
加权最少连接(Weighted Least Connections)
五、ipvsadm工具
ipvsadm工具选项
六、LVS-NAT模式部署
第一步 关闭防火墙安全机制
第二步 安装依赖环境
第三步 开启服务
第四步 创建共享目录
第五步 给目录文件赋权
第六步 设置共享配置文件
第七步 发布共享目录并查看
第八步 配置第二台虚拟机
第九步 安装HTTP服务
第十步 开启HTTP服务
第十一步 安装共享依赖环境
第十二步 按顺序开启服务
第十三步 测试查看共享地址
第十四步 创建网页执行文件
第十五步 创建永久挂载
第十六步 查看挂载是否成功
第十七步 部署第三台虚拟机
第十八步 安装相同的服务
第十九步 创建网页执行文件
第二十步 创建永久挂载
第二十一步 查看挂载
第二十二步 查看指定地址共享
第二十三步 部署第四台虚拟机
第二十四步 配置SNAT转发规则
第二十五步 测试配置内容
第二十六步 清除防火墙策略
第二十七步 检查一下防火墙策略
第二十八步 设置防火墙策略
第二十九步 加载IP_VS模块
第三十步 安装ipvsadm工具
第三十一步 修改虚拟机设置
第三十二步 修改网络编辑器
第三十三步 创建网卡
第三十四步 修改网卡配置文件
第三十五步 查看网卡信息
第三十六步 设置ipvsadm策略
第三十七步 保存分配策略
第三十八步 启动策略
第三十九步 修改Win系统的IPv4地址协议
第四十步 修改Web节点服务器的网关指向
第四十一步 两台Web服务重启网卡
第四十二步 修改Win系统虚拟机的网络适配器
第四十三步 用浏览器进行访问测试
一、集群
集群是由多台主机沟工程,但是对外只表现为一个整体,只提供一个访问入口(域名或者IP地址)
普通的服务器构建服务器集群
通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务,常用的一种群集技术LVS(Linux虚拟服务器,Linux Virtual Server)
负载均衡集群(Load Balance Cluster)
提高应用系统的相应能力,尽可能处理更多的访问请求,减少延迟,获得更高的高并发,高负载(LB)的整体性能,LB的负载分配依赖于主节点的分流算法
高可用集群(High Availability Cluster)
提高应用系统的可靠性,尽可能的减少终端时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,HA的工作方式包括双工和主从的两种工作模式
高性能运算集群(High Performance Computer Cluster)
提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能依赖于 “ 分布式运算 ” 、“ 并行运算 ” 通过专用硬件和软件将多个服务器的CPU和内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
二、负载均衡工作模式
VIP地址特性(虚拟IP地址)
只会存在于同一个热备组中优先级最高的设备上,以上是抢占模式
VIP地址的好处
VIP地址常规情况下占用一个IPv4地址,VIP占用的IPv4地址也是不可重复的,VRRP解决单点故障的问题,采用高可用的解决方案
NAT模式(地址转换)
Network Address Translation 简称为NAT模式,类似于防火墙的私有网络结构,负载均衡器作为客户机的访问入口,也是各节点回应客户机的访问出口
服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
数据流向
① 客户端发送请求,这时目的IP为虚拟IP(LVS设置的外网地址)所以请求数据包进入负载调度器(调度服务器)
② 由于服务器通过netfilter框架来管理网络数据,数据包会被系统设置好的策略分配到PREROUTING规则链中
③ 进入规则链后,判断是否目标IP为本机,如果是本机则转入INPUT规则链
④ 在INPUT中LVS的ipvsadm分配策略,通过调度算法,将数据包中的目的IP修改为Web服务器中的RIP(真实IP地址)
⑤ 修改后的数据包再转入POSTROUTING,再进由路由转发到真实服务器当中
⑥ 真实服务器从共享存储当中寻找数据,处理请求内容,然后由于同一网段,便直接发回调度器处理的结果
⑦数据回到调度器,再通过判断一层层转发,最后进入网络,再反馈给客户端
TUN模式(IP隧道)
IP Tunnel 简称为TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用的IP隧道与负载调度器相互通信
DR模式(直接路由)
Direct Routing 简称为DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但是各节点并不是分散在各地,而是与调度器位于同一个物理网络
负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
DR模式特点
① 负载调度器和真实服务器必须在同一个物理网络当中,工作在第二层数据链路层
② 真实服务器可用私有地址,也可用公有地址,可通过互联网对RIP(真实IP地址)进行直接访问
③ 负载调度器作为集群访问入口,但不作为网关使用
④ 所有请求报文经由负载调度器,但回复响应报文不能经过负载调度器
⑤ 真实服务器网关不允许指向负载调度器的IP地址,真实服务器发送的数据包不允许经过负载调度器
⑥ 真实服务器上的LO接口配置VIP的IP地址(虚拟IP地址)
优点与缺点
优点
负载均衡服务器只负责将请求的包分发给物理服务器,而物理服务器将应答包直接发送给用户,所以负载均衡器可以处理很巨大的请求量,使用这种方式
缺点
这种方式需要所有的负载均衡和节点服务器都在同一广播,不支持异地容灾
LVS基于内核进行转发,已经成为Linux内核的一部分,默认编译为 ip_vs 模块,必要时能够自动调用,在CentOS 7中,可以手动加载 ip_vs 模块,并查看 ip_vs 的版本信息,工作在内核态当中,基于内核态的netfilter框架实现IPVS功能,用户配置VIP等相关详细信息并且传递到IPVS,需要用到额外安装的ipvsadm工具
三、内核态与用户态
内核态
也叫内核空间,是内核进程/线程所在的区域,主要负责运行系统和硬件的交互
用户态
也叫用户空间,是用户进程/线程所在的区域,主要用于执行用户程序
内核态与用户态的区别
内核态的特点
运行的代码不受任何限制,CPU可以直接执行任何指令,速度也很快
用户态的特点
运行代码需要收到CPU的很多检查和过滤,不能直接访问内核数据和程序,也就是说不可以像内核线程一样访问任何有效的地址
操作系统在执行用户程序时,主要工作在用户态,只有在其执行没有权限的任务操作时,会自动切换到内核态
四、LVS主要作用
① 主要作用于多服务器的负载均衡
② 工作在网络层,可以实现高性能、高可用集群技术
③ 廉价,可以把许多低性能服务器组合在一起形成一个超级服务器
④ 易用,配置简单,有多重负载均衡的方法
⑤ 稳定可靠,即使集群中某台服务器无法正常工作,也不影响整体
⑥ 可扩展性好
LVS与Nginx比较
① LVS比nginx具有更强的抗负载能力,性能高,对内存和CPU资源消耗低
② LVS工作在网络层,网络依赖性大,稳定性高,Nginx安装配置比较简单,网络依赖性小
③ LVS不支持正则匹配处理,无法实现动静分离效果,Nginx可以实现
④ LVS适用的协议范围广,Nginx只支持HTTP、HTTPS和E-Mail协议,使用范围小
LVS负载调度算法
轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给集群中的各个节点(真实服务器)均匀分摊给每个服务器,不管服务器实际连接数量和系统负载
加权轮询(Weighted Round Robin)
根据设置权重来分配请求,值越高的节点,优先获得任务,分配到的请求数量也越多,保证性能强的服务器承担更多的访问量
最少连接(Last Connections)
根据真实服务器已建立的连接数进行分配,将收到的请求优先分配给当前连接最少的节点
加权最少连接(Weighted Least Connections)
当服务器性能差异较大时,可以为真实服务器自动调整权重,性能较高的节点将承担更大比例的活动连接负载
五、ipvsadm工具
使用ipvsadm工具可以实现虚拟服务器创建,并指定LVS负载调度算法方式,指定VIP(虚拟地址)和RIP(真实地址),指定负载均衡的集群工作模式(NAT模式,DR模式,TUN模式)
ipvsadm工具选项
-A #添加虚拟服务器
-D #删除整个虚拟服务器
-s #指定负载调度算法(rr轮询,wrr加权轮询,lc最少连接,wlc加权最少连接)
-a #表示添加真实服务器(节点服务器)
-d #删除某一个指定节点
-t #指定VIP地址以及TCP端口
-r #指定RIP地址以及TCP端口
-m #表示使用NAT模式
-g #表示使用DR模式
-i #表示使用TUN模式
-w #设置权重(权重为0时,表示暂停节点)
-p [时间] #表示保持长连接指定时间(秒)
-l #列表查看LVS虚拟服务器(默认查看所有)
-n #以数字形式显示地址、端口等信息,常与 -l 结合使用,例如 -ln
六、LVS-NAT模式部署
第一步 关闭防火墙安全机制
命令:systemctl stop firewalld
setenforce 0
第二步 安装依赖环境
命令:yum -y install nfs-utils rpcbind
第三步 开启服务
命令:systemctl start rpcbind
systemctl start nfs
第四步 创建共享目录
命令:mkdir /opt/[名字] /opt/[名字]
第五步 给目录文件赋权
命令:chmod 777 /opt/名称 /opt/名称
第六步 设置共享配置文件
命令:vim /etc/exports
第七步 发布共享目录并查看
命令:exportfs -rv
showmount -e
第八步 配置第二台虚拟机
第九步 安装HTTP服务
命令:yum -y install httpd
第十步 开启HTTP服务
命令:systemctl start httpd
systemctl enable httpd
第十一步 安装共享依赖环境
命令:yum -y install rpcbind nfs-utils
第十二步 按顺序开启服务
命令:systemctl start nfs
systemctl enable nfs
systemctl start rpcbind
systemctl enable rpcbind
第十三步 测试查看共享地址
命令:showmount -e 192.168.8.100
第十四步 创建网页执行文件
命令:echo “内容” > /var/www/html/index.html
第十五步 创建永久挂载
命令:vim /etc/fstab
第十六步 查看挂载是否成功
命令:mount -a #先刷新挂载
df -h
第十七步 部署第三台虚拟机
第十八步 安装相同的服务
命令:yum -y install nfs-utils rpcbind httpd
第十九步 创建网页执行文件
命令:echo "内容" > /var/www/html/index.html
第二十步 创建永久挂载
命令:vim /etc/fstab
第二十一步 查看挂载
命令:mount -a #刷新挂载
df -h
第二十二步 查看指定地址共享
命令:showmount -e [IP地址]
第二十三步 部署第四台虚拟机
第二十四步 配置SNAT转发规则
命令:vim /etc/sysctl.conf
第二十五步 测试配置内容
命令:sysctl -p
第二十六步 清除防火墙策略
命令:iptables -F
第二十七步 检查一下防火墙策略
命令:iptables -t nat -nL
第二十八步 设置防火墙策略
命令:iptables -t nat -A POSTROUTING -s [IP地址] -o ens36 -j SNAT --to--source 10.0.0.1
第二十九步 加载IP_VS模块
命令:modprobe ip_vs
第三十步 安装ipvsadm工具
命令:yum -y install ipvsadm
第三十一步 修改虚拟机设置
第三十二步 修改网络编辑器
第三十三步 创建网卡
命令:cp ifcfg-ens33 ifcfg-ens36
第三十四步 修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens36
第三十五步 查看网卡信息
命令:ifconfig
第三十六步 设置ipvsadm策略
命令:ipvsadm -C
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.8.200:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 192.168.8.130:80 -m -w 1
第三十七步 保存分配策略
命令:ipvsadm-save
第三十八步 启动策略
命令:ipvsadm
第三十九步 修改Win系统的IPv4地址协议
第四十步 修改Web节点服务器的网关指向
网关指向调度器的RIP地址
第四十一步 两台Web服务重启网卡
命令:systemctl restart network