zoukankan      html  css  js  c++  java
  • LVS_DR模式构建配置

     

    一、环境准备

    lvs负载均衡器    系统:centos6.8 ip:192.168.2.203  vip:192.168.2.17

    web服务器RS1   系统:centos6.8 ip:192.168.2.204

    web服务器RS2   系统:centos6.8 ip:192.168.2.204    

    二、安装LVS软件

    可以编译安装也可以yum安装,编译安装需要创建一个超链接:ln -s /usr/src/kernels/2.6.18-238.el5-i686 /usr/src/linux

    这里选择yum方式安装

    复制代码
    [root@bogon ~]# yum -y install ipvsadm
    已加载插件:fastestmirror
    设置安装进程
    Determining fastest mirrors
    ... ...
    已安装:
      ipvsadm.x86_64 0:1.26-4.el6                                                                                          
    
    作为依赖被安装:
      libnl.x86_64 0:1.1.4-2.el6                                                                                           
    
    完毕!
    复制代码

    查看ipvs模块是否加载

    [root@bogon ~]# lsmod | grep ip_vs
    [root@bogon ~]# 

    因为此时系统还没有把ipvs模块加载进系统,需要我们执行ipvsadm命令才会加载进去或者modprobe ip_vs。

    复制代码
    [root@bogon ~]# ipvsadm
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    [root@bogon ~]# lsmod | grep ip_vs
    ip_vs                 126897  0 
    libcrc32c               1246  1 ip_vs
    ipv6                  336282  270 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
    [root@bogon ~]# 
    复制代码

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

    正常工作中是不会手动配置的,也不会使用脚本配置的。最终我们是通过配置文件生效的,结合keepalived来进行部署的。

    [root@bogon ~]# ifconfig eth1:1 192.168.2.17 netmask 255.255.255.0
    [root@bogon ~]# route add -host 192.168.2.17 dev eth1

    ipvsadm命令参数:

    复制代码
    -A    
    -A --add-service 添加一个带选项的虚拟服务。
    Add  a virtual  service. A serviceaddress is uniquely defined by a triplet: IP address, portnumber,  and  protocol. Alternatively a virtualservice may be defined by a firewall-mark.
    -t    指定虚拟服务器的IP地址和端口
    -s    -s,--scheduler scheduling-method 调度算法
    -p    会话保持按秒计算
    -a    
    -a在对应的VIP下添加RS节点
    -g    指定此LVS的工作模式为-g   -g为DR模式
    -l    
    指定LVS的工作模式为-l  -l为tunnel模式
    -m    指定LVS的工作模式为NAT模式
    -w    指定RS节点的权重
    -D    
    删除虚拟服务
    格式:ipvsadm-D -t|u|f service-address
    Delete a virtual service, alongwith any associated real servers.
    -C
    -C, --clear  Clear the virtual server table清空lvs原有的配置。
    -set    设置tcp  tcpfn udp  的连接超时时间(一般来说高并发的时候小一点点。
    复制代码

    ipvsadm添加lvs服务

    复制代码
    [root@bogon ~]# ipvsadm -C
    [root@bogon ~]# ipvsadm -A -t 192.168.2.17:80 -s rr  #添加虚拟服务指定VIP
    [root@bogon ~]# 
    [root@bogon ~]# ipvsadm -a -t 192.168.2.17:80 -r 192.168.2.204:80 -g  #针对虚拟服务添加RS节点
    [root@bogon ~]# ipvsadm -a -t 192.168.2.17:80 -r 192.168.2.205:80 -g
    [root@bogon ~]# ipvsadm -L -n  #查看VIP和RS是否已经配置成功
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.2.17:80 rr
      -> 192.168.2.204:80             Route   1      0          0         
      -> 192.168.2.205:80             Route   1      0          0         
    复制代码

    LB上删除虚拟服务

    ipvsadm -D -t 192.168.2.17:80  

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

    添加lo端口的VIP&路由

    [root@bogon ~]# ifconfig lo:0 192.168.2.17 netmask 255.255.255.255  (由于RS的VIP不是用来通讯,并且这里一定要设置24位掩码)
    [root@bogon ~]# route add -host 192.168.2.17 dev lo

    ARP抑制

    [root@bogon ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
    [root@bogon ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
    [root@bogon ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_announce 
    [root@bogon ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_ignore 

    五、测试LVS是否生效

    复制代码
    [root@www ~]# curl http://192.168.2.204/test.txt
    it is web1
    [root@www ~]# curl http://192.168.2.205/test.txt
    it is web2
    [root@www ~]# curl http://192.168.2.17/test.txt
    it is web2
    [root@www ~]# curl http://192.168.2.17/test.txt
    it is web1
    [root@www ~]# curl http://192.168.2.17/test.txt
    it is web2
    [root@www ~]# curl http://192.168.2.17/test.txt
    it is web1
    [root@www ~]# 
    复制代码

    至此我们的LVS DR模式负载均衡已经配置完成了。至于不同的调度算法啊-s  不同的工作模式-g(DR) -l(TUNNEL) -m(NAT)服务器端基本上没有什么差别。只是在客户端上有一定的差别。

    NAT模式:

    客户端同样需要配置VIP,进行ARP抑制,并且要服务器端开启内核转发功能,配置LB的DIP(内网IP地址)作为默认网关。

    开启内核转发功能:vi /etc/sysctl  net.ipv4.ip_forword = 1

    route add default gw  192.168.2.203

    Tunnel模式:

    客户端需要先开启Tunnel协议支持。

    /sbin/modprobe ipip

    /sbin/route add –host 192.168.2.17 devtun1

    echo”1”>/proc/sys/net/ipv4/conf/tun1/arp-ignore

    echo”2”>/proc/sys/net/ipv4/conf/tun1/arp_announce

    echo”0” >/proc/sys/net/ipv4/conf/tun1/rp_filter

    echo”1” >/proc/sys/net/ipv4/conf/tun1/forwarding

    echo”1” >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo”2” >/proc/sys/net/ipv4/conf/all/ arp_announce

    六、部署成功后的另一些问题

    1)当我们的RS节点出现问题,LB如何知道。如果不知道是会把会话连接接续转发到RS上面。

    2)如果LB出现故障,那么整个网络就出现故障。

    针对上面的1问题,我们就需要一种RS节点健康检查机制。定时的去检测RS是否正常,如果出现不正常那么就把这个RS从VIP服务里面删除掉。如果恢复正常了,就再把RS添加进来。针对2问题,我们可以另外再架设一台LB服务器,作为备LB服务器。那么当主LB出现故障,备LB服务器就会启动接管主LB服务器的工作,接管它的资源(IP地址,在网络中的角色身份等)

       而上面提到的这些我们就需要结合keepalived来完成。所以后续我们开始讲keepalived+lvs结合适用。完成RS节点健康检查和LVS的高可用性功能。

    配置lvs+keepalived如下单keepalived:

    -------------------------------------------------------

    环境配置:    三台centos 6.5
    调度器:        DIP:192.168.1.11   VIP:192.168.1.110
    web服务器: RIP:192.168.1.9     RIP:192.168.1.10

    一,前期服务器环境搭建
    (1) 配置lamp环境,这里不做演示。
    (2)关闭selinux和所有web服务器上的iptables
    (3)设置时间同步,保证服务器时间一致(后期nfs或数据同步用到,包括session同步需要)
    二,配置LVS
    1,调度器安装ipvsadm和keepalived
    首先安装依赖包:
    yum -y install gcc make openssl-devel openssl net-snmp net-snmp-devel popt popt-devel

    安装ipvs和keepalived:
    yum install ipvsadm  keepalived  -y 并设置下:
    chkconfig ipvsadm on
    chkconfig keepalived on

    修改keepalived.conf配置文件:

    1. global_defs {
    2. router_id LVSTEST #负载均衡器标识,同一网段内,可以相同
    3. }
    4.  
    5. vrrp_instance LVSTEST {
    6. state MASTER #主调度器
    7. interface eth0 #实例绑定的网卡
    8. #lvs_sync_daemon_inteface eth0 #主备间的监控接口
    9. virtual_router_id 61 #vrrp唯一ID,主备id一致
    10. priority 100 #优先级
    11. advert_int 10 #主备间同步检查/秒
    12. authentication {
    13. auth_type PASS
    14. auth_pass 1111
    15. }
    16. virtual_ipaddress {
    17. 192.168.1.110 #vip,可以多个ip,每行一个
    18. }
    19. }
    20. virtual_server 192.168.1.110 80 { #定义一个虚拟服务器
    21. delay_loop 6 #健康检测间隔/秒
    22. lb_algo wlc #调度算法
    23. lb_kind DR #模式
    24. persistence_timeout 30 #回话保持时间
    25. protocol TCP #转发协议
    26. #多个real_server重复本节点即可
    27. real_server 192.168.1.9 80 { #定义一台真实服务器
    28. weight 3 #权重
    29. TCP_CHECK { #通过tcpcheck判断真实服务器状态
    30. connect_timeout 10 #连接超时
    31. nb_get_retry 3 #重试次数
    32. delay_before_retry 3 #重试间隔
    33. connect_port 80 #检测端口
    34. }
    35. }
    36. real_server 192.168.1.10 80 {
    37. weight 3
    38. TCP_CHECK {
    39. connect_timeout 10
    40. nb_get_retry 3
    41. delay_before_retry 3
    42. connect_port 80
    43. }
    44. }
    45. }

    配置完以后启动keepalived:
    service keepalived start

    启动以后ipvsadm  -L 可以查看vip以及rip绑定情况。如果和keepalived配置一致,那么设置正常。如果不一致或无IP信息加载,则需检查。

    2,RIP服务器配置VIP和arp禁止响应
    vip就是上边的vip添加网卡的命令,写入rc.loca启动中。

    1. /sbin/ifconfig lo:0 192.168.1.110 broadcast 192.168.1.110 netmask 255.255.255.255 up
    2. /sbin/route add -host 192.168.1.110 dev lo:0

    arp禁止响应:
    vi /etc/rc.local
    /usr/local/sbin/realserver.sh stop
    /usr/local/sbin/realserver.sh start
    保存。
    创建禁止arp响应脚本

    1. touch /usr/local/sbin/realserver.sh
    2. chmod 755 /usr/local/sbin/realserver.sh
    3. #!/bin/bash
    4. WEB_VIP=192.168.1.110
    5.  
    6. . /etc/rc.d/init.d/functions
    7.  
    8. case "$1" in
    9. start)
    10.       ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
    11.      #/sbin/route add -host $WEB_VIP dev lo:0这行有问题,需要注释
    12.       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    13.       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    14.       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    15.       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    16.       sysctl -p >/dev/null 2>&1
    17.       echo "RealServer Start OK"
    18.  
    19.       ;;
    20. stop)
    21.       ifconfig lo:0 down
    22.       #route del $WEB_VIP >/dev/null 2>&1 这行有问题需要注释
    23.       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    24.       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    25.       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    26.       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    27.       echo "RealServer Stoped"
    28.       ;;
    29. *)
    30.       echo "Usage: $0 {start|stop}"
    31.       exit 1
    32. esac
    33. exit 0

    好了,域名host定向到vip,安装一个dz论坛测试看下效果。已经OK。

    单脚本配置如下

    ---------------------------------------------

    DR模式最大的特点是LBserver和后端的rs都要配置同一个VIP(rs端vip要配置在回环网卡上,即只让LBserver上的vip对外)。通过LBserver将client端发过来数据包添加MAC头,通过MAC直接将数据包传到后端rs上(所以LBserer的ip与rs的ip要在同一物理网段内)。此时后端回环网卡上也配置了同一个vip,正好对应数据包上的目的ip。rs收到数据包后不用通过LBserver返回数据包,而是直接将数据包返还给client(这也是为什么dr模式rs上也需要配置公网ip)

    LBserer配置脚本

    #!/bin/bash
    echo  1 > /proc/sys/net/ipv4/ip_forward  #打开路由转发(同一网段其实不需要)
    ipv=/sbin/ipvsadm   
    vip=192.168.100.111 
    rs1=192.168.100.12
    rs2=192.168.100.13
    ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up  
    #注意子网掩码是255.255.255.255,代表vip所在网段没有别的主机了
    route add -host $vip dev eth0:0    #增加一条路由
    $ipv -A -t $vip:80 -s rr
    $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 #-g代表dr模式
    $ipv -a -t $vip:80 -r $rs2:80 -g -w 1

    RS端配置脚本

    #!/bin/bash
    
    vip=192.168.100.111
    
    ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
    
    route add -host $vip lo:0
    
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  • 相关阅读:
    有关Maven
    白盒测试(White-box Testing)
    Peer Review(同行评审)
    闰年测试(非法输入的判断)
    等价类划分的应用2
    等价类划分(Equivalence Class Partitioning)
    软件测试随堂笔记-1
    软件测试之注意事项
    软件测试的发展方向
    软件测试之白盒测试
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/10107818.html
Copyright © 2011-2022 走看看