本篇文章主要梳理一下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模式实现调度负载的更多相关文章

  1. LVS DR模式 负载均衡服务搭建

    LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...

  2. CentOS下LVS DR模式负载均衡配置详解

    一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Ma ...

  3. LVS DR模式搭建 keepalived lvs

    LVS DR模式搭建• 三台机器 • 分发器,也叫调度器(简写为dir)172.16.161.130 • rs1 172.16.161.131 • rs2 172.16.161.132 • vip 1 ...

  4. Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS

    一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...

  5. LVS DR模式实验

    LVS DR模式实验 三台虚拟机,两个台节点机(Apache),一台DR实验调度机 一:关闭相关安全机制 systemctl stop firewalld iptables -F setenforce ...

  6. lvs dr 模式请求过程

    一. lvs dr 模式请求过程 1.整个请求过程如下: client在发起请求之前,会发一个arp广播的包,在网络中找"谁是vip",由于所有的服务器,lvs和rs都有vip,为 ...

  7. Keepalived+LVS DR模式高可用架构实践

    Keepalived最初是为LVS设计,专门监控各服务器节点的状态(LVS不带健康检查功能,所以使用keepalived进行健康检查),后来加入了VRRP(虚拟路由热备协议(Virtual Route ...

  8. 一个公网地址部署LVS/DR模式

    http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式   网上看了很多关于LVS的文章,在选取2种模式LVS/D ...

  9. LVS DR模式搭建、keepalived+lvs

    1.LVS DR模式搭建 条件: 即三台机器,在同一内网. 编辑脚本文件:/usr/local/sbin/lvs_dr.sh #! /bin/bashecho 1 > /proc/sys/net ...

  10. lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)

    前提:已经安装好 lvs+nginx+tomcat_1.tomcat_2+redis环境 ,可参考 (略有改动,比如tomcat_1.tomcat_2安装在两台机器上,而不是单机多实例 ,自行稍稍变动 ...

随机推荐

  1. HTML表格相关元素

    <table> 标签定义 HTML 表格.简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成.tr 元素定义表格行,th 元素定义表头,td 元素定义 ...

  2. CSS动画效果

    CSS变形效果 Transform translate:平移 translate(x,y) translateX(x) translateY(y)相对于元素原始位置平移. scale:缩放 大于1放大 ...

  3. 简谈 Java 中的泛型通配符

    很好的一篇文章https://zhuanlan.zhihu.com/p/26681625

  4. [转载]AMOLED结构详解,BOE专家给你分析驱动补偿

    关键词: AMOLED, 驱动补偿 有机发光显示二极管(OLED)作为一种电流型发光器件已越来越多地被应用于高性能显示中.由于它自发光的特性,与LCD相比,AMOLED具有高对比度.超轻薄.可弯曲等诸 ...

  5. Android应用开发基础之八:广播与服务(二)

    服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...

  6. 狂欢圣诞节,Azure云邀你一起云端跑酷!

    想要速度更快? 希望绕过障碍? 还想安全抵达目的地? …… 平安夜夜游时的各种畅想,不也正是 IT 同事所追求的,更是业务发展的终极目标呀. 好啦,小编说的太多了,这样不好不好.过节休息不谈工作,那就 ...

  7. patch 修改有问题的

    diff --git a/include/net/tcp.h b/include/net/tcp.h@@ -1013,8 +1048,13 @@ static inline u32 keepalive ...

  8. poj 1753、2965枚举

    1753题目链接 题目大意: 一个4乘4的棋盘,上面放满了正反两面分别为黑和白的棋子,翻转一个棋子会让这个棋子上下左右的棋子也翻转,给定一个初始状态,求使所有棋子颜色相同所需的最少翻转次数. 解题思路 ...

  9. scrum 第四次冲刺

    一.项目目的 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的技术方向:本项目整 ...

  10. 构建高性能插件式Web框架

    基于MVC插件模式构建支持数据库集群.数据实时同步.数据发布与订阅的Web框架系统.如下图: 1.基于插件式开发 采用插件模式开发的优点是使得系统框架和业务模式有效地进行分离,系统更新也比较简单,只需 ...