LVS-DR直接路由实现负载均衡示例

简介:

LVS-DR直接路由实现负载均衡示例

要求:通过使用LVS的直接路由来实现服务器的负载均衡

    注:在做实验之前一定要先关闭每台主机的防火墙与SELinux

拓扑图

135511167.png

LVS服务器配置:

1> 开启转发功能

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

2> 安装lvs控制软件ipvsadm

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]# cd /mnt/cdrom/Cluster

[root@localhost Cluster]# rpm -ivh ipvsadm-1.24-10.i386.rpm

warning: ipvsadm-1.24-10.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...###################################### [100%]

1:ipvsadm###################################### [100%]

3> 创建规则

[root@localhost Cluster]# ipvsadm -A -t 192.168.2.11:80 -s rr

[root@localhost Cluster]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.20 -g

[root@localhost Cluster]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.30 -g

4> 保存规则并启动服务

[root@localhost Cluster]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm:[OK]

[root@localhost Cluster]# service ipvsadm start

Clearing the current IPVS table:[OK]

Applying IPVS configuration:[OK]

Http server 1 配置

1>安装http服务器软件

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

warning: httpd-2.2.3-31.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...################################## [100%]

1:httpd#################################### [100%]

[root@localhost Server]#

2>开启服务

[root@localhost Server]# service httpd start

Starting httpd:[OK]

3>http服务创建一个主页

[root@localhost Server]# echo "111111" > /var/www/html/index.html

4>开启arp过滤

先查看arp支持的状态

[root@localhost Server]# sysctl -a | grep arp

dev.parport.parport0.devices.lp.timeslice = 200

dev.parport.parport0.devices.active = none

dev.parport.parport0.modes = PCSPP,TRISTATE

dev.parport.parport0.dma = -1

dev.parport.parport0.irq = 7

dev.parport.parport0.base-addr = 8880

dev.parport.parport0.spintime = 500

dev.parport.default.spintime = 500

dev.parport.default.timeslice = 200

net.ipv4.conf.eth1.arp_accept = 0

net.ipv4.conf.eth1.arp_ignore = 0

net.ipv4.conf.eth1.arp_announce = 0

net.ipv4.conf.eth1.arp_filter = 0

net.ipv4.conf.eth1.proxy_arp = 0

net.ipv4.conf.eth0.arp_accept = 0

net.ipv4.conf.eth0.arp_ignore = 0

net.ipv4.conf.eth0.arp_announce = 0

net.ipv4.conf.eth0.arp_filter = 0

net.ipv4.conf.eth0.proxy_arp = 0

net.ipv4.conf.lo.arp_accept = 0

net.ipv4.conf.lo.arp_ignore = 0

net.ipv4.conf.lo.arp_announce = 0

net.ipv4.conf.lo.arp_filter = 0

net.ipv4.conf.lo.proxy_arp = 0

net.ipv4.conf.default.arp_accept = 0

net.ipv4.conf.default.arp_ignore = 0

net.ipv4.conf.default.arp_announce = 0

net.ipv4.conf.default.arp_filter = 0

net.ipv4.conf.default.proxy_arp = 0

net.ipv4.conf.all.arp_accept = 0

net.ipv4.conf.all.arp_ignore = 0

net.ipv4.conf.all.arp_announce = 0

net.ipv4.conf.all.arp_filter = 0

net.ipv4.conf.all.proxy_arp = 0

对其进行过滤

