LVS虚拟服务器
实现原理:
基于DNS域名轮询解析的方法
基于客户端调度访问的方法
基础应用层系统负载的调度方法
基础IP地址的调度方法 这种方式是最高效的。
IP负载均衡技术是通过ipvs内核模块来实现的,ipvs是LVS集群系统的核心软件。
安装在Director Server上,同时在Director Server上虚拟出一个IP (VIP Virtual IP)地址
我们的域名解析到 VIP 上 ,virtual IP 去寻找 Director Server 然后进行分发。
然后 有负载调度器 从 Real Server 列表看选取一个服务节点 处理用户的请求。
Real Server 节点如何返回数据给用户,是ipvs 实现的重点技术,
ipvs 实现负载均衡机制有三种方式:
NAT TUN DR
NAT 地址转发
TUN IP隧道
DR 直接路由
FullNat 淘宝?
好的,如何要使用 LVS 那么必须配置 有三台服务器
192.168.61.103 Director Server 转发服务器
192.168.61.104 Real Server 接收服务器
192.168.61.105 Real Server 接收服务器
那么安装 ipvs 的话,网址是:http://www.linuxvirtualserver.org/
然后 点击 Software ,网址:http://www.linuxvirtualserver.org/software/index.html
那么这里有这么多的版本,我如何选择呢?
使用 uname -r 进行内核版本的查看:如图
然后我们下载 2.6 的版本。
还有一种方式,就是通过 yum 进行安装
yum install -y ipvsadm
如何进行检测ipvsadm 是否安装呢?
ipvsadm -h 如果显示出信息来,就证明可以正常使用。
NAT 模式 Director Server 设置
如果是虚拟机直接添加一个网卡即可,如果是真实的服务器,需要添加一块真实的网卡。
好的,那我们来走一遍 NAT模式 的负载均衡
Director Server 上必须需要两块网卡。
使用vm 添加一块网卡的步骤:
然后在windows下查看一下网卡情况:
那么我们 linux服务器上 设置的网卡,IP地址 可以是 192.168.31.2 或其他 ,只要不是与31.1 重复即可。
给eth1 设置网卡IP
ifconfig eth1 192.168.31.2
切记啊 eth1 以后使用的公网IP
也就是所有的解析全部解析到 这个IP ,将来通过VIP 来访问。
访问eth1 的时候 轮询到 Real Server
NAT 模式 Real Server 设置
注意 这个默认网关 不是我们联网的网关 ,而是 Director Server 配置的网关。
route del default 删除 Real Server 默认网关
添加新的网关
route add default gw 192.168.61.103
gw 后面的这个IP地址是谁呢? 就是 Director Server 的IP地址。
再次配置 Director Server 服务器 192.168.61.103
网关怎么配置?
1、首先开启 ipvsadm 的IP转发
怎么开启呢?
我们要把一个文件改成1 即可
echo 1 > /proc/sys/net/ipv4/ip_forward
2、配置ipvsadm
ipvsadm -C 清除之前的规则
添加一条新的规则
ipvsadm -A -t 192.168.31.129:80 -s rr
解释说明:192.168.31.129 是Director Server 新添加 eth1 网卡的IP地址
:80 监听的端口是 80
-s rr 轮询 一次到 192.168.61.104 一次到192.168.61.105 再一次到 192.168.61.104
添加新的真实IP地址
ipvsadm -a -t 192.168.31.129:80 -r 192.168.61.104:80 -m
ipvsadm -a -t 192.168.31.129:80 -r 192.168.61.105:80 -m
什么意思呢? 就是 192.168.31.129 所有的80 业务 就转接到 192.168.61.104 或 105 的 80 端口上。
ipvsadm -l 查看 添加的Real Server
生产环境下 是不能直接访问 Real Server 服务器的。
访问测试 结果:
在浏览器中输入 190.168.31.129 进行查看
一会是 192.168.61.104
一会是 192.168.61.105
这两个服务器做轮询处理。
---------------------------------DR模式-------------------------------------
DR的效率要比 NAT 模式效率高 直接返回 到 Client IP
说明: DR 模式的话 只需要 一块网卡即可 Director Server
把eth1 删除掉 把设备删除即可。 这个就是与NAT模式不一样的。
删除设备的话,直接通过 vm 软件 硬件管理 把nat 模式的网卡 移除 即可。
保留这个页面:
设置 Real Server
记住:删除默认网关 (删除NAT 模式设置的网关)
route del default
# route del default # ifconfig lo:0 192.168.61.222 netmask 255.255.255.255 broadcast 192.168.61.222
然后通过ifconfig 进行查看 :
就会看到多了一个IP,就是 192.168.61.222 添加这个IP地址目的就是为了不让直接访问真实的服务器。
添加一个外部的路由
# route add -host 192.168.61.222 dev lo:0
这是配置广播:
仅向与本地接口与地址匹配的网络进行通告
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # #向eth0也加进来 # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
我们只改目标IP为本地的地址的时候,并且在配置进来接口上的时候,才会响应
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
可以使用 ifconfig 进行查看。
好的 ,以上 Real Server 的配置就是这样,
看看 DR 模式下 Director Server是怎么配置的
# # 添加一个新的IP # ifconfig eth0:0 192.168.61.222/24
1、删除所有ipvs的规则
ipvsadm -C
2、添加路由规则
ipvsadm -A -t 192.168.61.222:80 -s rr
以轮询的方式监听 192.168.61.222 这个IP的80端口
3、添加真实的服务器
ipvsadm -a -t 192.168.61.222:80 -r 192.168.61.104:80 -g
ipvsadm -a -t 192.168.61.222:80 -r 192.168.61.105:80 -g
-g 代表的是DR 模式
到现在呢 ipvsadm 已经配置完毕。
ipvsadm -l 进行查看
Director Server 设置附图:
以上都配置完成后,进行测试访问
192.168.61.222
打开这个窗口,不断的进行刷新 ,就能看到轮询的结果。
---------------------------------DR模式-------------------------------------
---------------------------------IP Tunnening 模式-------------------------------------
现在绑定的是 tunl0 最后是 up 启动
# ifconfig tunl0 192.168.61.222 broadcast 192.168.61.222 netmask 255.255.255.0 up # #指向出去 #route add -host 192.168.61.222 dev tunl0
通过ifconfig 进行查看
三台服务器都是通过 上面的这个命令做的。
不能让外边直接范问,这里做的限制
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
好的,到这里Real Server 已经配置完毕
配置Director Server服务器
ipvsadm -C ipvsadm -A -t 192.168.61.222:80 -s rr ipvsadm -a -t 192.168.61.222:80 -r 192.168.61.104 -i ipvsadm -a -t 192.168.61.222:80 -r 192.168.61.105 -i
网上有一篇详细的文章在说:负载均衡
https://www.cnblogs.com/lin3615/p/5653234.html