lvs DR模式

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 - Source
baseurl=http://172.25.67.250/rhel6.5
gpgcheck=0

[HighAvailability]
name=Red Hat Enterprise Linux HighAvailability
baseurl=http://172.25.67.250/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]
name=Red Hat Enterprise Linux LoadBalancer
baseurl=http://172.25.67.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=Red Hat Enterprise Linux ResilientStorage
baseurl=http://172.25.67.250/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=Red Hat Enterprise Linux ScalableFileSystem
baseurl=http://172.25.67.250/rhel6.5
gpgcheck=0

安装ipvsadm

yum install -y ipvsadm

查看ipvs模块是否加载

[root@server1 ~]# lsmod |grep ip_vs  ##查看ipvs模块是否加载
因为此时系统还没有把ipvs模块加载进系统,需要我们执行ipvsadm命令才会加载进去或者modprobe ip_vs。
[root@server1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight 
[root@server1 ~]# lsmod |grep ip_vs
ip_vs_rr                1420  1 
ip_vs                 125220  3 ip_vs_rr
libcrc32c               1246  1 ip_vs
ipv6                  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 InActConn
TCP  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 a
1: 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 forever
2: 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 save
Saving current rules to /etc/sysconfig/arptables:          [  OK  ]

五:测试

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

这里写图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值