Keepalived入门(笔记用)

1.什么是keepalived?
  • Keepalived是用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础结构提供负载均衡和高可用性的简单而强大的功能。依赖于提供第4层负载平衡的Linux虚拟服务器(LVS)内核模块。Keepalived实现了一组健康检查器,以根据其运行状态,自适应地维护和管理负载平衡的服务器池(LVS)。Keepalived就是VRRP协议的实现,该协议是虚拟冗余路由协议,VRRP是路由器故障转移的基础。
  • VRRP:Virtual Router Redundancy Protocol 虚拟路由器冗余协议
2.作用
  • 实现将用户需要访问的地址转移到可用LVS节点实现。

  • 监控并管理 LVS 集群系统中各个服务节点的状态

  • 对后端应用服务器健康检查的功能

3.keepalived.conf配置文件

加了!!!代表重要,更多配置信息可以参考:keepalived-doc

! Configuration File for keepalived

global_defs {

   # 邮件通知信息
   notification_email {
     # 定义收件人
     acassen@firewall.loc
   }

   router_id LVS_DEVEL # !!!设置lvs的id,在一个网络内应该是唯一的
   enable_script_security # !!!允许执行外部脚本
}

#  !!!配置vrrp_script,主要用于健康检查及检查失败后执行的动作。
vrrp_script chk_real_server {
	#健康检查脚本,当脚本返回值不为0时认为失败
    script "/usr/local/software/conf/chk_server.sh"
	#检查频率,以下配置每2秒检查1次
    interval 2
	#当检查失败后,将vrrp_instance的priority减小5
    weight -5
	#连续监测失败3次,才认为真的健康检查失败。并调整优先级
    fall 3
	#连续监测2次成功,就认为成功。但不调整优先级
    rise 2
	
    user root
}

#  !!!配置对外提供服务的VIP vrrp_instance配置
vrrp_instance VI_1 {

	# !!!指定vrrp_instance的状态,是MASTER还是BACKUP主要还是看优先级。
    state MASTER
	
	# !!!指定vrrp_instance绑定的网卡,最终通过指定的网卡绑定VIP
    interface ens33
	
	# !!!相当于VRID,用于在一个网内区分组播,需要组播域内内唯一。
    virtual_router_id 51
	
	# !!!本机的优先级,VRID相同的机器中,优先级最高的会被选举为MASTER
    priority 100
	
	# !!!心跳间隔检查,默认为1s,MASTER会每隔1秒发送一个报文告知组内其他机器自己还活着。
    advert_int 1
	# !!!通信认证机制,这里是明文认证还有一种是加密认证
    authentication {
        auth_type PASS
        auth_pass 1111
    }
	
	# !!!定义虚拟IP(VIP)192.168.159.100,可多设,每行一个
    virtual_ipaddress {
        192.168.159.100
    }

    # !!!本vrrp_instance所引用的脚本配置,名称就是vrrp_script 定义的容器名
	track_script {
      chk_real_server
    }
	
	# !!!监控本机上的哪个网卡,网卡一旦故障则需要把VIP转移出去
    track_interface {
        eth0
        ens33
    }

	# !!!虚拟路由,在需要的情况下可以设置lvs主机 数据包在哪个网卡进来从哪个网卡出去
    virtual_routes {
        192.168.110.0/24 dev eth2
    }

	# 工作模式,nopreempt表示工作在非抢占模式,默认是抢占模式 preempt
    nopreempt|preempt

	# 如果是抢占默认则可以设置等多久再抢占,默认5分钟
    preempt delay 300

	# !!!三个指令,如果主机状态变成Master|Backup|Fault之后会去执行的通知脚本,脚本要自己写
    notify_master ""
    notify_backup ""
    notify_fault ""

}

