• LVS+Keepalived实现高可用负载均衡


    测试环境

    系统 IP 软件
    Centos8 192.168.248.80 lvs+keepalived
    Centos8 192.168.248.81 lvs+keepalived
    Centos8 192.168.248.100 Web server
    Centos8 192.168.248.101 Web server

    vip暂定192.168.248.254

    配置keepalived

    master配置

    [root@master ~]# yum install ipvsadm keepalived -y
    
    [root@master ~]# cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    
    global_defs {
       router_id LVS_01 
    }
    
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 90   #虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样
        mcast_src_ip 192.168.248.80
        priority 100           # 优先级值设定:MASTER 要比 BACKUP 的值大
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 123456
        }
        virtual_ipaddress {
            192.168.248.254
        }
    }
    
    virtual_server 192.168.248.254 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        persistence_timeout 50  #测试可以注释掉
        protocol TCP
    
        real_server 192.168.248.100 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        real_server 192.168.248.101 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    [root@master ~]# systemctl start keepalived
    

    backup配置

    [root@backup ~]# yum install ipvsadm keepalived -y
    
    [root@backup ~]# cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    
    global_defs {
       router_id LVS_02
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 90
        mcast_src_ip 192.168.248.81
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 123456
        }
        virtual_ipaddress {
            192.168.248.254
        }
    }
    
    virtual_server 192.168.248.254 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        persistence_timeout 50    #测试可以注释掉
        protocol TCP
    
        real_server 192.168.248.100 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        real_server 192.168.248.101 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    
    [root@backup ~]# systemctl start keepalived
    

    配置 RS

    在 RS 的lo网卡上配置  VIP

    配置脚本,两台RS都需要

    [root@RS1 ~]# cat /scripts/lvs_rs.sh 
    #!/bin/bash
    VIP=192.168.248.254
    case "$1" in
    start)
           ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
           /sbin/route add -host $VIP dev lo:0
           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
           sysctl -p >/dev/null 2>&1
           echo "RealServer Start OK"
           ;;
    stop)
           ifconfig lo:0 down
           route del $VIP >/dev/null 2>&1
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
           echo "RealServer Stoped"
           ;;
    *)
           echo "Usage: $0 {start|stop}"
           exit 1
    esac
    exit 0
    
    #安装nginx测试
    [root@RS1 ~]# yum -y install nginx
    [root@RS1 ~]#  echo '192.168.248.100' /usr/share/nginx/html/index.html
    [root@RS1 ~]# systemctl  start nginx
    

     检查测试

    主节点查看ip,可以看到 VIP 目前已经正确配置在网卡上。

    输入ipvsadm -Ln 或watch ipvsadm -Ln --stats可以看到负责均衡状态

     [root@master ~]# 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.248.254:80 rr persistent 50
      -> 192.168.248.100:80           Route   1      0          0         
      -> 192.168.248.101:80           Route   1      0          0  
    

    测试访问VIP

    手动停止一个 RS,再次访问 VIP,LVS 会自动剔除无法访问的服务,重启后,服务会被自动添加

    [root@RS1 ~]# systemctl  stop nginx
    

    手动停止master上的 keepalived,模拟 master节点挂了,VIP 会自动转移到backup上。

     在backup上查看

    重启master后,由于master的优先级高于backup,此时vip会转移到master,从而实现 HA。

  • 相关阅读:
    git介绍
    Oracle '26-2月 -19 03.34.47.000000 下午' 字符串日期解析
    ProceedingJoinPoint 某些方法记录一下
    SpringBoot 2.X以上集成redis
    SpringBoot文件上传配置
    editmd输出到前端显示
    Thymeleaf Shiro标签
    Springboot 添加druid监控
    基于SpringBoot的博客项目
    SpringBoot默认首页配置
  • 原文地址:https://www.cnblogs.com/diqiyao/p/14828797.html
Copyright © 2020-2023  润新知