lvs DR模式

来源:互联网 发布:朗朗数码的mac怎么样 编辑:程序博客网 时间:2024/05/18 12:31

DR模式的原理
一般来说,LVS集群采用三层结构,其主要组成部分为:
A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

DR模式工作流程
现在客户端CLient访问172.25.28.100,目的端口为80,于是客户端和我们VIP,端口80建立连接(TCP三次握手,只是建立连接没有传送数据),之后客户端发送HTTP请求,LVS在VIP上收到之后,根据hash策略,从后端realserver中选出一台作为此次请求的接受者,假设为RIP1,LVS将请求包的目的mac地址更改为RIP1的mac,然后封装后转发给后端的RIP1,同时将该链接记录在hash表中。
RIP1的某一块网卡,比如eth0,接收到这个转发包看到mac地址是自己的,于是就转发给上层的IP层,IP层解开包后,发现目的的IP地址也是自己,因为VIP也配置在我们的一块non-arp的网卡上(比如lo:0),然后根据IP首部的类型字段(这里是TCP),把请求送给TCP,然后TCP根据目的端口80,传给应用层的Apache,Apache处理完请求之后,将数据传给TCP,TCP将源端口更改为80 ,源IP更改为VIP,目的端口更改为客户端的端口,目的IP更改为Client的IP,打包后给IP层,IP层根据目的地址进行路由,然后经过网络返给Client,完成了一次请求;
早上看原理的时候,发现了一个特别清晰的图解。贴在这里咯!!!
http://blog.csdn.net/pi9nc/article/details/23380589

DR配置过程:

lvs负载均衡器 ip:172.25.28.1 vip:172.25.67.100
web1:172.25.28.2
web2:172.25.28.3

一:安装web服务器,此处用apache
web1:

 [root@server2 ~]#  yum install -y httpd [root@server2 ~]#  echo "172.25.28.2" /var/www/html/index.html [root@server2 ~]# /etc/init.d/httpd start

web2:

 [root@server3 ~]#  yum install -y httpd [root@server3 ~]#  echo "172.25.28.3" /var/www/html/index.html [root@server3 ~]# /etc/init.d/httpd start

二、安装LVS软件
配置高可用yum源

[root@server1 ~]# cat /etc/yum.repos.d/rhel-source.repo [rhel-source]name=Red Hat Enterprise Linux $releasever - $basearch - Sourcebaseurl=http://172.25.67.250/rhel6.5gpgcheck=0[HighAvailability]name=Red Hat Enterprise Linux HighAvailabilitybaseurl=http://172.25.67.250/rhel6.5/HighAvailabilitygpgcheck=0[LoadBalancer]name=Red Hat Enterprise Linux LoadBalancerbaseurl=http://172.25.67.250/rhel6.5/LoadBalancergpgcheck=0[ResilientStorage]name=Red Hat Enterprise Linux ResilientStoragebaseurl=http://172.25.67.250/rhel6.5/ResilientStoragegpgcheck=0[ScalableFileSystem]name=Red Hat Enterprise Linux ScalableFileSystembaseurl=http://172.25.67.250/rhel6.5gpgcheck=0

安装ipvsadm

yum install -y ipvsadm

查看ipvs模块是否加载

[root@server1 ~]# lsmod |grep ip_vs  ##查看ipvs模块是否加载因为此时系统还没有把ipvs模块加载进系统,需要我们执行ipvsadm命令才会加载进去或者modprobe ip_vs。[root@server1 ~]# ipvsadmIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight [root@server1 ~]# lsmod |grep ip_vsip_vs_rr                1420  1 ip_vs                 125220  3 ip_vs_rrlibcrc32c               1246  1 ip_vsipv6                  317340  16 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

三、手动配置LVS负载均衡器

添加vip

[root@server1 ~]# ip addr add 172.25.28.100 dev eth0

ipvsadm添加lvs服务

[root@server1 ~]# ipvsadm -C   ##清空之前配置[root@server1 ~]# ipvsadm -A -t 172.25.28.100:80 -s rr#添加虚拟服务指定VIP[root@server1 ~]# ipvsadm -a -t 172.25.28.100:80 -r 172.25.28.2:80 -g#针对虚拟服务添加RS节点[root@server1 ~]# ipvsadm -a -t 172.25.28.100:80 -r 172.25.28.3:80 -g[root@server1 ~]# ipvsadm -Ln#查看VIP和RS是否已经配置成功IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.28.100:80 rr  -> 172.25.28.2:80               Route   1      0          0           -> 172.25.28.3:80               Route   1      0          0         

LB上删除虚拟服务

ipvsadm -D -t 172.25.67.100:80  

四、RS节点服务器手动配置

添加VIP

[root@server2 ~]# ip addr add 172.25.28.100/24 dev eth0 [root@server2 ~]# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 52:54:00:a6:4a:16 brd ff:ff:ff:ff:ff:ff    inet 172.25.28.2/24 brd 172.25.28.255 scope global eth0    inet 172.25.28.100/24 scope global secondary eth0    inet6 fe80::5054:ff:fea6:4a16/64 scope link        valid_lft forever preferred_lft forever

arp 抑制rs vip

[root@server2 ~]# yum install -y arptables_jf[root@server2 ~]# arptables -A IN -d 172.25.28.100 -j DROP[root@server2 ~]# arptables -A OUT -s 172.25.28.100 -j mangle --mangle-ip-s 172.25.28.2[root@server2 ~]# /etc/init.d/arptables_jf saveSaving current rules to /etc/sysconfig/arptables:          [  OK  ]

五:测试

配置好以上后,我们打开一个浏览器进行访问:
这里写图片描述

这里写图片描述

通过访问发现。当我访问vip时,lvs会根据算法负载均衡使得访问web均衡。。。
这里写图片描述