云计算学习之路——Keepalived实现高可用

这篇具有很好参考价值的文章主要介绍了云计算学习之路——Keepalived实现高可用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Keepalived简介

1、Keepalived是什么?

keepalived是集群管理中保证集群高可用(HA)的一个服务软件,其功能类似于heartbeat,用于防止单点故障

keepalived的两大核心功能是失败切换(高可用)健康检查。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

2、Keepalived工作原理

keepalived是以虚拟路由冗余协议VRRP为基础来实现高可用功能的,当backup收不到vrrp包时就认为master宕掉了,这时就需要 根据VRRP的优先级来选举一个backup当master,这样我们就能保证集群的高可用。

VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议,可以认为是实现路由器高可用的协议。就是将N台提供相同功能的路由器组成一个路由组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的VIP,master会发送组广播,当backup收不到VRRP包就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,从而保证路由器的高可用。

如何判断谁是master:看vip在哪台服务器,谁就是master

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的

什么是脑裂?
脑裂(split-brain):指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,backup抢资源,master不认为自己会死,他俩抢着为客户端服务,结果会导致系统混乱,数据损坏。

二、实战:Keepalived+Nginx(实现Nginx负载均衡的高可用)

1、实验环境与架构

1)实验环境:

共需要五台虚拟机:
虚拟机1,虚拟机2:安装nginx.。
使用nginx的web服务器功能,作为真正的web服务器提供服务。

虚拟机3,虚拟机4:安装nginx和keepalived。
作用有两个:1、使用nginx的负载均衡功能,作为负载均衡服务器转发用户请求到真实服务器中。2、安装keepalived实现负载均衡的高可用,虚拟机3作为master,虚拟机4作为backup。

虚拟机5:作为客户端,用于集群的测试,无需任何配置。

2)实验架构
keepalived,云计算,学习,linux,nginx,centos

2、web服务器搭建

为了省时间,直接在nginx默认发布目录/usr/share/nginx/html/index.htm中写入测试内容,没有重新编写配置文件。

虚拟机1进行如下操作:

安装并开启nginx,并在nginx默认发布目录中写入测试内容

[root@web-1 ~]# yum -y install nginx
[root@web-1 ~]# systemctl start nginx
[root@web-1 ~]# echo web-1 > /usr/share/nginx/html/index.html

虚拟机2进行如下操作:

同虚拟机1 的操作一样

[root@web-2 ~]# yum -y install nginx
[root@web-2 ~]# systemctl start nginx
[root@web-2 ~]# echo web-2 > /usr/share/nginx/html/index.html

虚拟机5进行如下操作

验证两台web服务器是否搭建好
keepalived,云计算,学习,linux,nginx,centos

3、负载均衡服务器的搭建

虚拟机3实现负载均衡进行如下操作:

[root@nginx-master ~]# vim /etc/nginx/nginx.conf
keepalived,云计算,学习,linux,nginx,centos
[root@nginx-master ~]# vim /etc/nginx/conf.d/default.conf
keepalived,云计算,学习,linux,nginx,centos
[root@nginx-master ~]# nginx -s reload#重建加载配置文件

虚拟机4实现负载均衡进行如下操作:

与虚拟机3的配置一样,只需改变地址池的名称即可

[root@nginx-backup ~]# vim /etc/nginx/nginx.conf
keepalived,云计算,学习,linux,nginx,centos
[root@nginx-backup ~]# vim /etc/nginx/conf.d/default.conf
keepalived,云计算,学习,linux,nginx,centos
[root@nginx-backup ~]# nginx -s reload#重建加载配置文件

虚拟机5进行如下操作:

验证负载均衡

keepalived,云计算,学习,linux,nginx,centos访问负载均衡服务器,可以实现轮流访问真实服务器,负载均衡配置成功

4、Keepalived实现负载均衡高可用的搭建

虚拟机3,虚拟机4进行如下操作:

1)安装keepalived

[root@nginx-master ~]# yum -y install keepalived

2)备份keepalived的配置文件

[root@nginx-master ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

3)修改配置文件

[root@nginx-master ~]# vim /etc/keepalived/keepalived.conf

将文件内容全部清空,添加如下配置

! Configuration File for keepalived

global_defs {               #全局配置
   router_id director1      #用于识别master与backup,在backup服务器中,此项改为director2
}

vrrp_instance VI_1 {         #vrrp协议配置,用于实现高可用
    state MASTER             #定义此台服务器的角色
    interface ens33          #指定VIP地址绑定的接口,设置为网卡名称
    virtual_router_id 80
    priority 100             #设置优先级,master设置为100,backup设置为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.58.140/24    #设置虚拟IP,即VIP,需要与服务器ip在同一网段
    }
}

