|
ARP地址解析:
报文从客户的短到达路由器之后,会加上源mac地址(从路由器哪个接口进入的就是哪个接口的mac地址),当到达本地网络之后,会在整个本地网络中做arp地址解析广播,把ip地址转换为mac地址进行通信。路由器进行报文的源mac和目标mac的封装,发送给交换机,交换机通过维护的mac地址表,进行报文的转发。
相关内容:
通过修改请求报文的目标mac地址实现请求报文的转发。
(1)保证前端路由器将目标ip为vip的报文请求发送给调度器(director);
解决方法:
静态绑定:就是在路由器上进行配置一个arp地址表,将来自的访问请求直接解析为mac地址,发送给调度器(director);
arptables:在两台RS上配置arptables规则,将收到vip的arp报文请求拒绝应答或者拒绝访问;
修改RS主机内核的参数(最好用的):arp_announce(是否接受别人的通告,并且进行记录,是否通告给别人),arp_ignore(是否响应别人的arp请求)
(2)RS的RIP可以使用私有地址,但也可以使用公网地址;
(3)RS和director必须在同一物理网络中;
(4)请求报文必须经过director,但响应报文一定不能经由director;
(5)不支持端口映射;
(6)RS支持大多数OS;
(7)RS的网关不能指向DIP;
当rip、vip和dip在同一网段的时候,rip指向的网关为dip的网关。当rip、vip和dip不在同一网段的时候,rip指向的网关为直接能跟客户端通讯的下一跳路由器的ip。通过修改请求报文的mac地址进行转发,在dr模型中,在调度器(director)上有两个ip地址,为VIP和DIP。同样的在RS上也有两个ip地址,为VIP和RIP。通常情况下,在RS上,VIP一般配置在本地回环接口的别名上。
通常在director上,vip配置在网卡的别名上,dip就是网卡的ip地址。
调度详细过程:
第一步:客户端发起请求报文,报文的源IP地址为CIP,目标IP地址为VIP。在经过路由器的时候,通过对VIP的地址解析,封装为MAC帧数据, 其源MAC为(从路由器哪个接口进入的就是哪个接口的MAC的地址),进行ARP广播,只能找到VIP所在的调度器(director),同时进行对MAC帧数据进行解封。
第二步:调度器通过某种调度算法,找出一个RS,做ARP地址广播。之后,经过调度器调度之后,对请求报文进行封装包含源MAC地址(源MAC地址并不重要)、请求报文本身(包含源IP和目的IP)以及包含挑选出来的RS的MAC地址。调度器将这个封装报文发回给交换机,交换机通过本身的MAC地址表找到调用的RS,进行解封,发现目的IP地址即VIP在本机有,那么提供服务。
第三步:应答报文通过交换机和路由器直接返回给客户端。应答报文在在rs内部,由于客户端请求的为vip,所以不能通过rip所在网卡直接响应,必须在rs内部添加一条路由,使得从lo接口哪个别名上进来的请求,还得经过lo接口上的哪个别名出去。前提:服务器RS的RIP必须可以通过路由器与客户端进行通信。
实现拓扑:
实现对http服务的调度。
配置过程:
(1)对调度器(director)进行配置,同时在director上安装ipvsadm软件包。
添加vip在director上。
1
| [iyunv@7-1 ~]# ifconfig eno16777736:0 172.16.125.100/32 broadcast 172.16.125.100 up
|
要求是对vip172.16.125.100的请求必须经过eno16777736:0该接口进行响应。
1
| [iyunv@7-1 ~]# route add -host 172.16.125.100 dev eno16777736:0
|
(2)后端RS的详细配置:
首先修改内核参数,保证前段路由器将目标地址为vip的报文发送给director。在后端RS上都要进行设置。
1
2
3
4
| # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
|
然后添加vip到lo接口的别名上,并且绑定通过lo接口别名进来的报文必须经过lo接口别名设备发送出去。后端RS上都要设置,同时在后端RS上开启httpd服务。
1
2
| [iyunv@7-2 ~]# ifconfig lo:0 172.16.125.100/32 broadcast 172.16.125.100 up
[iyunv@7-2 ~]# route add -host 172.16.125.100 dev lo:0
|
(3)在调度器上进行ipvs规则的设置。
1
2
3
| [iyunv@7-1 ~]# ipvsadm -A -t 172.16.125.100:80 -s rr
[iyunv@7-1 ~]# ipvsadm -a -t 172.16.125.100:80 -r 172.16.125.6 -g
[iyunv@7-1 ~]# ipvsadm -a -t 172.16.125.100:80 -r 172.16.125.7 -g
|
测试,在实现的时候,采用的是rr(轮询)算法,在客户机上对vip进行访问。
|
|
|
|
|
|
|