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的高可用性功能。

  • 相关阅读:
    tensorflow 学习笔记 多层感知机
    tensorflow 学习笔记(转)
    python学习笔记 map&&reduce
    java中的接口和php的接口的区别
    php中的内存划分
    workerman stop失败
    Java中的内存划分
    php和java语法区别
    Docker:Swarm + Stack 一站式部署容器集群
    docker 配置私有仓库
  • 原文地址:https://www.cnblogs.com/liuyisai/p/5982225.html
Copyright © 2011-2022 走看看