keepalived,云计算,学习,linux,nginx,centos

4)虚拟机4与虚拟机3进行相同操作,只有配置文件的内容不同

keepalived,云计算,学习,linux,nginx,centos
5)开启Keepalived(主备两台均开启)

[root@nginx-master ~]# systemctl enable keepalived#设置开机自启
[root@nginx-master ~]# systemctl start keepalived#启动keepalived

[root@nginx-backup ~]# systemctl enable keepalived#设置开机自启
[root@nginx-backup ~]# systemctl start keepalived#启动keepalived

6)ip a查看vip
keepalived,云计算,学习,linux,nginx,centos

7)虚拟机5访问vip
keepalived,云计算,学习,linux,nginx,centos

5、Keepalived高可用的验证

1)模拟keepalived集群出现故障,master宕机,验证高可用是否生效

master服务器关闭keepalived
[root@nginx-master ~]# systemctl stop keepalived

虚拟机5访问vip
keepalived,云计算,学习,linux,nginx,centos

backup服务器查看vip
keepalived,云计算,学习,linux,nginx,centos
keepalived,云计算,学习,linux,nginx,centos

2)当master恢复正常,查看高可用集群的vip

keepalived,云计算,学习,linux,nginx,centos
由于master的优先级为100,backup的优先级为50,当master服务器恢复正常后,vip会迅速的重新回到master中,master服务器重新成为Keepalived集群中的master

6、健康检测功能

在本实验中keepalived高可用可以解决负载均衡的单点故障,但是不能解决Nginx的web服务器故障。

为了解决这个问题,启用Keepalived的健康检测功能,让Keepalived以一定时间间隔执行一个外部脚本,脚本的功能是当Nginx失败,则关闭本机的Keepalived

1)编写健康检测脚本(两台keepalived服务器都做如下操作)

[root@nginx-master ~]# vim /etc/keepalived/check_nginx_status.sh
keepalived,云计算,学习,linux,nginx,centos

脚本内容如下:

#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ];then
       systemctl start nginx
       if [$? -ne 0 ];then
               systemctl stop keepalived
       fi
fi

2)在keepalived中引入健康监测模块并调用

[root@nginx-master ~]# vim /etc/keepalived/keepalived.conf
keepalived,云计算,学习,linux,nginx,centos

脚本升级

1)使用进程的方式来判断nginx是否可以用,如下:
ps -C nginx --no-heading | wc -l
在nginx正常运转时,使用此命令,回显2;当nginx不运转时,此命令回显0,故可以采用此命令来判断nginx是否宕机。
keepalived,云计算,学习,linux,nginx,centos

2)编写脚本
keepalived,云计算,学习,linux,nginx,centos

脚本内容如下:

counter=`ps -C nginx --no-heading | wc -l`
if [ ${counter} -eq 0 ];then
        systemctl start nginx
        counter=`ps -C nginx --no-heading | wc -l`
        if [ ${counter} -eq 0 ];then
                systemctl stop keepalived
        fi
fi

有人提出在此脚本中基础上实现当nginx能够正常开启的时候自动开启keepalived的功能,其实没有这个必要。此脚本的逻辑是:
 ①当nginx服务宕机后,首先先尝试重新开启nginx服务,若能够重新开启,就不会进入到stop keepalived的判断语句中。
 ②若重启nginx不成功,就会停止keepalived,实现VIP漂移,重新选举master。
 ③需要明白的是:有人说在nginx宕机后,经过排错后nginx可以正常使用的情况下,应该在脚本里边加上此种情况下重新启动keepalived的功能。但是我们应该明白,当nginx宕机后,又不能重新启动的情况下,脚本就会停止keepalived,这时keepalived就不会检测脚本了,就算后来将nginx修复好,此时keepalived也已经停止,也不能实现检测脚本功能。目前我们还不能做到nginx的自动排错,需要人工排错,当我们为nginx排完错,手动开启nginx和keepalived就好。

3)验证

1、关闭nginx,模拟nginx宕机,但是vip没有漂移,说明脚本生效又重新开启了nginx
keepalived,云计算,学习,linux,nginx,centos

2、故意向nginx.conf配置文件添加错误,使nginx不能重新启动

[root@nginx-master ~]# vim /etc/nginx/nginx.conf
keepalived,云计算,学习,linux,nginx,centos
keepalived,云计算,学习,linux,nginx,centos文章来源地址https://www.toymoban.com/news/detail-860556.html

