国外网站如何搭建网页,个人网站模板h5,企业密信app下载安装,网页qq登录保护功能LVS 和 LVSkeepalived 这两种架构在平时听得多了#xff0c;最近才接触到另外一个架构LVSOSPF。这个架构实际上是LVSKeepalived 的升级版本#xff0c;我们所知道LVSKeepalived 架构是这样子的#xff1a; 随着业务的扩展#xff0c;我们可以对web服务器做水平扩展#xf… LVS 和 LVSkeepalived 这两种架构在平时听得多了最近才接触到另外一个架构LVSOSPF。这个架构实际上是LVSKeepalived 的升级版本我们所知道LVSKeepalived 架构是这样子的 随着业务的扩展我们可以对web服务器做水平扩展以此来提高系统的处理能力。但是我们会发现两台Director间始终只有一台是处于工作状态而另一台处于不工作的备份状态即使访问的流量再大同时也只能由一台Director 去应对。换句话说Director在这个架构里面没办法像web服务器那样做水平扩展实现负载均衡。那么是否有办法让两台Director都处于工作的状态呢答案是肯定的LVSOSPF 架构就是用来解决这个问题的。 LVSOSPF架构图如下 这个架构与LVSkeepalived 最明显的区别在于两台Director都是Master 状态而不是Master-Backup如此一来两台Director 地位就平等了。剩下的问题就是看如何在这两台Director 间实现负载均衡了。这里会涉及路由器领域的一个概念等价多路径 ECMP等价多路径 ECMPEqual-CostMultipathRouting等价多路径存在多条不同链路到达同一目的地址的网络环境中如果使用传统的路由技术发往该目的地址的数据包只能利用其中的一条链路其它链路处于备份状态或无效状态并且在动态路由环境下相互的切换需要一定时间而等值多路径路由协议可以在该网络环境下同时使用多条链路不仅增加了传输带宽并且可以无时延无丢包地备份失效链路的数据传输。 ECMP最大的特点是实现了等值情况下多路径负载均衡和链路备份的目的在静态路由和OSPF中基本上都支持ECMP功能。 例如下图中的路径A、路径B、路径C 3条路径的COST值相同既是等价路径。在路由器选路的时候便可以同时使用这3条路径从而实现负载均衡。
注虽然链路COST值相同但是实际情况是各路径的带宽、时延和可靠性等不一样把Cost认可成一样不能很好地利用带宽尤其在路径间差异大时效果会非常不理想。这时可以使用
WCMPWeight-CostMultipathRouting加权多路径能够非常灵活地按照比例在链路上传递流量。 回到前面的那个问题如何实现对多个Director 的负载均衡相信看到这里应该都清楚了没错就是利用OSFP的等价多路径来实现。那么新的问题又来了我们知道Director 是一台LINUX/Unix机器不是路由器那它如何跑OSPF协议如何实现等价多路径 实际上就是将调度器模拟成路由器将多台调度器与真实的路由器组成OSPF网络需要做的就是为调度器安装quagga这个软件并进行相关的配置即可。 【实验步骤】
实验平台 Ubuntu12.04
路由器使用GNS3桥接网卡模拟真实路由器 GNS3配置
vmnet2、vmnet3网卡配置如下(vmware 菜单栏 编辑 -- 虚拟网络编辑器) GNS3桥接vmware网卡e1/0 桥接vmware的vmnet2网卡e1/1 桥接vmware的vmnet3网卡。GNS3总共需要3个设备两个云设备(用于桥接网卡)和一台路由器(模拟真实路由器) 完成后GNS3 的拓扑是这样的 #配置真实路由器R1
R1#conf t
R1(config)#int lo1
R1(config-if)#ip addr 2.2.2.2 255.255.255.0
R1(config-if)#int e1/0
R1(config-if)#ip add 192.168.20.120 255.255.255.0
R1(config-if)#no shut R1(config-if)#int e1/1
R1(config-if)#ip add 192.168.30.120 255.255.255.0
R1(config-if)#no shut R1(config-if)#int e1/0
R1(config-if)#ip ospf hello-interval 1
R1(config-if)#ip ospf dead-interval 3
R1(config-if)#ip ospf network point-to-point
R1(config-if)#ip ospf priority 100 R1(config-if)#int e1/1
R1(config-if)#ip ospf hello-interval 1
R1(config-if)#ip ospf dead-interval 3
R1(config-if)#ip ospf network point-to-point
R1(config-if)#ip ospf priority 99
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#network 192.168.20.0 0.0.0.255 area 0
R1(config-router)#network 192.168.30.0 0.0.0.255 area 0
R1(config-router)#network 2.2.2.2 0.0.0.0 area 0 调度器上配置quagga模拟路由器
#安装quagga
rootnode1:~# apt-get install quagga -y #修改配置文件
rootnode1:~# vim /etc/quagga/daemons
zebrayes
ospfdyes rootnode1:~# cp /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf
rootnode1:~# cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
rootnode1:~# chown quagga.quagga /etc/quagga/ospfd.conf
rootnode1:~# chown quagga.quagga /etc/quagga/zebra.conf #启动quagga
rootnode1:~# /etc/init.d/quagga restart #查看是否有相应监控端口
rootnode1:~# netstat -nultp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2601 0.0.0.0:* LISTEN 1737/zebra
tcp 0 0 127.0.0.1:2604 0.0.0.0:* LISTEN 1741/ospfd node2上的安装步骤同上 #尝试远程连接quagga、配置quagga
rootnode1:~# telnet 127.0.0.1 2604
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ^].
Hello, this is Quagga (version 0.99.20.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password: #默认密码为zebra #估计看到这学过网络的童鞋都已经很熟悉了可以大展身手了。闲话少说继续配置
node1 配置如下
ospfd en
ospfd# configure terminal
ospfd(config)# router ospf
ospfd(config-router)# router-id 192.168.20.101
ospfd(config-router)# network 192.168.20.0/24 area 0
ospfd(config-router)# network 1.1.1.1/24 area 0
ospfd(config-router)# exit ospfd(config)# interface eth0
ospfd(config-if)# ospf hello-interval 1
ospfd(config-if)# ospf dead-interval 3
ospfd(config-if)# ip ospf network point-to-point
ospfd(config-if)# end
ospfd# wr
Configuration saved to /etc/quagga/ospfd.conf
ospfd# exit
Connection closed by foreign host. node2配置如下
ospfd en
ospfd# configure terminal
ospfd(config)# router ospf
ospfd(config-router)# router-id 192.168.30.100
ospfd(config-router)# network 192.168.30.0/24 area 0
ospfd(config-router)# network 3.3.3.3/24 area 0
ospfd(config-router)# exit ospfd(config)# interface eth0
ospfd(config-if)# ospf hello-interval 1
ospfd(config-if)# ospf dead-interval 3
ospfd(config-if)# ip ospf network point-to-point
ospfd(config-if)# end
ospfd# wr
Configuration saved to /etc/quagga/ospfd.conf
ospfd# exit
Connection closed by foreign host. #在node1和node2上分别启用一个loopback口用于测试
rootnode1:~# ifconfig lo:1 1.1.1.1 netmask 255.255.255.0
rootnode2:~# ifconfig lo:1 3.3.3.3 netmask 255.255.255.0
测试
在路由器R1 上执行show ip ospf neighor 可以看到OSPF的邻居
R1#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface
192.168.30.100 0 FULL/ - 00:00:02 192.168.30.100 Ethernet1/1
192.168.20.101 0 FULL/ - 00:00:02 192.168.20.101 Ethernet1/0 在node1上面ping node2 至此ospf的配置完成 至于LVS的配置基本上同LVSKeepalived 架构在配置的过程中应注意的地方有以下几点
1、配置router_id 的时候为了区分开可用ip地址作为router_id 例如
global_defs { router_id 192.168.30.102
} 2、因为两台调度器都是要提供服务的因此两台调度器应都处于Master的状态那么这里有3个方面要注意
(1)首先是状态那里两台调度器都要是MASTER
vrrp_instance VI_1 { state MASTER ... ... }
(2)其次要以双主的模式启动需要使调度器处于不同的域中。(一山不容二虎么... ...)
node1
vrrp_instance VI_1 { ... ...
virtual_router_id 51 ... ...
} node2
vrrp_instance VI_1 { ... ... virtual_router_id 52 ... ...
} (3)这里的优先级应一致统一由真实路由器R1进行调度。
node1
vrrp_instance VI_1 { ... ... priority 110 ... ... } node2
vrrp_instance VI_1 { ... ... priority 110 ... ... }