LVS负载均衡
一、企业群集应用概述
1、群集的含义
(1)Cluster,集群、群集
(2)由多台主机构成,但对外只表现为一个整体
2、在互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器力不从心
3、解决方法
(1)使用价格昂贵的小型机、大型机
(2)使用普通服务器构建服务群集
二、企业群集分类
1、根据群集所针对的目标差异,可分为三种类型
(1)负载均衡群集(轮循《加权》、最小连接《加权》)
(2)高可用群集(访问数量、可靠性)
(3)高性能运算群集(并发处理任务)
2、负载均衡群集(Load Balance Cluster)
(1)以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、负载(LB) 的整体性能
(2)LB的负载分配依赖于主节点的分流算法
3、高可用群集(High Availability Cluster)
(1)以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
(2)HA的工作方式包括双工和主从两种模式
4、高性能运算群集(High Performance Computer Cluster)
(1)以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC) 能力
(2)高性能运算群集的高性能依赖于"分布式运算”、”并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
三、负载均衡群集工作模式分析
1、负载均衡群集是目前企业用得最多的群集类型
2、群集的负载调度技术有三种工作模式
(1)地址转换(NAT)
(2)IP隧道(TUN)
(3)直接路由(建立外网连接)
四、NAT模式
1、地址转换(Network AddressTranslation)(网关)
(1)简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
(2)服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
2、TUN模式(公网)
IP隧道(IP Tunnel)
(1)简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
(2)服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
3、DR模式(私网)
直接路由(Direct Routing)
(1)简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
(2)负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
五、负载均衡群集架构
1、负载均衡的结构
第一层,负载调度器(Load Balancer或Director)
第二层,服务器池(Server Pool)
第三层,共享存储(Share Storage)
六、关于LVS虚拟服务器
1、Linux Virtual Server
针对Linux内核的负载均衡解决方案
1998年5月,由我国的章文嵩博士创建
官方网站: http://www.linuxvirtualserver.org/
2、LVS的负载调度算法
(1)轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器, 而不管服务器实际的连接数和系统负载
(2)加权轮询(Weighted Round Robin)
根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
保证处理能力强的服务器承担更多的访问流量
(3)最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
(4)加权最少连接(Weighted L east Connections)
在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重
权重较高的节点将承担更大比例的活动连接负载
七、NFS共享存储服务
1、Network File System,网络文件系统
(1)依赖于RPC (远端过程调用)
(2)需安装nfs-utils、rpcbind软件包
(3)系统服务: nfs、rpcbind
(4)共享配置文件: /etc/exports
2、在客户机中访问NFS共享资源
(1)安装rpcbind软件包,并启动rpcbind服务
(2)手动挂载NFS共享目录
(3)fstab自动挂载设置
八、部署步骤
1、加载ip_ _vs模块,安装ipvsadm工具
2、新建LVS虚拟服务器并添加节点服务器
3、配置节点服务器
建立测试网站
挂载NFS共享存储
建立测试网页
4、保存规则并测试
案例:
--------------------------地址规划-----------------------
调度服务器
外网卡:12.0.0.1
内网卡:192.168.200.1
节点服务器
web1:192.168.200.110
web2:192.168.200.120
存储服务器
网卡:192.168.200.130
client服务器
12.0.0.12
----------------------------环境----------------------
centos7-4
查看nfs-utils、rpcbind有没有安装,没有安装的话进行yum安装
rpm -q nfs-utils
rpm -q rpcbind
centos7-2和centos7-3
查看httpd安装包有没有安装,没有安装的话进行yum安装
rpm -q httpd
centos7-1
查看管理软件ipvsadm有没有安装,没有安装的话进行yum安装
rpm -q ipvsadm
------------------centos7-4——存储服务器--------------------
网卡模式设为仅主机
设静态IP——192.168.200.130
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.200.130
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
service network restart //重启网卡
systemctl stop firewalld.service //关闭防火墙
setenforce 0
systemctl start nfs.service //开启nfs服务
systemctl status nfs.service //查看开启状态
systemctl start rpcbind.service //开启rpcbind服务
systemctl status rpcbind.service //查看开启状态
vim /etc/exports
/usr/share *(ro,sync)
/opt/accp 192.168.200.0/24(rw,sync)
/opt/benet 192.168.200.0/24(rw,sync)
cd /opt/
mkdir benet accp
chmod 777 accp/ benet/ //赋予权限
exportfs -rv //发布共享
--------------------------centos7-2——节点服务器----------------------
网卡模式设为仅主机
设静态IP——192.168.200.110
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.200.110
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
service network restart //重启网卡
systemctl stop firewalld.service //关闭防火墙
setenforce 0
systemctl start httpd.service //开启httpd服务
netstat -ntap | grep 80 //查看端口开启状态
ping 192.168.200.130 //保证在互通状态下
showmount -e 192.168.200.130 //先查看,可以看到就可以进行挂载
mount.nfs 192.168.200.130:/opt/accp /var/www/html/ //挂载
df -h //查看挂载状态
192.168.200.130:/opt/accp 20G 3.4G 17G 17% /var/www/html
cd /var/www/html/
echo "this is accp web" > index.html //写html标签
写好后再存储服务器上,查看/opt/accp/目录下,有index.html就说明没问题
自测:
在浏览器中输入http://127.0.0.1/访问,访问到:this is accp web 。就说明没问题
--------------------------centos7-2——节点服务器----------------------
网卡模式设为仅主机
设静态IP——192.168.200.120
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.200.120
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
service network restart //重启网卡
systemctl stop firewalld.service //关闭防火墙
setenforce 0
systemctl start httpd.service //开启httpd服务
netstat -ntap | grep 80 //查看端口开启状态
ping 192.168.200.130 //保证在互通状态下
showmount -e 192.168.200.130 //先查看,可以看到就可以进行挂载
mount.nfs 192.168.200.130:/opt/benet /var/www/html/ //挂载
df -h //查看挂载状态
192.168.200.130:/opt/benet 20G 3.4G 17G 17% /var/www/html
cd /var/www/html/
echo "this is benet web" > index.html //写html标签
写好后再存储服务器上,查看/opt/benet/目录下,有index.html就说明没问题
自测:
在浏览器中输入http://127.0.0.1/访问,访问到:this is benet web 。就说明没问题
---------------------------centos7-1——调度服务器--------------------------
再添加一块网卡:ens36
两张网卡都设为仅主机模式
ens33(内网卡):192.168.200.1
ens36(外网卡):12.0.0.1
配置静态IP
(1)vim ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.200.1
NETMASK=255.255.255.0
(2)cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
其中33改为36,UUID行删掉
BOOTPROTO=static
IPADDR=12.0.0.1
NETMASK=255.255.255.0
service network restart //重启网卡
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 //开启路由转发功能
sysctl -p //加载生效
iptables -t nat -F
iptables -F //清空
做SNAT规则:
-A:指定列
-o:指定出口
-s:指定原地址
-j:做动作
--to-source:转换
iptables -t nat -A POSTROUTING -o ens33 -s 192.168.200.0/24 -j SNAT --to-source 12.0.0.1
验证:
(1)win7——client服务器
网卡模式仅主机,固定IP:12.0.0.12,关闭防火墙
(2)centos7-2——节点服务器
ping 12.0.0.12 //保证能通
加载LVS内核模块:
modprobe ip_vs //加载
cat /proc/net/ip_vs //查看
管理软件:
ipvsadm --save > /etc/sysconfig/ipvsadm //保存
systemctl start ipvsadm.service //开启服务
systemctl status ipvsadm.service //查看开启状态
NAT只要在服务器上配置,业务服务器不需要特殊配置:
cd /opt/
vim nat.sh
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip forward #开启永久转发
ipvsadm -C
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.110:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.120:80 -m
ipvsadm
ipvsadm -C //清除内核虚拟服务器表中的所以记录
source nat.sh //执行脚本
在win7上进行访问:
访问IP:12.0.0.1
显示网页(轮循显示)
this is accp web
this is benet web