代理服务器-Keepalived&LVS

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

我们上一章介绍了Web服务器,其中以Nginx为主,本章我们来讲解几个代理软件:Squid,Haproxy,LVS,FRP(内网穿透)。

前面我们介绍了几种代理软件,虽然都能实现负载均衡,而且LVS本身还不具备健康检查的能力(也就是后端挂了他还会往里面转发请求)。但是他们自己并不是高可用的,也就是如果这个部署代理软件的机器宕机以后,服务也就不可以用。

我们在前面Kubernetes里面已经使用Keepalived来提供VIP的功能,这个对于有健康检查的软件比如HAPorxy和Nginx可以参考前面的文章来实现高可用的。也就是下面代码部分前半截。

本小节我们讲使用LVS+keepalived来实现负载均衡+高可用。在keepalive这个软件里面实际有多种模式,这里我们就以简单的主备模式来讲解,后面单独出一个小节来介绍这个模式。

2个服务器都已经安装ipvs,加载ip_vs内核模块,和开启转发功能。

master

vrrp_instance VI_1 {
    state MASTER            # 主节点设置为 MASTER
    interface eth0          # 绑定网卡(根据实际网卡名修改)
    virtual_router_id 51    # 虚拟路由 ID(同一集群需一致)
    priority 100            # 优先级(主节点高于备节点)
    advert_int 1            # VRRP 心跳间隔(秒)

    authentication {        # 认证配置
        auth_type PASS
        auth_pass 12345678  # 密码(主备需一致)
    }

    virtual_ipaddress {     # 定义 VIP
        192.168.31.134/24
    }
}

#如果只定义上面部分,则keepalived 只会配置这个vip到网卡上 
#下面的配置则是他可以操作ipvs命令,进行规则的增加和删除 

virtual_server 192.168.31.134 80 {  # 定义虚拟服务(VIP 和端口)
    delay_loop 6           # 健康检查间隔(秒)
    lb_algo rr             # 调度算法(轮询)
    lb_kind DR             # LVS 模式(DR)
    protocol TCP           # 协议类型

    # 定义 Real Server
    real_server 192.168.31.131 80 {
        weight 1           # 权重
        TCP_CHECK {         # 健康检查方式(TCP 端口检查)
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.31.132 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

slave​​​​​​​

global_defs {
    router_id LVS_BACKUP  # 标识备用节点(需与主节点不同)
}

# 定义 VRRP 实例(用于 VIP 故障切换)
vrrp_instance VI_1 {
    state BACKUP           # 角色为备节点
    interface eth0         # 绑定网卡(根据实际网卡名修改)
    virtual_router_id 51   # 虚拟路由 ID(必须与主节点一致)
    priority 50            # 优先级(低于主节点)
    advert_int 1           # 心跳间隔(秒)

    # 认证配置(必须与主节点一致)
    authentication {
        auth_type PASS
        auth_pass 12345678
    }

    # 定义虚拟 IP(VIP)
    virtual_ipaddress {
        192.168.31.134/24
    }
}

# 定义 LVS 虚拟服务(需与主节点完全一致)
virtual_server 192.168.31.134 80 {
    delay_loop 6          # 健康检查间隔(秒)
    lb_algo rr            # 调度算法(轮询)
    lb_kind DR            # LVS 模式(DR)
    protocol TCP          # 协议类型

    # 真实服务器 1 配置
    real_server 192.168.31.131 80 {
        weight 1          # 权重
        TCP_CHECK {       # 健康检查方式(TCP 端口检查)
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    # 真实服务器 2 配置
    real_server 192.168.31.132 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

这样配置以后,就不需要手工配置VIP,而是keepalived会根据权重自动配置VIP,当然会出现下面几种情况。

1.在都未启动keepalived情况下,谁先启动谁占用vip。

2.如果slave先启动,master后启动,master会抢占vip(包括宕机切换)。

3.如果master先启动,slave后启动,则master会一直持有vip,直到master故障。 

这样配置以后,他还会检查后端,如果发现后端异常,则会摘除异常后端。这样VIP本身是高可用的,后端异常也能及时屏蔽。从架构上保证了高可用。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值