18.11 LVS DR模式搭建

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

dir 上的脚本文件

第十八章 Linux集群架构(下)

dir 网卡配置

第十八章 Linux集群架构(下)

rs1上的脚本配置文件

第十八章 Linux集群架构(下)

rs1上的网卡配置

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

rs2 上的脚本文件

第十八章 Linux集群架构(下)

rs2的网卡配置

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

测试

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

18.12 keepalived lvs

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

dir 的配置文件

vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    #备用服务器上为 BACKUP
    state MASTER
    #绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下
    interface ens33
    virtual_router_id 51
    #备用服务器上为90
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux
    }
    virtual_ipaddress {
        192.168.93.200
    }
}
virtual_server 192.168.93.200 80 {
    #(每隔10秒查询realserver状态)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的连接60秒内被分配到同一台realserver)
    persistence_timeout 60
    #(用TCP协议检查realserver状态)
    protocol TCP

    real_server 192.168.93.128 80 {
        #(权重)
        weight 100
        TCP_CHECK {
        #(10秒无响应超时)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.93.130 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

 systemctl restart keepalived.service


dir 网卡配置

需要ifdown ens33 && ifup ens33

第十八章 Linux集群架构(下)

rs1上执行DR 模式的脚本

rs2上执行DR 模式的脚本

测试

第十八章 Linux集群架构(下)

第十八章 Linux集群架构(下)

扩展
heartbeat和keepalived比较http://blog.csdn.net/yunhua_lee/article/details/9788433 
DRBD工作原理和配置 http://502245466.blog.51cto.com/7559397/1298945
mysql+keepalived http://lizhenliang.blog.51cto.com/7876557/1362313
lvs 三种模式详解 http://www.it165.net/admin/html/201401/2248.html 
lvs几种算法 http://www.aminglinux.com/bbs/thread-7407-1-1.html
关于arp_ignore和 arp_announce http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

lvs原理相关的 http://blog.csdn.net/pi9nc/article/details/23380589
haproxy+keepalived http://blog.csdn.net/xrt95050/article/details/40926255
nginx、lvs、haproxy比较 http://www.csdn.net/article/2014-07-24/2820837
keepalived中自定义脚本 vrrp_script http://my.oschina.net/hncscwc/blog/158746
lvs dr模式只使用一个公网ip的实现方法 http://storysky.blog.51cto.com/628458/338726

课堂串讲

18.11 LVS DR模式搭建
18.12 keepalived + LVS

扩展:
haproxy+keepalived http://blog.csdn.net/xrt95050/article/details/40926255
nginx、lvs、haproxy比较 http://www.csdn.net/article/2014-07-24/2820837
keepalived中自定义脚本 vrrp_script http://my.oschina.net/hncscwc/blog/158746
lvs dr模式只使用一个公网ip的实现方法 http://storysky.blog.51cto.com/628458/338726

LVS DR模式搭建概述

  • DR模式搭建 – 准备工作
  • 三台机器
  • 分发器,也叫调度器(简写为dir)180.134
  • rs1  180.135
  • rs2  180.138
  • vip  180.200
  • DR模式搭建  dir上编写脚本 vim /usr/local/sbin/lvs_dr.sh //内容如下
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.180.200
rs1=192.168.180.135
rs2=192.168.180.138
#注意这里的网卡名字
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
  • 两台rs上也编写脚本 vim /usr/local/sbin/lvs_rs.sh//内容如下
#/bin/bash
vip=192.168.180.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  • 分别在dir上和两个rs上执行这些脚本
  • 测试

LVS DR模式搭建

  • 在生产环境用中的比较多的是DR模式,NAT模式有瓶颈,节省公网IP,对小公司来说公网IP也是花钱的,如果是配置的多台机器,每台机器都去配置一个公网IP就是很浪费资源的情况,而且当下公网IP越来越少;

  • 另一种方案,搭建内部的lvs,全部都用内网,包括VIP也用内网,用一个公网IP做一个映射;公网的80端口映射到内网VIP的80端口,这样可以节省IP

准备工作

  • DR模式,准备三台机器,只需要有有一个网卡,一个IP
  • 分发器,也叫调度器(简写为dir)180.134
  • rs1    180.135
  • rs2    180.138
  • vip    180.200
  • vip绑定在所有的机器上,不仅分发器需要绑定,还有rs需要绑定
  1. 保证机器都可以通信
  2. 在dir分发器(即A机器)上编写脚本,在/usr/local/sbin/lvs_dr.sh编辑
[[email protected] ~]# vim /usr/local/sbin/lvs_dr.sh 
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
#打开端口转发
ipv=/usr/sbin/ipvsadm
#这是一个变量
vip=192.168.180.200
rs1=192.168.180.135
rs2=192.168.180.138
#注意这里的网卡名字
ifdown ens33
ifup ens33
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
#//给一个网卡设置一个虚拟网卡
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
#这里-g 指定DR模式
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
  • 启动分发器上的脚本
[[email protected] ~]# sh /usr/local/sbin/lvs_dr.sh 
成功断开设备 'ens33'。
连接已成功**(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
  • 这里执行脚本出来的信息是没有错的,因为有ifdown ens33和ifup ens33重启网卡
  • 在两台rs上写脚本(即B机器和C机器),在 /usr/local/sbin/lvs_rs.sh 编辑
B机器
[[email protected] ~]# vim /usr/local/sbin/lvs_rs.sh

#/bin/bash
vip=192.168.180.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

C机器同上
  • 脚本定义/lo/arp_ignore和/all/arp_ignore的理解:

    • arp_ignore:定义对目标地址为本地IP的ARP询问不同的应答模式0
      • 0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
      • 1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
      • 2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
      • 3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
      • 4-7 - 保留未使用
      • 8 -不回应所有(本地地址)的arp查询
  • 脚本定义/lo/arp_announce和/all/arp_announce的理解

    • arp_announce:对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
      • 0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址
      • 1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
      • 2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
  • 执行B机器和C机器的脚本
sh /usr/local/sbin/lvs_rs.sh
  • 在B机器和C机器执行命令 route -n 能看到有一个vip的路由 192.168.180.200
B机器
[[email protected] ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.180.2   0.0.0.0         UG    100    0        0 ens33
192.168.180.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.180.200 0.0.0.0         255.255.255.255 UH    0      0        0 lo

C机器同上
  • 用ip add命令查看,会看到 lo网卡上有一个vip,设定了一个IP 180.200
B机器
[roo[email protected] ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.180.200/32 brd 192.168.180.200 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:36:a2:be brd ff:ff:ff:ff:ff:ff
    inet 192.168.180.135/24 brd 192.168.180.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.180.136/24 brd 192.168.180.255 scope global secondary ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::c44:f02d:4192:8d42/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:36:a2:c8 brd ff:ff:ff:ff:ff:ff

C机器同上
  • 在dir分发器上(即A机器),用ip add命令查看,会看到ens33绑定了192.168.180.200
A机器
[[email protected] ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.180.200/32 brd 192.168.180.200 scope global ens33:2
       valid_lft forever preferred_lft forever
    inet6 fe80::8004:45b5:96c5:3ca5/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:29:2b:6a brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.144/24 brd 192.168.142.255 scope global ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::af5:df02:5a53:e408/64 scope link 
       valid_lft forever preferred_lft forever

测试

  • 用curl命令访问这个vip(curl测试vip在rs上不太好用的,因为在本机绑定了这个vip,若是访问vip,等于访问自己),但是直接在A机器上去访问vip会发现失败,只能再开一个虚拟机来测试,不过用 ipvsadm -ln 命令,会看到ActiveConn都会有变化,表示实验成功
A机器
[[email protected] ~]# 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.180.200:80 wrr
  -> 192.168.180.135:80           Route   1      1          1         
  -> 192.168.180.138:80           Route   1      2          1   
  • 因为浏览器有缓存,所以没有办法及时的查看到lvs负载均衡的效果;但是通过刷新浏览器VIP地址,然后在dir机器是上查看ipvsadm的情况,可以发现,每一次刷新,ActiveConn都会有变化,刷新次数到一定数量是,InActConn也会产生变回,可见我们的实验是成功的。
  • 这时问题就来了,如果因为有缓存,就没有办法及时的查看到浏览器的变化,我们如何确定负载均衡是否成功?其实这些都是不用担心的,因为当访问量达到一定数量时,负载均衡的效果就会慢慢的显示出来,如同我们实验一样,正是因为访问量小,我们看到的页面都是一样;

总结

  • lvs 不管是nat 还是dr 模式 配置过程都挺简单的,需要注意的是修改内核参数,打开端口转发;NAT模式比较重要的是就是rs的网关为dir的IP

Keepalived+LVS DR 概述

  • 完整架构需要两台服务器(角色为dir)分别安装keepalived软件,目的是实现高可用,但keepalived本身也有负载均衡的功能,所以本次实验可以只安装一台keepalived
  • keepalived内置了ipvsadm的功能,所以不需要再安装ipvsadm包,也不用编写和执行那个lvs_dir的脚本
  • 三台机器分别为:
  • dir(安装keepalived)180.134
  • rs1 180.135
  • rs2 180.138
  • vip 180.200
  • 编辑keepalived配置文件 vim /etc/keepalived/keepalived.conf//内容地址
  • 需要更改里面的ip信息
  • 执行ipvsadm -C 把之前的ipvsadm规则清空掉
  • systemctl restart network 可以把之前的vip清空掉
  • 两台rs上,依然要执行/usr/local/sbin/lvs_rs.sh脚本
  • keepalived有一个比较好的功能,可以在一台rs宕机时,不再把请求转发过去
  • 测试

Keepalived+LVS DR

  • 完整架构需要两台服务器(角色为dir)分别安装keepalived软件,目的是实现高可用,但keepalived本身也有负载均衡的功能,所以本次实验可以只安装一台keepalived
  • 为什么需要把keepalived 加到lvs 中的目的是什么?
    • 原因一:lvs,它有个关键角色,就是dir分发器,如果分发器宕掉,那所有的访问就会被终止,因为所有的入口全都在dir分发器上,所以需要把分发器做一个高可用,用keepalived实现高可用,并且keepalived还有负载均衡的作用。
    • 原因二:在使用lvs的时候,如果没有额外的操作,这时将一个rs机器关机(宕机)时,lvs照样会分发数据到这台宕机机器,这是就会出现访问无效的情况,说明lvs并不聪明;这时使用keepalived,就可以保证集群中其中一台rs宕机了,web还能正常提供,不会出现用户访问时无效链接的结果;一般这种架构,肯定是2台keepalived;
  • 因为keepalived内置了ipvsadm的功能,所以不再需要安装ipvsadm的包,也不用再编写和执行.sh脚本

准备工作

准备三台机器,分别为

  • dir(安装keepalived)180.134
  • rs1 180.135
  • rs2 180.138
  • vip 180.200

在dir分发器(A机器)上,清空ipvsadm规则,并查看ipvsadm规则,会发现已经清空

[[email protected] ~]# ipvsadm -C
[[email protected] ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  • 在分发器(即A机器)上编辑配置文件,在/etc/keepalived/keepalived.conf 配置,配置文件内容
  • 因为之前做实验里面编辑过配置文件,这时直接删除,然后粘贴新的配置文件
    • 修改配置文件中的网卡、vip ,还有rs机器上的IP
[[email protected] ~]# >/etc/keepalived/keepalived.conf 
[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

vrrp_instance VI_1 {
    #备用服务器上为 BACKUP
    state MASTER
    #绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下
    interface ens33
    virtual_router_id 51
    #备用服务器上为90
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux
    }
    virtual_ipaddress {
        192.168.180.200        //vip 地址
    }
}
virtual_server 192.168.180.200 80 {        //vip 地址
    #(每隔10秒查询realserver状态)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的连接60秒内被分配到同一台realserver)
    persistence_timeout 60
    #(用TCP协议检查realserver状态)
    protocol TCP
    real_server 192.168.180.135 80 {        //rs1机器
        #(权重)
        weight 100
        TCP_CHECK {
        #(10秒无响应超时)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.180.138 80 {        //rs2机器
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}
  • 启动nginx服务,查看nginx进程,查看keepalived服务
[[email protected] ~]# systemctl start nginx
[[email protected] ~]# ps aux |grep nginx
root      2290  0.0  0.0  24792   756 ?        Ss   22:31   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    2291  0.0  0.0  25188  1212 ?        S    22:31   0:00 nginx: worker process
root      2319  0.0  0.0 112676   984 pts/0    R+   22:32   0:00 grep --color=auto nginx
[[email protected] ~]# ps aux |grep keepalived
root      2303  0.0  0.0 118608  1384 ?        Ss   22:31   0:00 /usr/sbin/keepalived -D
root      2304  0.0  0.1 127472  3344 ?        S    22:31   0:00 /usr/sbin/keepalived -D
root      2305  0.0  0.1 127340  2612 ?        S    22:31   0:00 /usr/sbin/keepalived -D
root      2321  0.0  0.0 112676   984 pts/0    R+   22:32   0:00 grep --color=auto keepalived
  • 查看IP,会看到虚拟IP依然存在
root      2321  0.0  0.0 112676   984 pts/0    R+   22:32   0:00 grep --color=auto keepalived
[[email protected] ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.180.200/32 brd 192.168.180.200 scope global ens33:2
       valid_lft forever preferred_lft forever
    inet6 fe80::8004:45b5:96c5:3ca5/64 scope link 
       valid_lft forever preferred_lft forever
  • 查看ipvsadm规则
[[email protected] ~]# 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.180.200:80 wlc persistent 60
  -> 192.168.180.135:80           Route   100    0          0         
  -> 192.168.180.138:80           Route   100    0          0      
  • 这时关闭keepalived服务,再来查看ip,会到虚拟IP停掉了
[[email protected] ~]# systemctl stop keepalived
[[email protected] ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::8004:45b5:96c5:3ca5/64 scope link 
       valid_lft forever preferred_lft forever
  • 再来查看规则,会发现没有启动规则
[[email protected] ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  • 这时启动keepalived,再来查看规则
[[email protected] ~]# systemctl start keepalived
[[email protected] ~]# ps aux |grep keep
root      2341  0.0  0.0 118608  1388 ?        Ss   22:35   0:00 /usr/sbin/keepalived -D
root      2342  0.0  0.1 127472  3344 ?        S    22:35   0:00 /usr/sbin/keepalived -D
root      2343  0.0  0.1 127340  2616 ?        S    22:35   0:00 /usr/sbin/keepalived -D
root      2357  0.0  0.0 112676   984 pts/0    R+   22:35   0:00 grep --color=auto keep
[[email protected] ~]# 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.180.200:80 wlc persistent 60
  -> 192.168.180.135:80           Route   100    0          0         
  -> 192.168.180.138:80           Route   100    0          0  
  • 注意事项:两点
  • 1打开dir机器的端口转发
echo 1 > /proc/sys/net/ipv4/ip_forward   //打开端口转发
  • 2在rs机器上创建的/usr/local/sbin/lvs_rs.sh脚本,依然要执行它
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0

#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

总结

  • keepalived 有一个比较好的功能,可以在一台rs宕机的时候,及时把他踢出 ipvsadm 集群,将不再发送数据包给,也就很好的避免的访问无连接的情况发送

相关文章: