LVS负载均衡DR模式实现
LVS负载均衡之DR模式配置
DR 模式架构图:
操作步骤
实验环境准备:(centos7平台)
所有服务器上配置
# systemctl stop firewalld //关闭防火墙
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux //关闭selinux,重启生效
# setenforce //关闭selinux,临时生效
# ntpdate .centos.pool.ntp.org //时间同步
注意:realserver的网关需要指向DIP
步骤一:配置 router
1)打开 ip_forward
[root@router ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward =
[root@router ~]# sysctl -p
2)添加防火墙规则,指定客户端进来的规则,(此处使用 iptables 做的,也可以换成 firewalld来做)
[root@router ~]# iptables -F
[root@router ~]# yum install iptables-services iptables
[root@router ~]# iptables -t nat -A PREROUTING -p tcp --dport -i ens33 -j DNAT --to-destination 10.10.10.110 //这条表示从 ens33(也就是192.168.1.31的)网卡进来访问80的包,DNAT到 10.10.10.110(也就是 LVS 调度器的 IP)
[root@router ~]#
[root@router ~]# iptables -t nat -A POSTROUTING -p tcp --dport -o ens37 -j SNAT --to-source 10.10.10.120 //这条表示(为了客户端 192.168.1.35 访问 192.168.1.31 变成 10.10.10.120 访问10.10.10.110),这样可以实现 LVS 调度器能回客户端
如果不加这条的话,也可以在LVS 调度器上添加路由(route add default gw 10.10.10.120 指一个网关回去,因为 DNAT 的目标机器需要一个网关才能回给 client) [root@router ~]# iptables-save > /etc/sysconfig/iptables
[root@router ~]# systemctl start iptables.service
[root@router ~]# systemctl enable iptables.service
步骤二:配置 LVS 调度器
1)安装ipvsadm
[root@lvs-director ~]# yum install ipvsadm -y
2)配置调度规则
[root@lvs-director ~]# ipvsadm -A -t 10.10.10.110: -s rr
[root@lvs-director ~]# ipvsadm -a -t 10.10.10.110: -r 10.10.10.11: -g //这里的 -g 就是表示使用直接路由模式,LVS 调度器就会把数据包调给 10.10.10.11 或 10.10.10.12 时,就只修改 MAC 地址,不修改目标 IP 直接路由过去
[root@lvs-director ~]# ipvsadm -a -t 10.10.10.110: -r 10.10.10.12: -g
[root@lvs-director ~]# ipvsadm -ln
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.110: rr
-> 10.10.10.11: Route
-> 10.10.10.12: Route
3)保存在文件中,设置为开机启动
[root@lvs-director ~]#
[root@lvs-director ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@lvs-director ~]# systemctl start ipvsadm
[root@lvs-director ~]# systemctl enable ipvsadm
4) 由于下面会在 web服务器上面添加一个子接口 lo:0 10.10.10.110网卡,这样就会到导致 lvs 调度器过去的包可以成果过去,但是不会回来,因为回来时它会直接查找自己的 lo:0的10.10.10.110。所以需要加一个子接口 掩码给到 255.255.255.128。
[root@lvs-director ~]# ifconfig ens33: 10.10.10.111 netmask 255.255.255.128
注意:如果用掩码 255.255.255.0 还是会出现ping 不通的情况,因为ping的时候 10.10.10.110和10.10.10.111掩码相同,优先级一样。而用225.225.225.128路由选择会优先使用10.10.10.111去ping
步骤三:配置realserver
在 realserver(web01和web02)上安装 nginx,并在不同的 web 服务器上建立不同的主页内容(方便测试),并启动。
1) 在 web01 服务器配置
[root@web01 ~]# yum install nginx -y
[root@web01 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx
2) 在 web02 服务器配置
[root@web02 ~]# yum install nginx -y
[root@web02 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html
[root@web02 ~]# systemctl start nginx
[root@web02 ~]# systemctl enable nginx
3) 添加vip (不论后端有几个web服务器,都需要做)
# ifconfig lo: 10.10.10.110 netmask 255.255.255.255 //注意掩码为4个255,想永久生效,可以写一个 ifcfg-lo:0 的网卡配置文件即可。
最好不要写成 ifconfig lo:0 10.10.10.110/32 的形式,用ifconfig 查掩码会出现四个0。
这一步是非常重要的,因为路由方式扔过来的包,目标 IP 不变,也就是说还是 10.10.10.120,只是通过找 10.10.10.11 或 10.10.10.12 的 MAC 地址扔过来的。
所以 web 服务器上也需要有一个 10.10.10.120 这个 IP 来解析;用 lo 网卡来虚拟就是为了尽量不要与 lvs 网卡造成 ARP 广播问题。
这里 netmask 为什么是4个 255,而不是 255.255.255.0?
如果为 255.255.255.0,那么 10.10.10.0/24 整个网络都无法和web服务器通讯。
4) 真实服务器把默认路由指向 router 同物理网段的 IP,可以临时加也可以直接写在配置文件里面,这里上面的环境准备已经写在了配置文件。 (web1 和 web2 都需要做) 临时加示例:
# route add default gw 10.10.10.120
5) 抑制 web 服务器上 IP 冲突问题 (web1 和 web2 都需要做)
# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore =
net.ipv4.conf.lo.arp_announce =
net.ipv4.conf.all.arp_ignore =
net.ipv4.conf.all.arp_announce =
# sysctl -p
步骤四:在客户机上测试
[root@client ~]# curl 192.168.1.31
web01 10.10.10.11
[root@client ~]# curl 192.168.1.31
web02 10.10.10.12
[root@client ~]# curl 192.168.1.31
web01 10.10.10.11
[root@client ~]# curl 192.168.1.31
web02 10.10.10.12
从测试结果可以看出,轮循调度给后端web服务器了。至此dr模式就完成了。
LVS 概念篇参考 ->点我
NAT 模式实现参考 ->点我
LVS负载均衡DR模式实现的更多相关文章
- lvs负载均衡(DR模式)
lvs负载均衡(DR模式) 系统环境:lvs+keepalivedcentos7.5 ip:192.168.1.157 vip:192.168.1.150(主)centos7.5 ip:192.168 ...
- LVS负载均衡DR模式
什么是集群? 一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器.简而言之,一堆机器协同工作就是集群.集群的基本特点:高性能.高并发.高吞 ...
- LVS负载均衡DR模式部署
目录: 1. 拓扑图 2. 搭建环境 3. LVS服务器部署 4. 测试 1. 拓扑图 LVS-DR模式采的IP地址全部为外网IP. 本例中IP的设置全部采用临时设置IP的方式,重启后会 ...
- LVS负载均衡DR工作流程
LVS负载均衡DR工作流程 (a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链. 此时报文的源IP为CIP,目标IP为VIP (b) PRE ...
- LVS负载均衡NAT模式实现
LVS负载均衡之NAT模式配置 NAT 模式架构图: 操作步骤 实验环境准备:(centos7平台) 所有服务器上配置 # systemctl stop firewalld //关闭防火墙 # sed ...
- LVS负载均衡工作模式和调度算法
原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server ...
- lvs负载均衡net模式
环境配置,一台双网卡的ens33,ens37,ens37的网关是ens33的IP,指定一下nginx ens33,192.168.30.22,ens37,172.16.1.1nginx 192.16 ...
- LVS负载均衡NAT模式原理介绍以及配置实战
LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...
- lvs 负载均衡 NAT模式
1.原理 基于NAT机制实现.当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,同时将报文的目标端口也改成选定的realserve ...
随机推荐
- js + 加号 报错,IIS 配置
一.问题描述: 1开发环境完全没有问题: 2 build 后生成的js脚本,带有+号. 程序发布到IIS后,带加+号js脚本报错. 二.解决方案 1 修改build规则,让它不产生特殊符号. 能力有 ...
- element表格切入按钮以及复选框
1,element表格切入按钮 关键代码: html:<el-table :data="tableList" border style="width: 100%&q ...
- No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android"
安装完NDK的时候出现了这个错误,网上的办法是下载旧版的NDK,将其中的toolchain复制到新版的NDK中. 但其实不用这么麻烦. 经过对新版NDK的研究,发现NDK的更新记录里有一段话 This ...
- 基于python的种子搜索网站-开发过程
本讲会对种子搜索网站的开发过程进行详细的讲解. 源码地址:https://github.com/geeeeeeeek/bt 项目开发过程 项目简介 该项目是基于python的web类库django开发 ...
- quartz定时任务cron表达式
cron 表达式格式:秒 分 时 日 月 周 年(可选) 子表达式范围 字段名 字段解释 值范围 特殊字符 Seconds 秒 0~59 , - * / Minutes 分 0~59 , - * / ...
- iBatis第一章:基础知识概述 & MVC思想
一.java是一门十分受开发人员欢迎的语言,在开发语言排行榜中名列前茅,人们对其看法不尽相同,就我自身感受而言,我觉得java语言的主要优势体现在如下几方面:1.java属于开源语言,开发人员可以找到 ...
- JavaScript(四)变量
变量的声明 在JavaScript程序中,使用一个变量之前应当使用关键字var进行声明,如下所示:var num;var sum; 也可以写成var num,sum,avg;如果只是声明变量而没有给变 ...
- linux的常用命令介绍
1.ls 列出当前目录下的所有的文件和文件夹的名称. 参数如下:-a 显示隐藏文件 -l 显示方式为列表 -h 以可读性高的方式输出 eg: ls -lh /logs/tran 目录如果不指定(相 ...
- 使用Swagger辅助开发Fabric Application的Web API
前面的几篇博客,我们已经把Fabric环境搭建好了,也可以使用Go开发ChainCode了,那么我们在ChainCode开发完毕后,可以通过CLI来测试ChainCode的正确性,ChainCode开 ...
- C#,WPF中使用多文本显示数据,并对其数据进行关键字高亮等操作
需求:针对多文本信息显示,我们需要对其内容中的某些关键字或者某行进行高亮显示,并用不同颜色显示. 分析:在C#中,首先要进行多文本信息显示,可以RichTextBox(不要使用TextBox)控件,该 ...