LVS-DR模式搭建
出于对架构的兴趣,一有时间我就会了解一下如何搭建一个高并发,高可用,可扩展的服务器运行环境。LVS-DR究竟现在的企业运用频率有多高其实我也不清楚,本文是下班之余断断续续研究搭建笔录,并且仅仅在virtual box虚拟机实践,没有实际生产实践。但是在搭建过程中确实学到了许多理论知识,这里只记录我的搭建历程和在搭建中遇到的疑惑,至于lvs是什么,dr又是什么这些已经有足够多的帖子,不再阐述。
环境搭建过程
1. 使用virtual box,我这里开了3台虚拟机,network使用了桥接模式,开启后IP分别如下:
- server1: 192.168.0.112(direct server,eth0网卡)
- server2: 192.168.0.113(real server1,eth0网卡)
- server3: 192.168.0.114(real server2,eth0网卡)
DR模式要求direct server(ds)和real server(rs)要部署在一个不分段网络,也就是说ip要在同一个网段上,我这里使用三个同一个局域网的内网IP来搭建,生产环境据说最好是分别有一个同网段公网IP比较好,但也可以使用一个公网IP来搭建的(没怎么细究,估计就是使用nat转发到局域网,但是这种方式貌似nat转发服务器会有问题吧?)
2. real server添加虚拟IP(VIP),并修改arp接收和回答规则,这里我统一写到一个shell脚本里面:
#!/bin/bash
#这里的VIP是direct server的访问ip
ifconfig eth0:0 192.168.0.112 netmask 255.255.255.255 #修改arp应答策略
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
vip绑定在real server的lo回环网卡上
关于vip的原理是:当一个请求到达direct server后,ds上的lvs服务(ipvsadm)会将报文的目的mac地址改为某台rs的mac地址,其他的原封不动的广播到网络,由于real server绑定了该虚拟ip并且mac也匹配上了所以就会被接收处理。处理完以后数据报文是直接返回给客户端的,并没有经过direct server。
关于arp应答策略修改原理:
- arp_ignore决定了当一个arp请求报文到达主机的时候,接收网卡的应答规则:0表示不论该网卡是否绑定了请求的IP地址,只要本机上有网卡绑定了该请求IP就会应答,并返回应答网卡的mac地址;1表示一个请求过来,如果网卡没有绑定该ip则忽略该arp请求。(解释:如果arp_ignore规则为默认值0,则当一个请求过来的时候,路由进行arp请求目的主机mac地址的时候就会有无数台机子回复这个arp,这样会造成混乱,所以将该值改为1,限制了rs的arp答复)
- arp_announce决定了当一个机子要为一个IP数据报发送一个arp请求报文的时候,发送的arp报文的源mac地址填写规则:0表示arp报文从哪个网卡发出的,arp的源mac地址选择该网络mac地址,arp的源IP地址保留IP 报文的源IP;2表示arp报文从哪个网卡发出的,arp的源mac地址和源IP地址都使用该网卡的。(解释:real server在处理完后要把处理好的数据返回给客户端,这时他会从eth0网卡广播一个arp,arp_anncounce默认值是0,那么arp的源mac是eth0的mac地址,源ip地址是vip,这个时候路由会回复这个arp并且更改路由表的映射,请注意这里!更改了路由表映射以后,客户端以后的请求将会直接转给real server,而不会给direct server,这样达不到负载的作用了;所以要改成1,real server在广播arp的时候源mac地址是eth0,源ip也将会是eth0的ip,所以就不会冲突了)
- 至于vip为什么要绑定在lo上,以我的理解应该就是想利用arp_announce的规则绕过路由器修改操作。
3. 在direct server上安装ipvadm服务并添加转发规则:
yum -y install ipvsadm systemctl start ipvsadm
#先清楚原来的配置
ipvsadm -C
#指定调度算法。调度算法可以指定以下8种:rr(轮询),wrr(权重),lc(最后连接),wlc(权重),lblc(本地最后连接),lblcr(带复制的本地最后连接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延迟),nq(永不排队)
ipvsadm -A -t 192.168.0.112:80 -s rr #添加转发规则, -g表示直接路由模式
ipvsadm -A -t 192.168.0.112:80 -r 192.168.0.113 -g
ipvsadm -A -t 192.168.0.112:80 -r 192.168.0.114 -g
到此,环境已经搭建好了,我们客户端访问的时候是直接访问112的,但是请求会转发给配置好的主机。在搭建过程中其实有很多理论知识是不懂的,开始很疑惑,看了别人的解释也一知半解,不过每天思考一点点,现在算是懂一些了,不过还有很多知识漏洞需要慢慢补充,加油吧
LVS-DR模式搭建的更多相关文章
- LVS DR模式搭建、keepalived+lvs
1.LVS DR模式搭建 条件: 即三台机器,在同一内网. 编辑脚本文件:/usr/local/sbin/lvs_dr.sh #! /bin/bashecho 1 > /proc/sys/net ...
- LVS DR模式搭建 keepalived lvs
LVS DR模式搭建• 三台机器 • 分发器,也叫调度器(简写为dir)172.16.161.130 • rs1 172.16.161.131 • rs2 172.16.161.132 • vip 1 ...
- Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS
一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...
- LVS DR模式搭建、keepalived+LVS搭建介绍
参考文献 http://blog.51cto.com/taoxie/2066993 疑问: 1.为什么要修改RealServer的返回arp响应和发送arp请求参数 echo "1&quo ...
- LVS DR模式 负载均衡服务搭建
LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...
- LVS基于DR模式搭建负载均衡群集
LVS -DR模式集群架构原理图
- 虚拟集群LVS及DR模式搭建笔记
LVS(虚拟集群Linux Virtual Server) LVS-NAT:地址转换,数据包来回都要经过NAT转换,所以Director Server(即LVS服务器)将成为系统瓶颈.使用NAT模式将 ...
- 负载均衡集群相关、LVS介绍、LVS调度算法、LVS NAT模式搭建
1.负载均衡集群相关 2.LVS的三种模式:NAT.DR .IP tunnel 3. LVS的调度算法(共有8种) 4.LVS NAT模式搭建准备条件: 在分发服务器上安装:yum install ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...
- Linux centosVMware 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
一.负载均衡集群介绍 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做 ...
随机推荐
- 将IMAGE转为PDF后上传
using iTextSharp.text; using iTextSharp.text.pdf; /// <summary> /// 将IMAGE转为PDF后上传 /// </su ...
- java递归方法分析
测试题目: 使用递归方式判断某个字串是否是回文( palindrome )“回文”是指正着读.反着读都一样的句子.比如“我是谁是我” 设计思路: 第一,判断是不是回文序列的条件是每一对对称位置的字符是 ...
- IIS7配置asp程序
Windows 中IIS7.IIS7.5是默认不安装的,所以在安装完Windows Vista/windows 7/windows 2008之后如果需要安装IIS7/iis7.5的话,就要自己动手了. ...
- openlayers图层加标注
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- gulp常用插件之gulp-rev-outdated使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-outdated这是一款旧的静态资产修订文件过滤器. 我们可以使用gulp rev来缓存一些资产.源文件的每次修改都会导致新的修 ...
- (三)运用Python模块和包
1 引言 为了能够在Python项目中高效地运用Python模块和包,我们需要进一步地来了解它们是如何在Python项目中进行定义.使用和工作的. 2 Python模块和包 Python模块和包的基本 ...
- Vue.js_devtools_5.1.0.zip【需要的可自行下载】
点击链接下载: Vue.js_devtools_5.1.0.zip
- VsCode开发Java SpringBoot遇到的问题
报错截图 报错一:Build failed, Do you want to continue? 编译失败,你想继续吗? 报错二:ConfigError:The Project "Demo&q ...
- Java 中多态的实现(上)
Java 中语法上实现多态的方式分为两种:1. 重载.2. 重写,重载又称之为编译时的多态,重写则是运行时的多态. 那么底层究竟时如何实现多态的呢,通过阅读『深入理解 Java 虚拟机』这本书(后文所 ...
- ST表求区间最值
#include<bits/stdc++.h> #define ll long long #define lowbit(x) x&-x using namespace std; ; ...