LVS-DR模式实现调度负载
本篇文章主要梳理一下LVS前端调度过程及用户请求过程
实验架构
准备工作
添加各主机路由联通主机通信
Client IP
route add default gw 172.20.17.19
Route
路由主机开启地址转发功能
- 将/etc/sysctl.conf文件中的net.ipv4.ip_forward 值改为 1,后执行sysctl -p
后端主机
后端主机包括LVS,web server 主机,在其主机添加响应路由
route add -net 172.20.17.0 netmask 255.255.255.0 gw 192.168.214.133
部署HTTPserver
RS1与RS2安装web环境
[root@www ~]# yum install httpd php-fpm php-mysql -y
在RS1和RS2主机的httpd.conf中添加如下内容
<IfModule dir_module>
DirectoryIndex index.html
DirectoryIndex index.php #添加这一行
</IfModule>
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
配置完成后重启服务单点测试web服务
RS1和RS2服务设置arp抑制规则
ARP抑制要在添加VIP之前,否正会产生不轮询的现象
RS1和RS2都执行
[root@www ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@www ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@www ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@www ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
LVS,RS1,RS2添加VIP
三台主机执行:
ip addr add 192.168.214.140 dev lo
配置LVS集群规则
[root@LVS ~]# yum install ipvsadm -y
添加LVS集群,定义调度模式为RR轮询
[root@LVS ~]# ipvsadm -A -t 192.168.214.140:80 -s rr
将后端两台RS 主机加入集群,设置工作模式为DR模型
[root@LVS ~]# ipvsadm -a -t 192.168.214.140:80 -r 192.168.214.145 -g
[root@LVS ~]# ipvsadm -a -t 192.168.214.140:80 -r 192.168.214.143 -g
工作模式
-g: gateway, dr模式,默认
-i: ipip, tun模式
-m: masquerade, nat模式
-w weight:权重
查看ipvsadm规则信息
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.214.140:80 rr
-> 192.168.214.143:80 Route 1 0 0
-> 192.168.214.145:80 Route 1 0 0
Client查看测试
[root@yufu ~]# for i in {1..10};do curl 192.168.214.140;done
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
部署DNS
这里用DNS是让客户端使用域名解析的方式访问web服务,这样比较完整地模拟出正常环境下用户的请求响应过程
安装DNS
[root@DNS ~]# yum install bind -y
启动服务
[root@DNS ~]# systemctl start named
编辑named.conf文件内容如下
options {
// listen-on port 53 { 127.0.0.1; };
listen-on port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// allow-query { localhost; };
allow-query { any; };
编辑named.rfc1912.zones文件添加如下配置段
zone "yufu123.com" IN {
type master;
file "yufu123.com.zone";
};
在/var/named/目录下创建yufu123.com.zone
vim /var/named/yufu123.com.zone
$TTL 1D
@ IN SOA ns1.yufu123.com. admin.yufu.com (
20180703
1H
5M
7D
1D )
IN NS ns1.yufu123.com.
ns1 IN A 172.20.17.20
www.yufu123.com. IN A 192.168.214.140
yufu123.com. IN A 192.168.214.140
给DNS主机添加一条路由指向路由器的网口
[root@DNS ~]# route add -net 192.168.214.0 netmask 255.255.255.0 gw 172.20.17.19
Client使用域名测试
使用域名解析时,需要将路由表中的地址改为DNS服务的主机地址,如下
echo "nameserver 172.20.17.20" > /etc/resolv.conf
使用域名测试访问
[root@yufu ~]# for i in {1..10};do curl http://www.yufu123.com;done
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
不带www测试
[root@yufu ~]# for i in {1..10};do curl http://yufu123.com;done
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
RS 1 SERVER
RS 2 SERVER
一些问题
至此LVS前端负载调度的过程已经实现了,但是还存在很多的问题:比如LVS的角度节点存在单点问题,因为我只部署了一台,在图中画出了备用的节点,可以使用Keepalived实现LVS的高可用,但是这里并不打算实现高可用的架构。此外,还存在另一个问题,就是LVS无法对后端的RS进行健康状态监测,LVS只有调度功能,没有健康状态监测的功能,如果后端服务down机,lvs还是会一如既往地往故障主机上调度请求的,要实现健康状态监测,可以自己编写检测脚本实现,或者使用第三方工具辅助。后面的内容,就来实现基于第三方工具实现LVS的自动检测后端主机并自动添加删除RS节点的功能。
ldirectord监控和控制LVS
ldirectord 可以监控和控制LVS守护进程,还可以管理LVS规则
安装ldirectord
[root@LVS ~]# yum install ldirectord-3.9.6-0rc1.1.1.x86_64.rpm -y
复制配置文件
[root@LVS ~]# cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/ldirectord.cf
编辑内容
# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
#fallback6=[::1]:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no
# Sample for an http virtual service
virtual=192.168.214.140:80
real=192.168.214.143:80 gate
real=192.168.214.145:80 gate
# real=192.168.6.6:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
receive="RS"
通过上面的配置,无需再使用ipvsadm工具手动添加规则,在ldirectord配置文件中定义好集群规则即可。当后端主机故障无法连通时,ldirectord会自动剔除故障节点,节点恢复时自动添加
LVS-DR模式实现调度负载的更多相关文章
- LVS DR模式 负载均衡服务搭建
LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...
- CentOS下LVS DR模式负载均衡配置详解
一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Ma ...
- 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模式实验
LVS DR模式实验 三台虚拟机,两个台节点机(Apache),一台DR实验调度机 一:关闭相关安全机制 systemctl stop firewalld iptables -F setenforce ...
- lvs dr 模式请求过程
一. lvs dr 模式请求过程 1.整个请求过程如下: client在发起请求之前,会发一个arp广播的包,在网络中找"谁是vip",由于所有的服务器,lvs和rs都有vip,为 ...
- Keepalived+LVS DR模式高可用架构实践
Keepalived最初是为LVS设计,专门监控各服务器节点的状态(LVS不带健康检查功能,所以使用keepalived进行健康检查),后来加入了VRRP(虚拟路由热备协议(Virtual Route ...
- 一个公网地址部署LVS/DR模式
http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式 网上看了很多关于LVS的文章,在选取2种模式LVS/D ...
- LVS DR模式搭建、keepalived+lvs
1.LVS DR模式搭建 条件: 即三台机器,在同一内网. 编辑脚本文件:/usr/local/sbin/lvs_dr.sh #! /bin/bashecho 1 > /proc/sys/net ...
- lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)
前提:已经安装好 lvs+nginx+tomcat_1.tomcat_2+redis环境 ,可参考 (略有改动,比如tomcat_1.tomcat_2安装在两台机器上,而不是单机多实例 ,自行稍稍变动 ...
随机推荐
- PHP性能检测与优化—XHProf 数据阅读
PHP性能检测与优化—XHProf 数据阅读 一. 效果如下 请求总揽 函数调用情况 二. 参数含义 Inclusive Time 包括子函数所有执行时间 ...
- 有关background 背景图片不能显示
首先有两个概念 绝对路径,从根目录为起点到你所在的目录: 相对路径,从一个目录为起点到你所在的目录. 例如: ┍ A文件夹 C -| ...
- 隐藏 google 地图 Logo 隐藏 百度 地图 Logo
Google 地图 var isFirstLoad=true; //地图瓦片加载完成之后的回调 google.maps.event.addListener(map, 'tilesloaded', fu ...
- March 22 2017 Week 12 Wednesday
Satisfaction doesn't come from the outside, but from the inside. 满足感并非来自外界,而是来自内心. Everything that e ...
- 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像
什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建. 下面通过一个具体的例子来学习d ...
- python+pymssql+selenium 获取短信验证码登录(实战练习)
登录页面输入手机号, 获取短信验证码(验证码有10分钟有效期) 1 连接sql server数据库,获取10分钟之内的有效短信验证码 2 页面输入手机号,并获取验证码.若存在有效验证码则输入验证码,若 ...
- 《机器学习实战》中贝叶斯分类中导入RSS源例子
跟着书中代码往下写在这里卡住了,考虑到可能还会有其他同学也遇到了这样的问题,记下来分享. 先吐槽一下,相信大部分网友在这里卡住的主要原因是伟大的GFW,所以无论是软件FQ还是肉身FQ的小伙伴们估计是无 ...
- note02-计算机网络
2.物理层 通信系统模型(源->发送器->XXX->接收器->终),源发出数字信号,调制器编码为模拟信号,进行传输,解调器解码模拟信号为数字信号给终 信噪比,香农公式,C=B ...
- IOS开发之——IOS模拟器调试蓝牙BLE
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/24399887 因为在iPhone 4s ...
- RHEL6.5和RHEL7 的区别(转)
Rhel6.5实验环境搭建 1)操作系统安装 RHEL7是一站式安装 2)网卡配置文件 RHEL6: /etc/sysconfig/network-scripts/ifcfg-eth0 RHEL7 ...