文章目录
一、概述
1.1、负载均衡群集
- 能提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、负载(LB) 的整体性能
- LB的负载分配依赖于主节点的分流算法
1.2、负载均衡群集的NAT模式
- 地址转换(Network Address Translation)
- 简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
- 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
二、负载均衡群集架构
- 第一层:负载调度器(Load Balancer或Director)
- 第二层:服务器池
- 第三层:共享存储
三、LVS-NAT部署
3.1、实验环境
在vmware虚拟机中开5台虚拟机
- 一台外网客户机,IP为12.0.0.0/24网段
- 一台LVS调度器,外网接口为12.0.0.1/24,内网接口192.168.5.1/24
- 二台web服务器
模拟高并发来临时,LVS采用轮询的方式调度后面的服务器;
IP为192.168.5.10/24和192.168.5.20/24 - 一台NFS服务器,为web池子提供存储空间;
IP为192.168.5.30/24
3.2、实验拓扑
3.3、NFS服务器配置
- 添加2块磁盘sdb和sdc为web池子提供存储,生产环境中直接用raid磁盘阵列
- 划分磁盘并挂载
[root@nfs ~]# fdisk /dev/sdb ###创建磁盘分区
##按n,一直回车即可
[root@nfs ~]# fdisk /dev/sdc
[root@nfs ~]# mkfs.xfs /dev/sdb1 ##格式化
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=2621376 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10485504, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5119, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@nfs ~]# mkfs.xfs /dev/sdc1
###省略格式化信息
[root@nfs ~]# mkdir /aaa ##创建挂载点
[root@nfs ~]# mkdir /bbb
[root@nfs ~]# vim /etc/fstab ####磁盘挂载
/dev/sdb1 /aaa xfs defaults 0 0
/dev/sdc1 /bbb xfs defaults 0 0
[root@nfs ~]# mount -a ##加载
[root@nfs ~]# df -hT ###验证挂载
- 安装nfs和远程调用包
[root@nfs ~]# rpm -q nfs-utils
[root@nfs ~]# rpm -q rpcbind
- 修改配置文件,允许web服务器使用NFS磁盘空间
[root@nfs ~]# vim /etc/exports
/aaa 192.168.5.0/24(rw,sync,no_root_squash)
/bbb 192.168.5.0/24(rw,sync,no_root_squash)
- 关闭防火墙,启动nfs和远程调用服务
[root@nfs ~]# systemctl stop firewalld.service ###关闭防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl start rpcbind
[root@nfs opt]# showmount -e ##查看共享出去的磁盘
Export list for nfs:
/bbb 192.168.5.0/24
/aaa 192.168.5.0/24
3.4、两个web服务器配置
- web1配置
[root@web1 ~]# yum install httpd -y ###安装apache服务
[root@web1 ~]# systemctl stop firewalld.service ###关闭防火墙
[root@web1 ~]# setenforce 0
[root@web1 ~]# vim /etc/fstab ###将nfs共享的空间挂载到本地
192.168.5.30:/aaa /var/www/html nfs defaults,_netdev 0 0
[root@web1 ~]# df -hT ##查看挂载
- 在web首页中写入相关数据
[root@web1 ~]# cd /var/www/html
[root@web1 html]# vim index.html
<h1>this is aaa web </h1>
- 启动httpd服务
[root@web1 html]# systemctl start httpd
[root@web1 html]# netstat -ntap|grep httpd
tcp 0 0 192.168.5.10:80 0.0.0.0:* LISTEN 106928/httpd
- 同理配置web2
[root@web2~]# yum install httpd -y ###安装apache服务
[root@web2~]# systemctl stop firewalld.service ###关闭防火墙
[root@web2~]# setenforce 0
[root@web2]# vim /etc/fstab ###将nfs共享的空间挂载到本地
192.168.5.30:/bbb /var/www/html nfs defaults,_netdev 0 0
[root@web2 ~]# df -hT ##查看挂载
- 在web首页中写入相关数据
[root@web2 ~]# cd /var/www/html
[root@web2 html]# vim index.html
<h1>this is bbb web </h1>
- 启动httpd服务
[root@web2 html]# systemctl start httpd
[root@web2 html]# netstat -ntap|grep httpd
tcp 0 0 192.168.5.20:80 0.0.0.0:* LISTEN 106928/httpd
3.5、LVS服务器配置
- 安装管理工具
yum install ipvsadm -y
- 配置内网卡和外网卡
- 开启路由转发
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@lvs etc]# sysctl -p ##加载
net.ipv4.ip_forward = 1
- 设置防火墙规则
[root@lvs etc]# iptables -F
[root@lvs etc]# iptables -t nat -F
[root@lvs etc]# iptables -t nat -I POSTROUTING -s 192.168.5.10/24 -o ens37 -j SNAT --to-source 12.0.0.1
[root@lvs etc]# iptables -t nat -I POSTROUTING -s 192.168.5.20/24 -o ens37 -j SNAT --to-source 12.0.0.1
- 加载lvs模块并开启
[root@lvs etc]# modprobe ip_vs
[root@lvs etc]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@lvs etc]# systemctl start ipvsadm.service
- 配置端口映射和轮询算法,可以直接编写个sh脚本然后执行
[root@lvs etc]# vim aaa.sh
ipvsadm -A -t 12.0.0.1:80 -s rr ##rr轮询算法
ipvsadm -a -t 12.0.0.1:80 -r 192.168.5.10:80 -m ##采用轮训机制
ipvsadm -a -t 12.0.0.1:80 -r 192.168.5.20:80 -m
[root@lvs etc]# bash aaa.sh ###执行
3.6、外网客户端配置
- 设置外网客户端ip为12.0.0.10/24
四、验证LVS_NAT
外网客户机通过访问外网的网关直接映射到内网的web界面,内网的web采用轮询的方式显示出来,即一次显示web1界面,一次显示web2界面,可以有效的缓解web服务器的压力。