搭建LVS-NAT模式实现负载均衡
一、集群的概述
1.什么是集群?
集群(cluster)就是一组计算机,它们作为一个整体向用户提供网络资源,这些单个的计算机系统就是集群的节点(node)。
扩展:
PV ( page view )即页面浏览量,通常是衡量一个网络新问频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为 PV 。
UV ( unique visitor ),指访问某个站点或点击某条新闻的不同 IP 地址的人数。
在同一天内, uv 只记录第一次进入网站的具有独立IP的访问者,在同一天内再次访问该网站则不计数。独立IP访问者提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动。
2.集群的种类.集群系统主要分为
LB 负载均衡( Load Balance )集群。
HA 高可用( High Availability )集群
HPC 高性能计算( High Perfermance Computing )集群
LB 实现手段.
硬件:F5负载均衡器
软件: LVS (4层)- Nginx (7层)
3、 LVS ( Linux Virtual Server )
LVS 是 Linux Virtual Server 的简写,即 Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
LVS分为3种模式:DR、NAT、TUN
第四种:FULLNAT 扩展: 淘宝 ospf+lvs
4、LVS集群采用三层结构,其主要组成部分为:
第一层:负载调度器(load balancer)
它是整个集群对外服务的前端机,负责将客户的请求发送到后端的一组服务器上执行,而客户认为服务器是来自同一个IP地址(我们可以称之为VIP 虚拟IP地址)上的。
第二层:服务器池(server pool)
它是一组真正执行客户请求的服务器,执行服务有WEB、MAIL、FTP、DNS等。
第三层:共享存储(share storage)
它为服务器池提供一个共享的存储区,这样很容易使服务器池拥有相同的内容,提供相同的服务
二、实战搭建LVS-NAT模式集群实现负载均衡
1、NAT(网络地址映射)把私有地址转换成为公网地址
LVS NAT优点:NAT方式可支持任何操作系统及私有网络并且只需要一个公网IP
LVS NAT缺点:整个系统的性能受到限制,因为执行NAT每次需要重写包,有一定的延迟;另外,大部份应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。
真实环境中的拓图
本次实验拓扑图如下
2、在分发器snowy201增加一块网卡eh1并将这块网卡的网络连接方式设为vmnet4(如VM无vmnet,可以选择LAN区段)如下图所示
snowy201: eth0 桥接 IP:192.168.1.201 网关:192.168.1.1
snowy201: eth1 vmnet4/LAN区段 IP:192.168.1.202
3、开启snwoy201分发器的路由转发功能
[root@snowy201~]#vi /etc/sysctl.conf
net.ipv4.ip_forward=1 #添加此行内容,开启路由转发功能
[root@snowy201~]#sysctl -p #让配置立刻生效
[root@snowy201~]#iptables -F
4、配置snowy201为LVS NAT模式集群:
安装:LVS管理工具:ipvsadm
[root@snowy201~]#rpm -ivh /mnt/Packages/ipvsadm-1.25-9.el6.x86_64.rpm
snowy201配置LVS:
添加一个虚拟服务,VIP地址192.168.1.63,服务端口:80
[root@snowy201~]#ipvsadm - A -t 192.168.1.201:80 -s rr
-A 添加一个虚拟服务
-t 表示 TCP 的服务 VIP:PORT .
-s 指定调度算法
rr 表示 round-robin 代表轮循
添加虚拟服务器后端的real server:
[root@snowy201~]#ipvsadm -a -t 192.168.1.201 -r 192.168.1.202 -m
[root@snowy201~]#ipvsadm -a -t 192.168.1.201 -r 192.168.1.203 -m
-a 表示添加一个real server
-r 指定real sever的IP地址
-m 表示masquerade也就是NAT方式的LVS
查看:
[root@snowy201 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.201:80 rr
-> 192.168.2.202:80 Masq 1 0 0
-> 192.168.2.203:80 Masq 1 0 0
三、RealServer:snowy202和snowy203上面的配置:
1、配置2台real server的IP及网络连接方式
snowy202: ens33 vmnet4/LAN区段 IP:192.168.2.202 网关:192.168.2.201
snowy203: ens33 vmnet4/LAN区段 IP:192.168.2.203 网关:192.168.2.201
两台real server网络连接设置如下图,如VM无vmnet4,可以选择LAN区段:
2、两台real server机器上都安装httpd并启动:
snowy202:
[root@snowy202 ~]#yum install -y httpd
[root@snowy202 ~]#echo "192.168.2.202" > /var/www/html/index.html
[root@snowy202 ~]#systemctl enable httpd --now
[root@snowy202 ~]#iptables -F
[root@snowy202 ~]#netstat -tulnp|grep 80 #查看服务是否启动成功
[root@snowy202 ~]#curl http://192.168.2.202 #查看站点能否访问
192.168.2.202
snowy203:
[root@snowy203 ~]#yum install -y httpd
[root@snowy203 ~]#echo "192.168.2.203" > /var/www/html/index.html
[root@snowy203 ~]#systemctl enable httpd --now
[root@snowy203 ~]#iptables -F
[root@snowy203 ~]#netstat -tulnp|grep 80
[root@snowy203 ~]#curl http://192.168.2.203
192.168.2.203
3、测试LVS NAT模式
通过一台centos客户机来测试,也可以通过浏览器来测试(浏览器因为缓存的原因,测试会慢一点)
[root@client ~]# curl http://192.168.1.201
192.168.2.202
[root@client ~]# curl http://192.168.1.201
192.168.2.203
[root@client ~]# curl http://192.168.1.201
192.168.2.202
[root@client ~]# curl http://192.168.1.201
192.168.2.203