[root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 2" >> /etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 1" >> /etc/sysctl.conf

5>添加到主机192.168.2.11的路由

[root@localhost ~]# route add -host 192.168.2.11 dev lo:0

Http server 2 配置

1>安装http服务器软件及开启服务都与client 1的作法相同,所以就不同重复,自己操作。

2>http服务创建一个主页

[root@localhost Server]# echo "222222" > /var/www/html/index.html

3>开启arp过滤

先查看状态,如上,再过滤

[root@localhost Server]# echo "net.ipv4.conf.all.arp_ignore =1" >> /etc/sysctl.conf

[root@localhost Server]# echo "net.ipv4.conf.lo.arp_announce =2" >> /etc/sysctl.conf

[root@localhost Server]# echo "net.ipv4.conf.lo.arp_ignore =1" >> /etc/sysctl.conf

[root@localhost Server]# echo "net.ipv4.conf.all.arp_announce =2" >> /etc/sysctl.conf


4>添加到主机192.168.2.11的路由

[root@localhost ~]# route add -host 192.168.2.11 dev lo:0

测试

找一台在192.168.2.0网段的主机进行测试

135632750.png

刷新一下页面

135647146.png

现在我们来想像一种情况,如果我们一个用户在server 1上注册了一个帐户,而等到他再次再次登录的时候,他却进入了第二个server2的数据库,那么他可能登录进自己的帐户吗?这显然是不可以的,因为这两个server各自有自己的数据库,他们之间的数据不能相互传送,那么对这种情况我们应该怎么做呢,其实我们可以让这两个servers的数据库放在同一个地方,让这两个server在工作的时候都读取一个数据库,这样这个数据库不同步的问题就可以解决了,基于上面的实验,我们可以把这两个server的数据放在一个主机中,通过共享的方式,让两个server服务器读取同一个数据。

因为我们现在只是做一个实验,所以我们并不把这两个网站的数据库进行重合,我们只是把这两个网站主页分别挂载到远程数据库主机的一个目录.(在进行lvs负载均衡的时候,两个网站是一样的,基于实验的明确性,我们才使用了不同的网页内容,所以在实际使用中不能这样做)

Data server 配置

1>我们有两种方法进行网站主页的挂载操作,一种是静态挂载,另一种是自动挂载,因为网站是不间断的访问的,所以我们直接设置成开机静态挂载就行了,并且我们使用NFS服务器进行共享操作

2>创建共享目录/var/www/server1/var/www/server2,并添加主页

[root@localhost ~]# mkdir -p /var/www/server1

[root@localhost ~]# mkdir -p /var/www/server2

[root@localhost Server]# echo "aaaa" > /var/www/server1/index.html

[root@localhost Server]# echo "bbbb" > /var/www/server2/index.html

3>设置共享目录

[root@localhost Server]# vim /etc/exports//添加如下内容

/var/www/server1*(ro)

/var/www/server2*(ro)

4>开启NFS服务

[root@localhost Server]# service nfs restart

Shutting down NFS mountd:[OK]

Shutting down NFS daemon:[OK]

Shutting down NFS quotas:[OK]

Shutting down NFS services:[OK]

Starting NFS services:[OK]

Starting NFS quotas:[OK]

Starting NFS daemon:[OK]

Starting NFS mountd:[OK]

5> 设置开机启动

  [root@localhost ~]# chkconfig nfs on

Http server 1 配置

1>现在我们可以对dataserver中的共享目录来进行挂载了

首先查看一下要共享的目录

[root@localhost ~]# showmount -e 192.168.3.3

Export list for 192.168.3.3:

/var/www/server2 *

/var/www/server1 *

[root@localhost ~]#

2>开始进行静态挂载

[root@localhost ~]# vim /etc/fstab//添加如下一行

192.168.3.3:/var/www/server1 /var/www/htmlnfs defaults,soft,intr 0 0

3>使用mount –a来重新挂载

[root@localhost ~]# mount –a

再使用mount命令查看一下是否挂载成功

[root@localhost ~]# mount //出现下面的一句就说明挂载成功

192.168.3.3:/var/www/server1 on /var/www/html type nfs (rw,soft,intr,addr=192.168.3.3

Http server 2 配置

1>http server2上的操作和http server 1 的操作大体相似,我们只是简短来说明一下

2>设置挂载

[root@localhost ~]# vim /etc/fstab//添加如下一行

192.168.3.3:/var/www/server2 /var/www/htmlnfsdefaults,soft,intr 0 0

3 > 重新挂载一下

[root@localhost ~]# mount –a

测试

因为在挂载了远程的目录之后本地的目录就被覆盖掉了,所以服务器上的主页不用再删除,当然如果你感觉怕出差错,也是完全可以删除的。

135657927.png

刷新一下

135706372.png

本试验测试成功,结束!!!!!!!!!










本文转自 guodong810 51CTO博客,原文链接:http://blog.51cto.com/guodong810/1102039,如需转载请自行联系原作者
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
|
6月前
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
107 0
|
5月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
179 0
|
7月前
|
存储 负载均衡 应用服务中间件
LVS负载均衡群集——NAT模式实操
LVS负载均衡群集——NAT模式实操
194 0
|
3月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
205 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
180 1
|
6月前
|
负载均衡 应用服务中间件 nginx
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
41 0
|
7月前
|
存储 负载均衡 网络协议
LVS负载均衡群集—DR直接路由
LVS负载均衡群集—DR直接路由
65 0
|
7月前
|
域名解析 负载均衡 网络协议
keepalived+vip+lvs高可用负载均衡服务演化
keepalived+vip+lvs高可用负载均衡服务演化
319 0
|
10月前
|
存储 负载均衡 网络协议
LVS负载均衡群集
LVS负载均衡群集
128 0