LVS 高可用集群 DR 模式基本配置(apache服务)

实验环境:

操作系统: redhat EL 6.5
机器:
调度器:
server1: 172.25.12.1 ipvsadm

RS 真正主机:
server2: 172.25.12.2 arptables_jf
server3: 172.25.12.3 arptables_jf

实验原理:

这里写图片描述
客户端去访问vip(虚拟ip),整个集群所有的机器上都有这个vip,但是客户端只能访问到调度机上的vip(RS上做了arp策略)
通过调度机上的ipvsadm策略将client发来的数据包的目标mac地址一改(由调度器改为RS),扔给后台的RS
RS处理完数据后,再将数据包发送给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,第四层匹配端口,等等….只要有一层不匹配,这个包都会被扔掉,或者拒绝

配置:

调度机:
server1:
先修改yum源:
baseurl改成自己的镜像挂载点,这都是镜像里的文件,默认不读,要主动写进去

[root@server1 ~]# cat /etc/yum.repos.d/rhel-source.repo 
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.12.250/rhel6.5/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.12.250/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.12.250/rhel6.5/LoadBalancer
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.12.250/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.12.250/rhel6.5/ScalableFileSystem
gpgcheck=0

配置:

#添加vip
ip addr add 172.25.12.200/24 dev eth0

#安装ipvsadm
yum install -y ipvsadm.x86_64

#设置ipvsadm策略
#-A是增加一台新的虚拟服务器(调度器)  -s 是选择算法  rr是轮询
ipvsadm -A -t 172.25.12.200:80 -s rr

#-a是在虚拟服务器(调度器)后面加一台真正主机  -r 是真正主机 -g是工作方式为直接路由
ipvsadm -a -t 172.25.12.200:80 -r 172.25.12.2:80 -g
ipvsadm -a -t 172.25.12.200:80 -r 172.25.12.3:80 -g

#保存ipvsadm策略
/etc/init.d/ipvsadm save

#查看ipvsadm策略
ipvsadm -ln

RS(真正主机)配置:

server2:

#添加vip,不然数据包不能到达osi模型高层
ip addr add 172.25.12.200/24 dev eth0

#安装arptables
yum install arptables_jf -y

#安装apache
yum install -y httpd
cd /var/www/html/
echo server1 > index.html
/etc/init.d/httpd start

#配置arp策略
#拒绝网络里对于vip的arp请求
arptables -A IN -d 172.25.12.200 -j DROP

#将本机上从vip出去的arp数据包改为从RIP出去
arptables -A OUT -s 172.25.12.200 -j mangle --mangle-ip-s 172.25.12.2

server3:

ip addr add 172.25.12.200/24 dev eth0
yum install arptables_jf
cd /var/www/html/
vim index.html
arptables -A IN -d 172.25.12.200 -j DROP
arptables -A OUT -s 172.25.12.200 -j mangle --mangle-ip-s 172.25.12.3
/etc/init.d/httpd start

测试:

[root@groot ~]# curl 172.25.12.200
server2
[root@groot ~]# curl 172.25.12.200
server3
[root@groot ~]# curl 172.25.12.200
server2
[root@groot ~]# curl 172.25.12.200
server3

观察arp包返回的mac地址:
这里写图片描述

与server1的mac地址一致
这里写图片描述

但是 lvs没有健康检测,
这里写图片描述
keepalived可以解决这个问题,下一篇博客会写这块

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值