——————题记
1、Lvs群集
LVS: Linux Virtual Server
LVS:ipvsadm/ipvs
2、何时使用lvs
3、Lvs director is a layer4 switch
4、LVS群集的ip地址名称:Lvs ip address name
5、LVS群集的类型:Types of lvs cluster
①:LVS-NAT
通过NAT实现虚拟服务器(VS/NAT)
特点:
? IP DIP必须在同一网段,而且必须为私有地址
? IP为RIP的default gateway
? irector很容易会成为整个网络的瓶颈点
? IP可支持端口映射
②:LVS-DR
通过直接路由实现虚拟服务器(VS/DR)
特点:
? RIP DIP必须在同一网段,都不必是私有地址,
? IP直接给CIP回复,directory只需要处理请求数据,这样的工作效率将成倍的提高,解决了LVM-NAT的瓶颈问题。不能进行端口映射
? IP不支持端口映射。服务必须使用默认的端口
? 理员可以直接通过Internet连接到RIP对服务器进行配置。但这里同时也存在着来自Internet的网络安全隐患
③:LVS-TUN
通过IP隧道实现虚拟服务器(VS/TUN)
特点:
? IP DIP 都必须为公网地址,DIP RIP之间数据通过网络Internet传送。
? directory和server可以不再同一个网段,可以跨越地区,其他的都和LVM-DR形式的一样。
? 其耗资源,投资较大。
6、arp_announce/arp_ignore
arp_announce
arp_ignore
LVS群集的详解
一、群集的概念:
群集由通过输入/输出系统互联的若干服务器构成。这些服务器连接到存储介质中,由分布资源管理软件(DRM) 进行管理。其组成部分处在不断的改进之中:刀片式服务器,快速InfiniBand I/O技术和更为复杂的DRM软件,这些部分组合在一起,使得群集成为IT经理们的实用工具。
二、群集的主要应用:
服务器群集技术最主要的应用即在于网络负载平衡的功能。 网络负载平衡使用两台或更多台一起工作的主机计算机组成的群集,为服务器提供了高可用性和高伸缩性。Internet 客户端使用一个 IP 地址或一组地址访问群集。客户端无法区别群集和单一服务器。服务器应用程序并不表明它们是在群集上运行的。但是,网络负载平衡群集与运行单个服务器应用程序的单个主机有很大的区别,因为即使在某个群集主机发生故障的情况下,它也可以提供不间断服务。群集对客户端请求的响应也比单个主机快。
如果某个主机发生故障或脱机,则网络负载平衡通过将传入的网络通信重定向到工作的群集主机,从而带来了高可用性。连到脱机主机的现有连接将丢失,但是 Internet 服务仍然是可用的。在多数情况下(例如,就 Web 服务器而言),客户端软件可以自动重试失败的连接,而且客户端在接收响应时,只有数秒钟的延迟。 网络负载平衡通过在分配给网络负载平衡群集的一个或多个虚拟 IP 地址(群集 IP 地址)间分配传入的网络通信,从而带来了可变化的性能。然后,群集中的主机同时对不同的客户端请求甚至来自同一客户端的多个请求做出响应。例如,Web 浏览器可以从网络负载平衡群集中的不同主机获得所有单张网页中的多幅图像。这就提高了处理速度,并缩短了对客户端做出响应的时间。
网络负载平衡使得单个子网上的所有群集主机可以同时检测群集 IP 地址的传入网络通信。在每个群集主机上,网络负载平衡驱动程序充当群集适配器驱动程序和 TCP/IP 堆栈间的过滤器,以便在主机间分配通信。
三、LVS的调度算法:
在内核中的连接调度算法上,IPVS已实现了以下十种调度算法:
LVS的算法分为两大类:
静态算法:只是根据算法进行调度并不考虑后端REALSERVER的实际连接情况
* 轮叫调度(Round-Robin Scheduling)(rr)
调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
* 加权轮叫调度(Weighted Round-Robin Scheduling)(wrr)
调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值
* 目标地址散列调度(Destination Hashing Scheduling)(dh)
"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
* 源地址散列调度(Source Hashing Scheduling)(sh)
"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
动态算法:前端的调度器会根据后端REALSERVER的实际连接情况来分配请求
* 最小连接调度(Least-Connection Scheduling)(LC)
调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
* 加权最小连接调度(Weighted Least-Connection Scheduling)(WLC) (Default)
在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
* 最短预期延时调度(Shortest Expected Delay Scheduling)(SED)
对wlc的改进,在wlc算法的基础上给权重值加一,主要用来针对某个服务器活动链接数值为0情况
* 不排队调度(Never Queue Scheduling)(NQ)
基于SED算法的改进,不排队。Never Queue从不排队,若第二个要给没有连接数的服务器,不至于让另一个服务器特别闲,在权重差别比较大的时候特别有用。
* 基于局部性的最少链接(Locality-Based Least Connections Scheduling)(LBLC)
基于本地的最少连接,DH算法的动态算法,会计算缓存上现在处于活动连接的。
* 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)(LBLCR)
带复制的基于本地的最少连接,基于icp协议缓存复制来完成的。
四、群集的种类:
LB:Load Balancing,负载均衡群集
HA:High Availability ,高可用性群集
HP:High Performance,高性能群集
负载均衡集群目的是提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的Web服务。负载均衡集群往往也具有一定的高可用性特点。
高可用性集群运行于两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务。高可用性集群的设计思想就是要最大限度地减少服务中断时间。这类集群中比较著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。
高性能集群对一种服务而言不具有负载均衡功能,它可以提高整个系统的可靠性,但不能增加负载的能力。当然,高可用性集群可以运行多种服务,并适当分配在不同节点上,比如节点A提供Oracle服务,同时节点B提供Sybase服务,这也可以看成是某种意义上的负载均衡,不过这是对多种服务的分配而言。 简单的说,高性能计算(High-Performance Computing)是计算机科的一个分支,它致力于开发超级计算机,研究并行算法和开发相关软件。
Director:
4层:TCP/IP port(类似DNAT)
应用层:5/7 代理服务器
1. 定义虚拟服务器
ip1:80 s rr
2. ip1:80 -r server1
ip2:80 -r server2
HA 高可用性
HA:High Availability ,高可用
一般性:99.9%
关键性:99.999%
节点:
2个节点 active -àstandby active-àactive
RHCS redhat aluster suite 100个节点 n/m模式
arp 缓存 控制信息 心跳线 (双绞线 光纤 串行线)
群集分裂 (split-brain)
解决方法: stonith(电源交换机,ssh,meatware)fence机器模块设备
共享存储:
? das : 直接附加存储 scsi 磁盘柜
? nas : 网络附加存储 samba nfs 文件级的共享 效率低
? san : 存储区域网络 fc-san(光纤) ip-san(iscsi:ip)效率高
群集文件系统 redhat:gfs2 oracle:ocfs2
故障转移:
故障转移域
多个节点:群集工作票数:quorum dc
2个节点:仲裁磁盘(100M)心跳线
实现方式:
heartbeat v1 v2 v3
群集资源:
群集ip,服务进程(服务脚本) 存储
压力测试工具:ab –c 100 –n 1000
IPVS命令用法:
ipvsadm
-A|E –t|u vip:port -s SCHEDULING(方法)
-d -D| -t|u vip:port
-a | e -t|u vip:port -g|i|m (模式 dr,tun,nat)
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface]
[--syncid syncid]
ipvsadm --stop-daemon state
ipvsadm -h
-A——add-service在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E ——edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。 -D ——delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。 -C ——clear清除内核虚拟服务器表中的所有记录。 -R ——restore恢复虚拟服务器规则-S ——save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a ——add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e ——edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d ——delete-server删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l ——list 显示内核虚拟服务器表
-Z ——zero虚拟服务表计数器清零(清空当前的连接数量等)
——set tcp tcpfin udp 设置连接超时值——start-daemon启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup.在这个功能上也可以采用keepalived 的VRRP 功能。
——stop-daemon 停止同步守护进程-h ——help显示帮助信息其他的选项:-t ——tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port] -u ——udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port] -f ——fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s ——scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc. -p ——persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。 -M ——netmask netmask persistent granularity mask-r ——real-server server-address真实的服务器[Real-Server:port]
-g ——gatewaying指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i ——ipip 指定LVS 的工作模式为隧道模式-m ——masquerading 指定LVS 的工作模式为NAT 模式-w ——weight weight 真实服务器的权值——mcast-interface interface 指定组播的同步接口-c ——connection显示LVS 目前的连接 如:ipvsadm -L -c——timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L ——timeout——daemon 显示同步守护进程状态——stats 显示统计信息——rate 显示速率信息——sort 对虚拟服务器和真实服务器排序输出——numeric -n 输出IP 地址和端口的数字形式压力测试工具:ab –c 100 –n 1000
案例一:
NAT模型
拓扑图:
案例应用实现详细步骤如下:
1. Client-pc客户端配置
2. Director服务器配置
2.1 Director服务器ip地址配置
[root@nodel ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.145.100
GATEWAY=192.168.145.254
[root@nodel ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.2.1
[root@nodel ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
Bringing up interface eth1: [ OK ]
2.2 开启director数据包转发能力
[root@director ~]# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1
[root@director ~]# sysctl -p
net.ipv4.ip_forward = 1
2.3 配置本地yum服务器:
2.4 安装配置dircetor服务器:
[root@director ~]# yum install -y ipvsadm
[root@director ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@director ~]# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[root@director ~]# service ipvsadm start
Clearing the current IPVS table: [ OK ]
Applying IPVS configuration: [ OK ]
3. 配置real-server-1的web服务器:
3.1 ip地址配置
[root@nodel ~]# hostname r1.nodel.com
注销重新登录
[root@r1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:1b:f1:ba
NETMASK=255.255.255.0
IPADDR=192.168.2.100
GATEWAY=192.168.2.1
[root@r1 ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
3.2 配置本地yum服务器:
[root@r1 ~]# vim /etc/yum.repos.d/server.repo
[rhel-server]
name=Red Hat Enterprise Linux server
baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@r1 ~]#mkdir /mnt/cdrom
[root@r1 ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@r1 ~]#yum list all
3.3 Real-server-1的Web服务器:
[root@r1 ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm
[root@r1 ~]#echo "web1" > /var/www/html/index.html
[root@r1 ~]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for r1.nodel.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
3.4 客户端访问real-server-1的web服务:(使用vmnet1)
4. 配置real-server2的web服务器:
4.1 ip地址配置
[root@nodel ~]# hostname r2.nodel.com
注销重新登录
[root@r2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:1b:f1:ba
NETMASK=255.255.255.0
IPADDR=192.168.2.101
GATEWAY=192.168.2.1
[root@r2 ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
4.2 配置本地yum服务器:
[root@r2 ~]# vim /etc/yum.repos.d/server.repo
[rhel-server]
name=Red Hat Enterprise Linux server
baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@r2 ~]#mkdir /mnt/cdrom
[root@r2 ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@r2 ~]#yum list all
4.3 Real-server-2的Web服务器:
[root@r2 ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm
[root@r2 ~]#echo "web2" > /var/www/html/index.html
[root@r2 ~]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for r2.nodel.vom
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
4.4 客户端访问real-server-2的web服务:(使用vmnet1)
5. 客户端测试:wrr
5.1 客户端访问director的群集服务服务:(网卡使用桥接模式)http://192.168.145.100
5.2 客户端不断刷新,发现出现2次web2,一次web1界面,说明按权重轮询
5.3 在director上查看信息如下:轮询调度比几乎为2:1
[root@director ~]# 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.145.100:80 wrr
-> 192.168.2.100:80 Masq 1 0 12
-> 192.168.2.101:80 Masq 2 0 24
5.4 客户端测试-2:rr
[root@director ~]# ipvsadm –C #首先清空以前配置
[root@director ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@director ~]# ipvsadm -A -t 192.168.145.100:80 -s rr
[root@director ~]# ipvsadm -a -t 192.168.145.100:80 -r 192.168.2.100 -m
[root@director ~]# ipvsadm -a -t 192.168.145.100:80 -r 192.168.2.101 –m
[root@director ~]# 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.145.100:80 rr
-> 192.168.2.101:80 Masq 1 0 0
-> 192.168.2.100:80 Masq 1 0 0
[root@director ~]# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[root@director ~]# service ipvsadm restart
Clearing the current IPVS table: [ OK ]
Applying IPVS configuration: [ OK ]
客户端访问director的群集服务服务:(网卡使用桥接模式)http://192.168.145.100
客户端不断刷新,发现web2和web1交替出现,比率为1:1,说明依次轮询rr
在director上查看信息如下:轮询调度比几乎为1:1;
说明lvs调度方法是用的是RR模式
[root@director ~]# 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.145.100:80 rr
-> 192.168.2.100:80 Masq 1 0 15
-> 192.168.2.101:80 Masq 1 0 15
至此,lvs-nat模型已完结!
案例二:LVS-DR模型
拓扑图:
案例应用实现详细步骤如下:
一.Client-pc客户端配
二. Director服务器配置
2.1 Director服务器ip地址配置
[root@nodel ~]# setup
[root@nodel ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
[root@nodel ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:66:E1:DA
inet addr:192.168.145.100 Mask:255.255.255.0
[root@nodel ~]# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:66:E1:DA
inet addr:192.168.145.100 Bcast:192.168.145.100 Mask:255.255.255.255
[root@nodel ~]# hostname director.nodel.com #注销重新登录
2.2 为director添加路由
[root@director ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.145.100 0.0.0.0 UG 0 0 0 eth0
[root@director ~]# route add -host 192.168.145.100 dev eth0:0
[root@director ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.145.100 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.145.100 0.0.0.0 UG 0 0 0 eth0 2.3 配置本地yum服务器:
[root@director ~]# vim /etc/yum.repos.d/server.repo
[rhel-server]
name=Red Hat Enterprise Linux server
baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-cluster]
name=Red Hat Enterprise Linux cluster
baseurl=file:///mnt/cdrom/Cluster/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@director ~]#mkdir /mnt/cdrom
[root@director ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@director ~]#yum list all
2.4 安装配置dircetor服务器:
[root@director ~]# yum install -y ipvsadm
[root@director ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@director ~]# ipvsadm -A -t 192.168.145.100:80 -s rr
[root@director ~]# ipvsadm -a -t 192.168.145.100:80 -r 192.168.145.200 -g
[root@director ~]# ipvsadm -a -t 192.168.145.100:80 -r 192.168.145.201 -g
[root@director ~]# 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.145.100:80 rr
-> 192.168.145.201:80 Route 1 0 0
-> 192.168.145.200:80 Route 1 0 0
[root@director ~]# service ipvsadm save
[root@director ~]# service ipvsadm restart
三.配置real-server-1的web服务器:
3.1 解决arp问题:
[root@nodel ~]# hostname r1.nodel.com
注销重新登录
[root@r1 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
[root@r1 ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
[root@r1 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
[root@r1 ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
[root@r1 ~]# sysctl -p
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
3.2 配置ip地址和路由
[root@r1 ~]# setup
[root@r1 ~]# service network restart
[root@r1 ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:1B:F1:BA
inet addr:192.168.145.200 Mask:255.255.255.0
[root@r1 ~]# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:192.168.145.100 Mask:255.255.255.255
[root@r1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.145.100 0.0.0.0 UG 0 0 0 lo
[root@r1 ~]# route add -host 192.168.145.100 dev lo:0
[root@r1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.145.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo
192.168.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.145.100 0.0.0.0 UG 0 0 0 lo
3.3 配置Real-server-1的Web服务器:
[root@r1 ~]#mkdir /mnt/cdrom
[root@r1 ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@r1 ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm
[root@r1 ~]# echo "web1 -- real-server-1" > /var/www/html/index.html
[root@r1 ~]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for r1.nodel.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
3.4 客户端访问real-server-1的web服务:(桥接)
四.配置real-server2的web服务器:
4.1 解决arp问题:
[root@nodel ~]# hostname r2.nodel.com
注销重新登录
[root@r2 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
[root@r2 ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
[root@r2 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
[root@r2 ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
[root@r2 ~]# sysctl -p
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
4.2 配置ip地址和路由
[root@r2 ~]# setup
[root@r2~]# service network restart
[root@r2 ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:AE:83:D1
inet addr:192.168.145.201 Mask:255.255.255.0
[root@r2 ~]# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:192.168.145.100 Mask:255.255.255.255
[root@r2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.145.100 0.0.0.0 UG 0 0 0 lo
[root@r2 ~]# route add -host 192.168.145.100 dev lo:0
[root@r2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.145.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo
192.168.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.145.100 0.0.0.0 UG 0 0 0 lo
4.3 配置Real-server-2的Web服务器:
[root@r2 ~]#mkdir /mnt/cdrom
[root@r2 ~]# mount /dev/cdrom /mnt/cdrom/
[root@r2 ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm
[root@r2 ~]#echo "web2 -- real-server-2" > /var/www/html/index.html l
[root@r2 ~]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for r2.nodel.vom
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
4.4 客户端访问real-server-2的web服务:(桥接)
五.客户端测试:
5.1 客户端访问director的群集服务服务:(网卡使用桥接模式)http://192.168.145.100
5.2 客户端不断刷新,发现web2和web1交替出现,比率为1:1,说明依次轮询模式为RR
5.3在director上查看信息如下:轮询调度比几乎为1:1;
说明lvs调度方法是用的是RR模式
[root@director ~]# 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.145.100:80 rr
-> 192.168.145.200:80 Route 1 0 14
-> 192.168.145.201:80 Route 1 0 14
至此,lvs-dr模型完结!