负载均衡 | VS/DR模式

1,curl -I www.taobao.com会发现HTTP/1.1 302 Found 这是一个从httphttps的重定向Location: https://www.taobao.com/https全站加密

[kiosk@foundation28 ~]$ curl -I www.taobao.com

HTTP/1.1 302 Found

Server: Tengine

Date: Mon, 30 Jul 2018 01:38:47 GMT

Content-Type: text/html

Content-Length: 258

Connection: keep-alive

Location: https://www.taobao.com/

Set-Cookie: thw=cn; Path=/; Domain=.taobao.com; Expires=Tue, 30-Jul-19 01:38:47 GMT;

Strict-Transport-Security: max-age=31536000

 

2,临时添加ip

ip addr add 172.25.28.x/24 dev eth0

临时删除ip

ip addr del 172.25.28.x/24 dev eth0

注意:临时添加的ip的重启网络,重启物理机都会消失

 

LVS-DR模式

1,关闭varnish服务器的varnish和httpd服务,以免起冲突

2,配置server1的yum源(从iso的挂载点获取)

[rhel-source]

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=http://172.25.28.250/rhel6.5

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]

name=HighAvailability

baseurl=http://172.25.28.250/rhel6.5/HighAvailability

gpgcheck=0

[LoadBalancer]

name=LoadBalancer

baseurl=http://172.25.28.250/rhel6.5/LoadBalancer

gpgcheck=0

[ResilientStorage]

name=ResilientStorage

baseurl=http://172.25.28.250/rhel6.5/ResilientStorage

gpgcheck=0

[ScalableFileSystem]

name=HighAvailability

baseurl=http://172.25.28.250/rhel6.5/ScalableFileSystem

gpgcheck=0

3,安装ipvsadm  负载均衡管理集群服务

运行在LVS下的提供负载均衡功能

(ipvsadm和iptables的使用方法类似)

Scheduler调度器有十种rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认是wlc

 

ipvsadm -Ln   查看策略,不解析

 

4,添加策略

ipvsadm -A -t 172.25.28.100:80   ##172.25.28.100是虚拟ip

ipvsadm -A -t 172.25.28.100:80 -s rr 论调方式

ipvsadm -a -t 172.25.28.100 -r 172.25.28.2:80 -g  # -g LVS-DR模式

ipvsadm -a -t 172.25.28.100 -r 172.25.28.3:80 -g

 

--add-service     -A        add virtual service with options

--tcp-service  -t service-address   service-address is host[:port]

--scheduler    -s scheduler         one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

--add-server      -a        add real server with options

--real-server  -r server-address    server-address is host (and port)

--gatewaying   -g                   gatewaying (direct routing) (default)

 

5,server1添加临时虚拟ip  ip addr add 172.25.28.100/24 dev eth0

6,server2添加临时虚拟ip  ip addr add 172.25.28.100/24 dev eth0

7,server3添加临时虚拟ip  ip addr add 172.25.28.100/24 dev eth0

 

8,server1测试

curl 172.25.28.100

server2和 server3开始轮调

 

 

arp -an | grep 100 查看MAC地址

arp -d 172.25.28.100 删除ip的物理地址缓存

ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址。实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的内容,例如ping ip 那么就会缓存这个ip的MAC物理地址

但是这里是有问题的,这里面有三个vip,同一个wlan会ip冲突,所以要进行一下操作隐藏server2,server3的vip,对外只暴露自己的真实ip

 

9,server2安装arptables_jf   (arptables 可以当作是linux下的ARP防火墙

arptables 是一个用户空间,用于管理内核中的ARP规则表,规则检查处理的是ARP数据帧。arptables 类似 iptable,但比iptables简单)

添加策略(arptables -nL查看策略)

 

arptables -A IN -d 172.25.28.100 -j DROP    ##不缓存ip的MAC地址

arptables -A OUT -s 172.25.28.100 -j mangle --mangle-ip-s 172.25.28.2 ##mangle是转换

保存策略(否则是一次性的)

 

/etc/init.d/arptables_jf save

 

  --append  -A chain          Append to chain

  --target     -d [!] address[/mask]

                            destination specification

  --jump -j target

                            target for rule (may load target extension)

  --source      -s [!] address[/mask]

                            source specification

启动 /etc/init.d/arptables_jf start

10,server3安装arptables_jf,策略同上,保存,启动服务

11,本机客户端访问测试

arp -d 172.25.28.100地址缓存,ping ip 缓存,arp -an | grep 100查看,在删除,重复命令,发现mac地址已经固定了,curl 172.25.28.100论调成功

 

 

注意:这种方式无法进行健康检查

停掉server2httpdserver1 ipvsadm -ln查看不会有任何变化,本机客户端测试论调出现一个正常,一个refused的现象,server1 ipvsadm -ln 查看还是公平论调,但实际上只有server3工作了

解决方法:
1,安装ldirectord

[root@server1 ~]# rpm -ql ldirectord

/etc/ha.d

/etc/ha.d/resource.d

/etc/ha.d/resource.d/ldirectord

/etc/init.d/ldirectord

/etc/logrotate.d/ldirectord

/usr/lib/ocf/resource.d/heartbeat/ldirectord

/usr/sbin/ldirectord

/usr/share/doc/ldirectord-3.9.5

/usr/share/doc/ldirectord-3.9.5/COPYING

/usr/share/doc/ldirectord-3.9.5/ldirectord.cf

/usr/share/man/man8/ldirectord.8.gz

拷贝模版

cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d

 

2,修改/etc/ha.d/ldirectord.cf

checktimeout=3 这个值就是ldirectord等待健康检查执行完毕的等待时间

checkinterval=1  这个值指定ldirectord在两个检查之间的间隔时间

virtual=172.25.28.100:80   #vip

        real=172.25.28.2:80 gate #rip

        real=172.25.28.3:80 gate #rip

        fallback=127.0.0.1:80 gate

        service=http #指定服务

        scheduler=rr #论调方式

        #persistent=600

        #netmask=255.255.255.255

        protocol=tcp

        checktype=negotiate

        checkport=80

        request="index.html"

        #receive="Test Page"  检测两个页面是否一样,由于是实验,我们设置的两个页面不一样,这里没必要打开

        #virtualhost=www.x.y.z

 

3,启动ldirectord

此时如果server2httpd服务停止,那么server1ipvsadm -ln查看就不会显示server2的,本机客户端curl 172.25.28.100也不会出现refused,如果两个都停掉了,那么server1ipvsadm -ln查看会出现127.0.0.1:80这是server1自己,此时确定sever1自己的端口是80,在发布目录下写入index.html,再次curl可以看到server1的页面,只要其中一个服务器正常就不会出现server1的页面

 

4,关闭ldirectord

/etc/init.d/ldirectord stop

chkconfig ldiredtord off

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值