# !!!定义对外提供服务的LVSVIP以及port
virtual_server 192.168.159.100 80 {
    # !!!设置健康检查时间,单位是秒
    delay_loop 6
	
    # !!!设置负载调度的算法
    lb_algo rr|wrr|lc|wlc|lblc|sh|dh
	
    # !!!设置LVS实现负载的机制,有NATTUNDR三个模式
    lb_kind NAT
	
    # !!!会话保持时间
    persistence_timeout 50
	
	# !!!指定转发协议类型(TCPUDP)
    protocol TCP
	
    # 子网掩码,这个掩码是VIP的掩码
    nat_mask 255.255.255.0
    
    # 如果后端应用服务器都不可用,就会定向到那个服务器上
    sorry_server 192.168.200.200 1358
    
    # !!!指定real server1的IP地址
    real_server 192.168.159.146 80 {
        # 配置节点权值,数字越大权重越高
        weight 1
		
        # 健康检查方式
        TCP_CHECK {                  # 健康检查方式
            connect_timeout 10       # 连接超时
            retry 3           # 重试次数
            delay_before_retry 3     # 重试间隔
            connect_port 80          # 检查时连接的端口
        }

		# 应用服务器UP或者DOWN,就执行那个脚本
        notify_up "这里写的是路径,如果脚本后有参数,整体路径+参数引起来"
        notify_down "/PATH/SCRIPTS.sh 参数"

    }
	
}
real_server的健康检查方法

更多配置信息可以参考:keepalived-doc

# 可以是每种类型的多个   HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|DNS_CHECK|MISC_CHECK|BFD_CHECK|UDP_CHECK|PING_CHECK|FILE_CHECK
4.安装、配置注意事项
  • 安装
yum install -y keepalived
#路径
cd /etc/keepalived
  • 启动
#启动
service keepalived start

#停止
service keepalived stop

#查看状态
service keepalived status

#重启
service keepalived restart

#停止防火墙
systemctl stop firewalld.service
  • 依赖缺少可执行
# 注意: 如果有缺少依赖可以执行下面的命令
yum install -y gcc
yum install -y openssl-devel
yum install -y libnl libnl-devel
yum install -y libnfnetlink-devel
yum install -y net-tools
yum install -y vim wget
  • keepalived.conf注意事项
router_id后面跟的自定义的ID在同一个网络下是一致的

state后跟的MASTER和BACKUP必须是大写;否则会造成配置无法生效的问题

interface 网卡ID;要根据自己的实际情况来看,可以使用以下方式查询 ip a  查询

在BACKUP节点上,其keepalived.conf与Master上基本一致,修改state为BACKUP,priority值改小即可

authentication主备之间的认证方式,一般使用PASS即可;主备的配置必须一致,不能超过8位
  • ip飘逸失败(故障转移失败)可能的原因
1.禁用SElinux、清除iptables规则、关闭防火墙
2.各个节点时间同步,启用时间同步服务 systemctl start chronyd

3.确保Keepalive使用的网卡开启了多播(MULTICAST)

eth1      Link encap:Ethernet  HWaddr 00:50:56:BF:81:53
          inet addr:192.168.177.155  Bcast:192.168.177.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:febf:8153/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:373026 errors:0 dropped:28 overruns:0 frame:0
          TX packets:2540 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:57778200 (55.1 Mb)  TX bytes:152568 (148.9 Kb)


5.相关博客

keepalived官方配置文档

keepalived及VRRP原理介绍

keepalived详解

LVS官网

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
keepalived是一种开源的高可用性解决方案,常被用于构建负载均衡集群。由于笔记中提到"马哥",我推测这可能是指Linux运维专家马哥。 首先,keepalived可以通过实现虚拟路由冗余协议(VRRP)来提供故障转移和负载均衡功能。多台服务器可以组成一个VRRP集群,其中一台作为主节点,其他为备份节点。主节点负责转发来自客户端的请求,并将它们分发到后端服务器进行处理。同时,备份节点监测主节点的状态,一旦主节点出现故障,备份节点会接管主节点的角色,确保服务的不间断。 其次,keepalived还可以配合其他软件如nginx一起使用,提供更高级的负载均衡和故障转移功能。通过keepalived的健康检查机制,可以实时监测后端服务器的可用性,当某个服务器出现故障或超过负载阈值时,keepalived会将请求转发到其他可用服务器,实现负载均衡。 此外,keepalived还提供了丰富的配置选项,可以灵活地调整集群的行为和策略。可以设置权重、检查间隔、故障转移的处理方式等等,以满足不同的运维需求。 总结而言,keepalived是一款强大的高可用性解决方案,既可以提供故障转移功能,也可以实现负载均衡。对于Linux运维人员来说,keepalived是一个非常有用的工具,可以帮助他们快速搭建稳定可靠的服务架构。同时,熟练掌握和灵活配置keepalived也是一项重要的技能,有助于提高工作效率和服务质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值