Keepalived+LVS

Keepalived

keepalived是Linux的一个高可用解决方案。主要是通过VRRP协议来实现高可用功能,同时还可以对集群中服务器运行状态的监控及故障隔离。部署简单
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议
在这里插入图片描述
keepalived分为user space用户空间和kernel space内核空间
kernel space用户空间组件:
IPVS主要实现基于IP的负载均衡集群
NETLINK主要负责接收用户空间中net reflector发送过来的网络请求,对网络请求进行处理
user space用户空间组件:
Scheduler IO Multiplexer这是一个IO复用分发调度器,它负责安装keepalived所有内部的任务请求
Memory Managment内存管理机制,这个框架提供了访问内存的一些通用方法
Control pane控制面板,可以实现对配置文件进行编译和解析; keepalived的配置文件比较特殊,只有在用到某个功能模块时才解析对应的配置
Core compoents
WatchDog是计算机可靠性领域中一个极为简单而且有效的检测工具。它的工作原理是针对被监控目标设置一个计数器和一个阈值,WatchDog会自动增加该计数器,然后等待被监控对象周期性的重置该计数期,一旦被监控对象发生错误,就无法重置该计数器,WatchDog就会检测到, 然后采取相应的动作keepalived就是使用WatchDog机制来监测checkers和VRRP进程的
Checkers通过该组件可实现对服务器的运行状态进行监测及故障隔离
VRRP Stack通过该组件实现失败切换(Fail Over)功能
IPVS wrapper可以将设置好的IPVS规则发送到内核空间并转交给IPVS模块,最终实现IPVS的负载均衡的功能
Netlink用于实现高可用集群中Failover时虚拟IP的转换及切换。

keepalived安装

该软件依赖 net-snmp-agent-libs net-snmp-libs

#yum install -y keepalived

查看配置文件

#rpm -qc keepalived

/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived

配置

主节点 (备用节点:state BACKUP)

# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id director01
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 88
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass redhat
    }
    virtual_ipaddress {
        192.168.122.100
    }
}

virtual_server 192.168.122.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    real_server 192.168.122.10 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.122.20 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

管理

启动
# systemctl start keepalived
# 停止 重启   
systemctl stop keepalived
systemctl restart keepalived
# 开启启动
#chkconfig keepalived on
# 查看
#chkconfig --list keepalived
检测通信(抓包)注意防火墙
# tcpdump -i ens32 -nn vrrp
查看log
tail -f /var/log/messages

主备切换

通常情况下,利用keepalived做热备,其中一台设置为master,一台设置为backup。当master出现异常后,backup自动切换为master。当backup成为master后,master恢复正常后会再次抢占成为master,导致不必要的主备切换。因此可以将两台keepalived初始状态均配置为backup,设置不同的优先级,优先级高的设置nopreempt解决异常恢复后再次抢占的问题。
在这里插入图片描述
A,B同时启动后,由于A的优先级较高,因此通过选举会成为master。当A上的业务进程出现问题时,优先级会降低到60。此时B收到优先级比自己低的vrrp广播包时,将切换为master状态。那么当B上的业务出现问题时,优先级降低到50,尽管A的优先级比B的要高,但是由于设置了nopreempt,A不会再抢占成为master状态。
所以,可以在检测脚本中增加杀掉keepalived进程(或者停用keepalived服务)的方式,做到业务进程出现问题时完成主备切换。

高可用

keepalived宕机时vip会飘走,为了实现高可用,应该在该节点上的服务宕机时服务也飘走
方法一(关闭):

1.)准备一个检测服务脚本。
#vim /etc/keepalived/check_hax.sh
#!/bin/bash
# check haproxy nginx
curl 192.168.122.10:80 &>/dev/null
if [ $? -ne 0 ]; then
echo "haproxy down stop keepalived" >> /etc/keepalived/kpdown.txt  
systemctl stop keepalived
# for test
#else
 #echo "haproxy down stop keepalived" >> /etc/keepalived/kpup.txt  
fi
#chmod a+x /etc/keepalived/check_hax.sh
2.)让keepalived执行脚本
# vim /etc/keepalived/keepalived.conf
vrrp_srcipt check_hax {
 script "/etc/keepalived/check_hax.sh"
 interval 1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 30
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200
    }
    track_script {
      check_hax
    }
}

方法二(降低优先级):

vrrp_script check_httpd {	
   script "killall -0 keepalive ">>>定义检测服务的运行状态,服务运行返回0,否则返回1
   interval 2		
   weight -50		>>>定义服务状态检测失败后,该服务器优先级-50
}
vrrp_instance HA_1{ 
    state MASTER	
    interface eth0	
    virtual_router_id 10	
    priority 100		
    advert_int 1		
    authentication {							
        auth_type PASS
        auth_pass redhat	
    }
    virtual_ipaddress {
	 192.168.122.100			
    }
    track_script {
	check_httpd		>>>调用上面定义的check_httpd脚本
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值