Keepalived高可用集群

[复制链接]
发表于 2025-11-11 21:10:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
keepalived高可用集群

1 概述

署理服务器和调理器都是单点模式,keepalived就是用来实现调理器的高可用集群,防止出现单点故障标题。
1.1 keepalived的工作原理

keepalived是专门为了LVS集群开辟出来的,是基于vrrp协议(捏造路由的冗余协议)实现的调理器的高可用方案,但是实用场景不但仅范围于LVS。而且keepalived为背景的真实服务器做了一个康健查抄,当服务不可用时,会自动的移除ipvs的转发战略,服务规复时,会自动重新把战略参加到ipvs。
1.1.1 康健查抄

康健查抄,别名探针
1)发送心跳消息 ping/pang
2)TCP端口查抄 向一个主机的IPORT 发起TCP毗连
3) HTTP URL 查抄 向一个主机的 http://IPORT/URL路径 发送HTTP GET哀求方法,主机相应返回2XX、3XX状态码则以为康健查抄正常,如相应返回4XX、5XX状态码则以为康健查抄非常
查抄服务器作用节点服务器如果发现有故障的节点就会将其隔离大概剔除集群,待其规复后再重新参加到集群当中负载均衡器会定时查抄主服务器的状态(包罗主机和服务的状态),如果主服务器故障就自动切换到备服务器上,待主服务器规复后再重新让主服务器去承载业务哀求1.1.2 keepalive功能


  • 按优先级举行主备切换,当主故障时,可以自动切换到备,主规复之后,如果主的优先级比备高,照旧会自动的切换到主。
  • 故障检测和规复功能。
  • 主备之间通过组播所在:224.0.0.18,相互发送康健查抄的报文,确定主和备之间的通讯(确定两边是否工作正常)。
  • 通过设置vip来实现集群的入口,vrrp是一个冗余协议,主在工作时,备完全不加入集群的工作,只是监听主的状态。
1.1.3 Keepalived体系重要模块及其作用

Keepalived的重要模块作用core模块为Keepalived的焦点,负责主进程的启动、维护及全局设置文件的加载息争析vrrp模块是来实现VRRP协议的check模块负责康健查抄,常见的方式有端口查抄及URL查抄1.2 脑裂

在HA体系,只要是通过vip这个机制实现的,都有大概会出现这个标题。
1.2.1 脑裂的界说

vip所在同时出现在了主和备上。
注:vip所在永世只能出现一台服务器上!
1.2.2 脑裂的缘故因由

1、防火墙屏蔽了主备的之间224.0.0.18的报文,导致相互收不到信息,就以为对方已经挂起,以是都以为自己是主。
2、网卡出现故障(硬件故障),设置出标题:ip所在辩论。
3、心跳线:网线之间毗连故障,断开,老化。
4、keepalived的设置文件有标题,设置的干系项出现标题(80%)
1.2.3 脑裂的办理方法



  • 软件层面:

    • 抓包举行定位,检察组播的报文是否正常。
    • 设置文件举行排查(网卡设置,应用设置)。

  • 硬件层面:

    • 更换心跳线(网线)举行测试。
    • 网卡硬件的标题。
    • 内存和cpu,磁盘空间不敷,也会出现脑裂。

2 LVS高可用

2.1 架构

名称IP所在LVS-Master192.168.207.100LVS-Backup192.168.207.110Web-A192.168.207.200Web-B192.168.207.210VIP192.168.207.250Client192.168.207.102.2 步调

2.2.1 主备同一操纵

  1. apt -y install ipvsadm keepalived
  2. cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
  3. vim /etc/keepalived/keepalived.conf
  4. systemctl restart keepalived.service
复制代码
主设置如下:

备设置如下:

主备再同一操纵
  1. vim /etc/sysctl.conf
  2. sysctl -p
  3. route add -host 192.168.207.250 dev ens33
复制代码

2.2.2 查抄设置的转发战略是否收效

主备服务器同一查抄
  1. ipvsadm -ln
复制代码


2.2.3 查抄主的vip所在是否天生

主备服务器同一查抄
  1. ip a
复制代码


2.2.4 模仿主服务器故障切换

看主的vip能否飘到备服务器


2.2.5 规复主服务器

看vip是否可以或许会到主服务器


3 nginx高可用

3.1 架构

名称IP所在Nginx-Master192.168.207.200Nginx-Backup192.168.207.210VIP192.168.207.150后端服务器1192.168.207.100后端服务器2192.168.207.110后端服务器3192.168.207.1203.2 编写nginx查抄脚本

  1. vim /opt/check_nginx.sh
  2. #!/bin/bash                                   
  3. /usr/bin/curl -I http://localhost &> /dev/null
  4. if [ $? -ne 0 ]
  5. then
  6.     systemctl stop keepalived
  7. fi
复制代码
3.3 主署理服务器keepalived设置

  1. vim /etc/keepalived/keepalived.conf
  2. global_defs {
  3.    router_id LVS_01
  4. }
  5. vrrp_script check_nginx {
  6.     script "/opt/check_nginx.sh"
  7.     #脚本必须能执行,位置一定要写绝对路径
  8.     interval 3
  9.     #每隔5秒钟通过脚本检查nginx的状态
  10. }
  11. vrrp_instance VI_1 {
  12.     state MASTER
  13.     interface ens33
  14.     virtual_router_id 50
  15.     priority 100
  16.     advert_int 1
  17.     virtual_ipaddress {
  18.         192.168.207.150
  19.     }
  20.     track_script {
  21.         check_nginx
  22.     }
  23. }
复制代码
3.4 备署理服务器keepalived设置

  1. vim /etc/keepalived/keepalived.conf
  2. global_defs {
  3.    router_id Nginx_02
  4. }
  5. vrrp_instance VI_1 {
  6.     state BACKUP
  7.     interface ens33
  8.     virtual_router_id 50
  9.     priority 80
  10.     advert_int 1
  11.     virtual_ipaddress {
  12.         192.168.207.150
  13.     }
  14. }
复制代码
3.5 主备署理服务器nginx七层反向署理设置

  1. vim /usr/local/nginx/conf/nginx.conf
  2. upstream kc {              
  3.     server 192.168.207.100;
  4.     server 192.168.207.110;
  5.     server 192.168.207.120;
  6. }
  7. server {
  8.     listen       80;
  9.     proxy_pass   http://kc;
  10. }     
复制代码
3.6 实验结果

3.6.1 正常情况




3.6.2 关闭nginx服务(主故障)




3.6.3 重启keepalived服务(主规复)



回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表