使用Keepalived实现双机热备(虚拟漂移IP地址)详细介绍
🏡作者主页:点击!
🐧Linux基础知识(初学):点击!
🐧Linux高级管理防护和群集专栏:点击!
🔐Linux中firewalld防火墙:点击!
⏰️创作时间:2024年7月15日14点40分
🀄️文章质量:95分
目录
——前言——
Keepalived 简介
工作原理
主服务器
备服务器
虚拟(漂移)地址测试
——前言——
以下内容全是重点 请仔细阅读
以下内容全是重点 请仔细阅读
Keepalived 是一个用于实现高可用性。它主要用于确保服务的连续性,防止单点故障,通常应用于负载均衡和故障转移场景。
Keepalived 简介
-
Keepalived 是一个基于 VRRP(虚拟路由冗余协议)协议的软件实现。
-
它可以管理 LVS(Linux Virtual Server)集群系统,也可以单独用于实现服务的高可用。
-
Keepalived 通过配置虚拟 IP 地址(VIP)来实现服务的故障转移。
-
它能够监控服务器和服务的状态,在发生故障时自动进行切换。
特别适合需要快速故障转移和负载均衡的网络环境
工作原理
-
VRRP协议
Keepalived使用VRRP(虚拟路由冗余协议)来实现高可用性。
多台服务器组成一个VRRP组,共享一个虚拟IP地址。
一台服务器作为主服务器,其他为备用服务器。
主服务器定期发送VRRP通告包,如果备用服务器在一定时间内没有收到通告,就会接管虚拟IP。
2.健康检查
Keepalived定期检查本地和远程服务的健康状态。
支持多种检查方式,如TCP、HTTP、SSL等。
如果检测到服务不可用,会触发故障转移。
3.负载均衡:
当与LVS(Linux Virtual Server)结合使用时,Keepalived可以管理LVS的配置。
支持多种负载均衡算法,如轮询、加权轮询、最少连接等。
4.配置管理
通过配置文件定义VRRP实例、虚拟IP、健康检查等参数。
支持动态配置更新,无需重启服务。
5.故障转移
当主服务器失效时,备用服务器会自动接管虚拟IP。
转移过程快速,通常在几秒内完成,对用户几乎无感知。
过这些机制,Keepalived能够有效地提供高可用性和负载均衡服务,确保系统的稳定性和可靠性。
实验环境
主 192.168.192.100 虚拟漂移地址 192.168.192.200
备 192.168.192.111 虚拟漂移地址 192.168.192.200
主服务器
安装所需组件 yum -y install gcc openssl-devel libnfnetlink-devel libnl libnl3-devel yum install -y keepalived ipvsadm
编辑配置文件
以下配置都是重点 大家可以一一比对
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } ! 设置通知邮件的接收地址 notification_email_from Alexandre.Cassen@firewall.loc ! 设置通知邮件的发送地址 smtp_server 192.168.200.1 ! 设置SMTP服务器地址 smtp_connect_timeout 30 ! 设置SMTP连接超时时间(秒) router_id R1 ! 设置路由器标识 } vrrp_instance VI_1 { state MASTER ! 设置初始状态为主节点 interface ens33 ! 设置VRRP实例绑定的网络接口 virtual_router_id 2 ! 设置虚拟路由器ID priority 100 ! 设置优先级 advert_int 1 ! 设置VRRP广播间隔(秒) authentication { auth_type PASS ! 设置认证类型为密码 auth_pass 1111 ! 设置认证密码 } virtual_ipaddress { 192.168.192.200 ! 设置虚拟IP地址 } } virtual_server 192.168.192.200 80 { delay_loop 6 ! 设置健康检查间隔(秒) lb_algo rr ! 设置负载均衡算法为轮询 lb_kind DR ! 设置LVS模式为直接路由 nat_mask 255.255.255.0 ! 设置NAT掩码 ! persistence_timeout 50 ! 会话保持时间(秒),当前被注释 protocol TCP ! 设置协议为TCP real_server 192.168.192.112 80 { weight 1 ! 设置服务器权重 TCP_CHECK { connect_port 80 ! 设置健康检查连接的端口 connect_timeout 3 ! 设置连接超时时间(秒) nb_get_retry 3 ! 设置重试次数 delay_before_retry 3 ! 设置重试间隔(秒) } } real_server 192.168.192.114 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
keepalived会定期对real server进行健康检查,如果检查失败,它会尝试重新连接。如果在指定的重试次数内都无法成功连接,keepalived会将该服务器标记为不可用,并将流量转发到其他可用的服务器。
systemctl start keepalived #启动服务 systemctl enable keepalived #开机自启 systemctl status keepalived
备服务器
安装所需组件 yum -y install gcc openssl-devel libnfnetlink-devel libnl libnl3-devel yum install -y keepalived ipvsadm
编辑配置文件
根据行号来修改所需的信息 我都列出来 大家自行寻找出来修改
vim /etc/keepalived/keepalived.conf
12 router_id R2 13 } 14 15 vrrp_instance VI_1 { 16 state BACKUP 17 interface ens33 18 virtual_router_id 2 19 priority 95 20 advert_int 1 21 authentication { 22 auth_type PASS 23 auth_pass 1111 24 } 25 virtual_ipaddress { 26 192.168.192.200 27 } 28 } 30 virtual_server 192.168.192.200 80 { 31 delay_loop 6 32 lb_algo rr 33 lb_kind DR 34 nat_mask 255.255.255.0 35 # persistence_timeout 50 36 protocol TCP 37 38 real_server 192.168.192.112 80 { 39 weight 1 40 TCP_CHECK{ 41 connetc_port 80 42 connect_timeout 3 43 nb_get_retry 3 44 delay_before_retry 3 45 } 46 47 real_server 192.168.192.114 80 { 48 weight 1 49 TCP_CHECK{ 50 connetc_port 80 51 connect_timeout 3 52 nb_get_retry 3 53 delay_before_retry 3 54 } 55 } 56 } 57 }
systemctl start keepalived #启动服务 systemctl enable keepalived #开机自启
查看是否出错
systemctl status keepalived
虚拟(漂移)地址测试
在主服务器上查看
[root@localhost ~]# ip a sh dev ens33 2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:af:b6:81 brd ff:ff:ff:ff:ff:ff inet 192.168.192.100/24 brd 192.168.192.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.192.200/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:feaf:b681/64 scope link valid_lft forever preferred_lft forever
备服务器查看
[root@localhost ~]# ip a sh dev ens33 2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:b2:65:cb brd ff:ff:ff:ff:ff:ff inet 192.168.192.111/24 brd 192.168.192.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:feb2:65cb/64 scope link valid_lft forever preferred_lft forever
此刻我们关闭终止主服务器keepalived
在查看
备服务器
"成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子