Director RIP 192.168.106.2 | VIP 172.16.100.1 |
Real server1 RIP 192.168.106.3 | |
Real server2 RIP 192.168.106.4 |
LVS 不能和iptables 一起使用。
LVS负载均衡分为三种模式。1、NAT,2、DR, 3、TUN
NAT模式关于web服务
一、下面我首先来配置负载均衡。
两台real虚拟机都得有web服务器并且开启
1首先有个director 和两个realserver。
Director必须要有两张网卡。一个是公网地址,另一个是提供私网地址。例如本实验的DIP是172.16.100.1.VIP是 192.168.106.2
R1ip 192.168.106.3
R2ip 192.168.106.4
2. 首先现在director服务器上配置,Ip配置好后,得安装ipvsadm。
再配置两个real1.配置ip 该网卡的网关必须指向derictor的私网地址。192.168.106.2
Route –n 查看一下网关
Route add default gw 192.168.106.254
Real2 的配置和real1一样。
3.在director虚拟机上。一定要能访问这两个real虚拟机的web服务。
Curl 192.168.106.3
Curl 192.168.106.4
都能够显示index.html即可。
4.关键步骤。安装好ipvsadm后执行以下命令
ipvsadm -A –t 172.16.100.1:80 –s rr (轮询调度)
ipvsadm –a -t 172.16.100.1:80 –r 192.168.106.3 –m
ipvsadm –a -t 172.16.100.1 :80 –r192.168.106.4 –m
echo 1 > /proc/sys/net/ipv4/ip_forward (网卡之间的转换)、
ipvsadm –ln 查看配置好的服务
如果出现
[root@sa ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.100.1:80 rr
-> 192.168.106.3:80 Masq 1 0 0
-> 192.168.106.4:80 Masq 1 0 0
说明real服务添加成功。。。。。
Curl 172.16.100.1
轮询调度。应该出现下面的结果。
^C
[root@sa ~]# curl172.16.100.1(在此我们一定要访问公网IP)
<h1> nginx works on192.168.221.4</h1>
[root@sa ~]# curl 172.16.100.1
<html>
<h1>nginx works on 192.168.221.3</h1>
</html>
[root@sa ~]# ipvsadm –ln(可以查看轮询情况)
-> 192.168.106.3:80 Masq 1 0 2(连接数)
-> 192.168.106.4:80 Masq 1 0 2
到此我们的nat负载均衡配置成功。
如果想重启服务器后还能使用的规则。就是用命令 service ipvsadm save
加权轮询: ipvsadm –A –t 172.16.100.1:80 – s wrr
Ipvsadm–a –t 172.16.100.1:80 –r 192.168.106.3 –m -w 权值
Ipvsadm –a –t 172.16.100.1:80 –r 192.168.106.4 –m -w 权值
即可。。。。。。。。
Ipvsadm –C 是清除所有的规则。在我们保存的前提下。
Service ipvsadm save 是用于保存规则的
Ipvsadm –R < /etc/sysconfig/ipvsadm
即可恢复
LVS-DR模型的配置
Ip规划
VIP 192.168.106.102 | |
Real server 1 RIP 192.168.106.3 | |
Real server 2 RIP 192.168.106.4 | VIP 192.168.106.102 |
这个是降低了director的压力。当客户端请求发送到director时,会拆掉帧首部。不会动tcp报文。源ip和目的ip都不会改变。只会通过修改MAC地址。Ipvsadm针对DR模式的调度算法。分发给real server ,real server会有两个IP(RIP 和VIP)RIP是用来和其他主机进行通信。VIP是用来接受director发送过来的报文。在客户端发送请求时。大概是需要广播VIP的MAC地址。因为director和real server上都配有VIP所以都会做出响应。但是real server 不能做出响应。这样会失去负载均衡的作用。所以在real server 上要配置抑制arp解析。所以VIP是不能对外做出响应。但是当返回客户端时,是在报文源地址是VIP 目的地址是CIP,所以需要加上一条路由信息。无论什么报文出去。
VS/DR的工作流程如上图所示:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
配置过程如下:
在director上配置 ifconfig eth0:0 192.168.106.11/32 up 配置VIP
Route add –host192.168.106.102 dev eth0:0
开始添加ipvsadm的规则
Ipvsadm –A –t 192.168.106.102:80 –s rr
Ipvsadm –a –t 192.168.106.102:80 –r192.168.106.3:80 –g
Ipvsadm –a –t 192.168.106.102:80 –r192.168.106.4:80 –g
在real server上配置
在配置VIP之前需要配置arp的规则
Echo “1”>/proc/sys/net/ipv4/conf/lo/apr_ignore
Echo “2”>/proc/sys/net/ipv4/conf/lo/apr_annonce
Echo “1”>/proc/sys/net/ipv4/conf/all/apr_ignore
Echo “2”>/proc/sys/net/ipv4/conf/all/apr_annonce
Ifconfig lo:0 192.168.106.102/32 up
Route add –host 192.168.106.102 dev lo:0
关闭iptables 开启网络服务。
在real server2上的配置一样