到了这里,关于云计算学习之路——Keepalived实现高可用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx+Keepalived实现服务高可用

    Nginx 和 Keepalived 是常用于构建高可用性(High Availability)架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器,而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 在服务器1和服务器2分别下载nginx 在服务器1配置,vim /usr/share/nginx/html/index.html  在服务器

    2024年02月07日
    浏览(38)
  • LVS-keepalived实现高可用

    本章核心: Keepalived为LVS应运而生的高可用服务。LVS的调度无法做高可用,预算keepalived这个软件,实现了调度器的高可用。 但是:Keeplived不是专门为LVS集群服务的,也可以做其他服务器的高可用 LVS的高可用集群:主调度器和备调度器(可以有多个)一般都是一主两备,一主

    2024年02月08日
    浏览(34)
  • Keepalived实现Nginx的高可用集群案例

    服务器规划:                          serverb(nginx2):192.168.233.144                     serverc(客户端):192.168.233.140                     serverd(nginx1):192.168.233.141 结构图: serverd(nginx1): serverb(nginx2): serverc(客户端): 日志查看:

    2024年02月20日
    浏览(39)
  • nginx+keepalived实现负载均衡和高可用

    环境准备 IP VIP 环境 客户端 192.168.134.174 Master 192.168.134.170 192.168.134.100 需要配置nginx负载均衡 Backup 192.168.134.172 192.168.134.100 需要配置nginx负载均衡 web1服务器 192.168.134.171 web2服务器 192.168.134.173 1、首先安装nginx服务器(此处采用yum安装) 2、修改nginx的配置文件(配置负载均衡)

    2024年02月13日
    浏览(41)
  • CentOS 7 下 Keepalived + Nginx 实现双机高可用

    服务器准备 服务信息 主机名 IP 角色 其他 my-web01 192.168.157.31 nginx keepalived master my-web02 192.168.157.32 nginx keepalived backup VIP 192.168.157.30 服务架构 服务安装 nginx Keepalived 服务配置 nginx web01 web02 Keepalived web01 web02 启动服务 nginx keepalived 服务验证 查看 VIP 状态 CURL 命令访问 浏览器访问

    2024年02月13日
    浏览(49)
  • LVS-DR+keepalived实现高可用负载群集

    VRRP 通信原理: VRRP就是虚拟路由冗余协议,它的出现就是为了解决静态路由的单点故障。 VRRP是通过一种竞选的一种协议机制,来将路由交给某台VRRP路由。 VRRP用IP多播的方式(多播地址224.0.0.18)来实现高可用的通信,工作时主节点发包,备节点接收包,当备节点接收不到主

    2024年02月12日
    浏览(38)
  • mysql双主互从通过KeepAlived虚拟IP实现高可用

    在mysql 双主互从的基础上, 架构图: Keepalived有两个主要的功能: 提供虚拟IP,实现双机热备 通过LVS,实现负载均衡 修改 keepalived 配置文件 keepalived.conf 检测xxx.sh check_mysql_port.sh 安装killall 命令 安装netstat 修改脚本xxx.sh权限 keepalived.conf 启动keepalived master slave 停止容器,使v

    2024年02月07日
    浏览(38)
  • 通过keepalived+nginx实现 k8s apiserver节点高可用

    K8s 主机配置: 配置: 4Gib 内存/4vCPU/60G 硬盘 网络:机器相互可以通信 k8s 实验环境网络规划: podSubnet(pod 网段) 10.244.0.0/16 serviceSubnet(service 网段): 10.96.0.0/12 物理机网段:192.168.1.0/24 2个控制节点2个工作节点 K8S集群角色 IP地址 主机名 安装的组件 控制节点 192.168.1.63 xueg

    2024年02月03日
    浏览(39)
  • nginx两台负载均衡服务器之间使用keepalived实现高可用

    单点故障:某个重要的功能只有一份,如果他出现问题,会导致全局不能使用 “高可用性”(High Availability,缩写为HA)用于描述系统或服务在面临故障、硬件或软件问题时能够继续正常运行的能力。高可用性的目标是最大程度地减少系统中断或停机时间,确保用户可以随时

    2024年02月09日
    浏览(44)
  • 虚拟机中使用Nginx + Keepalived 实现高可用 Web 负载均衡笔记

    物理操作系统:Windows10 虚拟机软件:VMWare Workstation 16 Pro 虚拟操作系统统:CentOS7 Nginx:1.24.0 Keepalived:2.2.8 在VMWare Worksattion中安装了2台CentOS7的虚拟机,桥接方式下IP地址分别为:192.168.0.35、192.168.0.36 VIP IP 主机名 Nginx端口 默认主从 192.168.0.100 192.168.0.35 wongoing01 88 MASTER 192.168

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包