博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVS模式一:DR模式(ipvsadm)
阅读量:3922 次
发布时间:2019-05-23

本文共 4018 字,大约阅读时间需要 13 分钟。

LVS模式一:DR(Direct Routing)直接路由模式

client -> vs -> Rs ->client

  • DR模式下调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。
  • VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文
  • 所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

主机环境:

主机名 IP
server1 172.25.64.1
server2 172.25.64.2
server3 172.25.64.3
  • server2
    1.安装apache
[root@server2 ~]# yum install httpd -y
  1. 编写前端文件
[root@server2 ~]# cd /var/www/html[root@server2 html]# vim index.html

www.westos.org - server2

  • server3:同上
[root@server3 ~]# cd /var/www/html[root@server3 html]# vim index.html

www.westos.org - server3

  • rhel6.5 selinux and iptables disabled
  • Load Balance: 172.25.64.1(server1)
  • Virtual IP:172.25.64.100
  • RealRerver1:172.25.64.2 (server2)
  • RealRerver2:172.25.64.3(server3)
  • 物理机内网 : 172.25.64.250

一、配置 ipvsadm

  1. 在虚拟服务器上配置更高级yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo [rhel-source]name=Red Hat Enterprise Linux $releasever - $basearch - Sourcebaseurl=http://172.25.64.250/rhel6.5enabled=1gpgcheck=0[LoadBalancer]        ##负载均衡name=LoadBalancerbaseurl=http://172.25.64.250/rhel6.5/LoadBalancerenabled=1gpgcheck=0
[root@server1 yum.repos.d]# yum clean all[root@server1 yum.repos.d]# yum repolist
  1. 在server1(虚拟服务器)上安装ipvsadm(调度器)
[root@server1 yum.repos.d]# yum install ipvsadm -y
  1. 添加策略
    (1)添加一台虚拟设备
    -A   增加一台虚拟设备
    -a   添加真实服务器的操作
    -t   tcp服务地址
    -s   调度算法(10中调度算法rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)
    -r   对应的真实ip
    -g   rh(路由)
    rr  调度算法:轮询
    (2)添加后端实际服务器
    (3)保存策略
[root@server1 ~]# ipvsadm -A -t 172.25.64.100:80 -s rr[root@server1 ~]# ipvsadm -a -t 172.25.64.100:80 -r 172.25.64.2:80 -g[root@server1 ~]# ipvsadm -a -t 172.25.64.100:80 -r 172.25.64.3:80 -g##保存策略[root@server1 ~]# /etc/init.d/ipvsadm saveipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
  1. 显示调度次数ipvsadm -L (-n不解析)
[root@server1 ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.64.100:http rr  -> server2:http                 Route   1      0          0           -> server3:http                 Route   1      0          0         [root@server1 ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.64.100:80 rr  -> 172.25.64.2:80               Route   1      0          0           -> 172.25.64.3:80               Route   1      0          0
  1. 添加VIP
  • 给所有的服务器把 VIP 地址配置在各自的 Non­ARP 网络设备上
[root@server1 ~]# ip addr add 172.25.64.100/24 dev eth0[root@server2 html]# ip addr add 172.25.64.100/32 dev eth0[root@server3 html]# ip addr add 172.24.64.100/32 dev eth0
  1. 将server2,和server3的httpd服务都打开
[root@server2 html]# /etc/init.d/httpd start[root@server3 html]# /etc/init.d/httpd  start
  1. 测试:
  • 以上情况,server1,2,3都有可能被访问到

  • 如果绑定的MAC地址是server1,则在server2,3轮询

  • 如果绑定的MAC地址是sever2或sever3的,那么我们会发现,在测试端根本不会形成轮叫,而是直接去了MAC绑定的后端服务器 (显然这样在企业中是不允许的)

  • 绑定的MAC地址是server1的情况

    在这里插入图片描述
    arp -an | grep 100 查看绑定的MAC地址

  • 发现绑定的就是server1的MAC地址在这里插入图片描述

  • arp -d 172.25.64.100 删除现有绑定MAC地址

  • 绑定的MAC地址是server2的情况

在这里插入图片描述在这里插入图片描述

  • 如何避免这种情况实现?

  • 要避免这种情况,要求只能绑定server1(调度器)的MAC地址,所以我们要配置server2和server3的arp路由策略

  1. 在server2和server3中下载yum install -y arptables_jf
  • 为arptables网络的用户控制过滤的守护进程
  • 防止在物理机中测试时直接访问server2和server3
[root@server2 html]# yum install  arptables_jf -y# 当网内广播需要172.25.64.100这个ip时,它丢弃所有网内的请求[root@server2 html]# arptables -A IN -d 172.25.64.100 -j DROP# 当它自身需要在网内发包时,伪装为自己原本的ip172.25.64.2[root@server2 html]# arptables -A OUT -s  172.25.64.100 -j mangle --mangle-ip-s 172.25.64.2#保存添加的两条策略[root@server2 html]# /etc/init.d/arptables_jf save#打开arptables服务[root@server2 html]# /etc/init.d/arptables_jf start##server3和server2一样[root@server3 html]# yum install arptables_jf -y[root@server3 html]# arptables -A IN -d 172.25.64.100 -j DROP[root@server3 html]# arptables -A OUT -s  172.25.64.100 -j mangle --mangle-ip-s 172.25.64.3[root@server3 html]# /etc/init.d/arptables_jf save[root@server3 html]# /etc/init.d/arptables_jf start
  • 再次测试:
  1. 先删除现有绑定MAC地址
    arp -d 172.25.64.100
  2. 测试端测试curl 172.25.64.100(出现轮叫,且数据经过调度器)
    在这里插入图片描述
    在这里插入图片描述

转载地址:http://zghrn.baihongyu.com/

你可能感兴趣的文章
剑指 Offer 60. n个骰子的点数
查看>>
剑指 Offer 61. 扑克牌中的顺子
查看>>
剑指 Offer 62. 圆圈中最后剩下的数字
查看>>
剑指 Offer 63. 股票的最大利润
查看>>
剑指 Offer 65. 不用加减乘除做加法
查看>>
剑指 Offer 66. 构建乘积数组
查看>>
剑指 Offer 67. 把字符串转换成整数
查看>>
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
查看>>
剑指 Offer 68 - II. 二叉树的最近公共祖先
查看>>
剑指 Offer 18. 删除链表的节点
查看>>
剑指 Offer 44. 数字序列中某一位的数字
查看>>
剑指 Offer 32 - II. 从上到下打印二叉树 II
查看>>
杭电oj-2005 第几天? C++
查看>>
杭电oj-2006 求奇数的乘积 C++
查看>>
杭电oj-2007 平方和与立方和 C++
查看>>
杭电oj -2009 求数列的和 C++
查看>>
杭电oj-2010 水仙花数 C++
查看>>
杭电oj-2011 多项式求和 C++
查看>>
杭电oj-2014 青年歌手大奖赛_评委会打分 C++
查看>>
杭电oj-2015 偶数求和 C++
查看>>