lvs模式一之DR模式

一、DR负载均衡

客户端去访问vip(虚拟ip),整个集群所有的机器上都有这个vip,但是客户端只能访问到调度机上的vip(RS上做了arp策略)通过调度机上的ipvsadm策略将client发来的数据包的目标mac地址一改(由调度器改为RS),扔给后台的RSRS处理完数据后,再将数据包发送给client(ip是vip,mac是自己的mac)

调度机上的ipvsadm策略是osi模型第二层数据链路层的策略,更改了mac地址,不会对第三层网络层的ip做更改,当数据包被扔给RS之后, 在OSI模型从下往上解包,到第三层ip层时,发现目地ip是vip,如果RS上不添加VIP的话,RS就会将这个包扔掉,因为与自己的ip不匹配
RS上做的arptables策略是为了实现 none VIP , 其实并不冲突,这都是在第二层与第三层之间的策略,RS上做两条策略:
第一条:当网络里有人发送arp请求询问VIP对应的mac地址时,RS不予回应
第二条:从本机上出去的所有arp回应,或者是arp包,注意,只是arp包,因为是arptables策略,如果是VIP发出的(RS上两个ip,一个VIP,一个RIP),都将它转换为RIP

这块要注意的是在网络里,数据包都是先以mac地址(第二层)为目标进行传输的,到达目的地后,一层一层往上解包,进行匹配,第三层匹配ip,第四层匹配端口,等等….只要有一层不匹配,这个包都会被扔掉,或者拒绝

1、修改物理机yum源配置

先在6.5镜像挂载文件中查看参数

lvs模式一之DR模式_第1张图片

修改yum源文件,将参数写入yum源文件
vim /etc/yum.repos.d/rhel-dvd.repo 

lvs模式一之DR模式_第2张图片

查看yum源修改是否生效
yum repolist

lvs模式一之DR模式_第3张图片

2、在虚拟服务器(server1)中添加ipvsadm策略

在server1(虚拟服务器)上安装ipvsadm(调度器)
ipvsadm是管理集群服务的命令行工具,用于管理LVS的策略规则
显示调度次数ipvsadm -L (-n不解析)

server1中:
添加ipvsadm策略
yum install ipvsadm -y
ipvsadm -A -t 172.25.10.100:80 -s rr                         # -A 增加一台虚拟设备
添加后端实际服务器
ipvsadm -a -t 172.25.10.100:80 -r 172.25.10.2:80 -g          
ipvsadm -a -t 172.25.10.100:80 -r 172.25.10.3:80 -g
ipvsadm -ln

lvs模式一之DR模式_第4张图片

3、在虚拟服务器(server1)和后端真实服务器(server2、server3)上添加网卡IP

server1:
添加网卡IP
ip addr add 172.25.10.100/24 dev eth0
查看IP
ip addr 

lvs模式一之DR模式_第5张图片

server2、server3:
添加网卡IP
ip addr add 172.25.10.100/24 dev eth0

4、在后端服务器安装arptables,防止在物理机中测试时直接访问server2和server3

server2、server3:
yum install arptables_jf.x86_64 -y
arptables -A IN -d 172.25.10.100 -j DROP
arptables -A OUT -s 172.25.10.100 -j mangle --mangle-ip-s 172.25.10.2
保存策略
/etc/init.d/arptables_jf save
查看策略
arptables -L

lvs模式一之DR模式_第6张图片

arptables的策略保存文件

lvs模式一之DR模式_第7张图片

5、物理机检测(出现轮叫,且数据经过调度器):

物理机测试使用的arp命令
arp -an |grep 100           查看绑定的MAC地址
arp -d 172.25.10.100        删除现有绑定MAC地址
ping 172.25.10.100          重新获得ip和MAC地址
arp -an |grep 100           
物理机检测:
curl 172.25.61.100

lvs模式一之DR模式_第8张图片

二、DR模式下LVS的健康检查

lvs DR模式的配置及工作原理,最后发现它没有健康检测,就是当一台RS挂掉后,它不会将挂掉的那台机器踢除,而是继续向那台机器发送请求.

1、安装健康检查软件

真机:
get ldirectord-3.9.5-3.1.x86_64.rpm 
虚拟机1:
rpm -ivh ldirectord-3.9.5-3.1.x86_64.rpm 
yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
rpm -ql ldirectord     ##查找ldirectord的配置文件
将配置文件复制到指定目录
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
cd /etc/ha.d/
ls

lvs模式一之DR模式_第9张图片

2、编辑 ldirectord 配置文件

vim ldirectord.cf
   # Sample for an http virtual service
   virtual=172.25.1.100:80       #网内向外暴露的vip(虚拟ip)
        real=172.25.1.2:80 gate  # 后端真实服务器server1
        real=172.25.1.3:80 gate  # 后端真实服务器server2
        fallback=127.0.0.1:80 gate  # 如果后端真实服务器全部挂掉,只剩本机提醒用户在维护
        service=http
        scheduler=rr   # 采用round-robin轮叫算法
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"   
        #receive="Test Page"
        #virtualhost=www.x.y.z

3、打开服务、查看ipvsadm策略

清除之前的后端服务器策略 ipvsadm -C
重新显示策略 ipvsadm -ln

/etc/init.d/ldirectord start
ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.61.100:http rr
  -> server2:http                 Route   1      0          0         
  -> server3:http                 Route   1      0          0    

lvs模式一之DR模式_第10张图片

4、物理机检测

server2、server3:
打开httpd服务
写入默认发布文件

当server2的httpd的服务关闭时,

server2:
/etc/init.d/httpd stop
server1:
[root@server1 ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.61.100:80 rr
  -> 172.25.61.3:80               Route   1      0          0      
物理机:
只显示server3的默认发布文件内容
[root@foundation61 rhel6.5]# curl 172.25.61.100
www.linux.org -server3
[root@foundation61 rhel6.5]# curl 172.25.61.100
www.linux.org -server3

当server2和server3的httpd的服务都关闭时,

物理机:
[root@foundation61 rhel6.5]# curl 172.25.61.100
curl: (7) Failed connect to 172.25.61.100:80; Connection refused
server1:
编写虚拟主机的默认发布文件
yum install httpd -y
cat /var/www/html/index.html
server1 - 此站点正在维护
物理机:
[root@foundation61 rhel6.5]# curl 172.25.61.100
server1 - 此站点正在维护

你可能感兴趣的:(lvs模式一之DR模式)