阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Keepalived的高可用IPVS集群

406次阅读
没有评论

共计 4377 个字符,预计需要花费 11 分钟才能阅读完成。

前言:

我们已经讲到了用 LVS 搭建集群服务,虽然确实可以提高了服务的负载能力,但是,却依然存在着不少问题,比如调度器的单点,不能实时检测后端服务器的健康状态。所以我们希望可以实现调度器有主备,一台服务器挂掉另外一台立马自动换上,并能根据后端服务器的健康状况增加删除 RS。此处就这用到本次要讲到的 keepalived 了。当然 keepalived 不仅仅能实现 ipvs 集群的高可用,只是本次先在 ipvs 上加入高可用。

正文:

keepalived 主要有三个组建组成,即 vrrp stack,ipvs wrapper,checkers,分别用于实现主备,管理 ipvs 规则以及健康状态检测。

vrrp 虚拟路由冗余协议,其实是为了解决局域网中配置静态网关出现单点失效的路由协议。在此主要是为了解决 VS 单点失效,我们可以拿两台设备做调度器,并把两个设备虚拟成一台设备,并用一个叫做虚拟路由 id 的东东标识这个虚拟设备,并且给这个虚拟设备一个 ip 地址,两台设备中优先级高的设备就是主设备,其他设备就作为从设备,主设备会获得到这个虚拟设备的 ip,当主设备由于某种原因挂掉时,从设备就或者这个虚拟设备的 ip,从而提供服务,所以简单的主备模式,就一台设备工作,另外一台作为备用。那备用设备是怎么知道主设备是否在线呢?相当于两个人在不同的房间,为了确定一个是否存在,让他一直发出声音让其他人确定他还存在就好了~ 所以,主备设备也是如此,不过因为只需要很小的范围内传播,所以我们此处用到的并非广播,而是多播而已。

keepalived 可以通过配置文件来设置 lvs,与健康状态检测一起来对 ipvs 进行动态管理。如果我们配置了 2 台 RS,keepalived 会根据 RS 的健康状态配置 ipvs 规则,如果某台设备 down 掉,请求就不会转发到此台设备,那如果两台都挂掉怎么办?我们可以让调度器呈现一个 sorry server 来提示用户,服务不可用等等。

我们在上篇博客的实现上继续加入 keepalived 功能把~ 为了实现高可用,我们在加入一台设备用来当 VS 的备用设备。其 ip 为 172.16.53.104,两台 RS 的配置不变,我们直接清空以前的 ipvs 配置就好。keepalived 的配置分三个部分,分别是全局配置,vrrp 相关配置和 lvs 的配置。调度器的配置如下:

#172.16.53.100
ipvsadm -C  #情况以前的配置
ifconfig eno16777736:0 172.16.53.50 netmask 255.255.255.255 broadcast 172.16.53.50 down
    以前手动配置的 VIP 也 down 掉
以下配置主备两天设备基本相同
yum install keepalived -y
cd /etc/keepalived
mv keepalived.conf{,.bak}  #把默认配置当成备份
vim keepalived.conf
    global_defs {#全局配置
      notification_email {
            root@localhost      #设置提示邮件的接收者,调度器状态转换时可以发送邮件提醒
      }
   
      notification_email_from keepalived@localhost #邮件发送者
      smtp_server 127.0.0.1                        #邮件的服务器地址
      smtp_connect_timeout 30                      #邮件服务连接超时时间
      router_id node1                              #标识一台设备
      vrrp_mcast_group4 224.0.100.99                #用来通告在线的多播地址
    }
    vrrp_instance VI_1 {#vrrp 配置
        state BACKUP          #这里是初始状态为从设备,104 是主设备此处就为 MASTER
        interface eno16777736            #虚拟 ip 设置在哪个接口上
        virtual_router_id 99            #标识一台虚拟设备,因为可以配置多个 vrrp 虚拟设备
        priority 98                    #优先级,优先级高的为主设备
        advert_int 1                    #vrrp 通告的时间间隔;
        authentication {#认证相关,所有设备必须一样
                auth_type PASS
                auth_pass 571f97b2      #只有前 8 位有效
        }
        virtual_ipaddress {#传说中的虚拟 IP 咯
                172.16.53.50/16 dev eno16777736        #ip 和所在的接口
        }
    }
    virtual_server 172.16.53.50 80 {#lvs 相关的配置咯~
        delay_loop 3                    #服务轮询的时间间隔;
        lb_algo rr                      #定义调度方法为轮询
        lb_kind DR                      #定义集群类型,这个要依赖不同的网络架构哟
        protocol TCP                    #服务协议,仅支持 TCP
        sorry_server 127.0.0.1 80        #sorry server 的地址,我们用本机
        real_server 172.16.53.101 80 {#定义 RS
                weight 1                #权值,有的调度算法会用到
                HTTP_GET {#健康检测,检测 http 的 get
                        url {
                                path /  #定义监控的 url
                                status_code 200  #返回值为 200 就为健康
                        }
                        connect_timeout 1        #连接超时时长
                        nb_get_retry 3            #重试次数
                        delay_before_retry 1      #重试之前的延时时长
                }
        }
        real_server 172.16.53.102 80 {#第二个 RS
                weight 1
                HTTP_GET {
                        url {
                                path /
                                status_code 200
                        }
                        connect_timeout 1
                        nb_get_retry 3
                        delay_before_retry 1
                }
        }
    }
systemctl start keepalived    #启动服务
ipvsadm -Ln                  #查看是否有相应的 ipvs 规则
yum install httpd -y          #配置 sorry server
vim /var/www/html/index.html
    sorry,our system is being maintained
systemctl start httpd        #启动 sorry server

两个 VS 的配置基本一致,除了 state 设置不同以外。虽然我们演示的是 http 的负载均衡,健康状态检测以及高可用,不过任何的服务都是支持的~ 毕竟 lvs 是 4 层的东东~ 其它的服务得用到 TCP_CHECK 字段的配置了。此处就不再详细描述了。直接给出简要的配置说明吧。

TCP_CHECK {
    connect_ip <IP ADDRESS>:向当前 RS 的哪个 IP 地址发起健康状态检测请求
    connect_port <PORT>:向当前 RS 的哪个 PORT 发起健康状态检测请求
    bindto <IP ADDRESS>:发出健康状态检测请求时使用的源地址;
    bind_port <PORT>:发出健康状态检测请求时使用的源端口;
    connect_timeout <INTEGER>:连接请求的超时时长;
}

我们所演示的配置为一主一从,如果我们想实现两个 RS 同时调度请求该怎么办?我们可以在两台设备上弄两个虚拟设备,所以就有两个虚拟 ip,在一个虚拟设备中,VS1 为主,VS2 为从,另一个虚拟设备中 VS1 为从,VS2 为主,然后用 dns 把一个域名解析到两个 ip,因为 dns 本身就会去进行轮询两个 ip,所以就实现了两个调度器的负载均衡~ 在此处就不做演示了,和上面配置大同小异。此处只是给出一个思路。

注意:如果在 dr 模式下设置双主,RS 要记得设置两个 VIP 哟!keepalived 出来能做 lvs 的高可用,也可以做 nginx 负载均衡的高可用,见 http://www.linuxidc.com/Linux/2017-03/141928.htm

一些关于 Keepalived 相关教程集合

CentOS 7 下 Keepalived + HAProxy 搭建配置��解  http://www.linuxidc.com/Linux/2017-03/141593.htm

Keepalived 高可用集群应用场景与配置 http://www.linuxidc.com/Linux/2017-03/141866.htm

Nginx+Keepalived 实现站点高可用  http://www.linuxidc.com/Linux/2016-12/137883.htm

Nginx+Keepalived 实现站点高可用(负载均衡)  http://www.linuxidc.com/Linux/2016-12/138221.htm

构建高可用集群 Keepalived+Haproxy 负载均衡 http://www.linuxidc.com/Linux/2016-12/138917.htm

CentOS6.5 下 Keepalived 高可用服务单实例配置 http://www.linuxidc.com/Linux/2016-12/138110.htm

Keepalived 安装与配置 http://www.linuxidc.com/Linux/2017-02/140421.htm

Linux 下 Keepalived 服务安装文档  http://www.linuxidc.com/Linux/2017-03/141441.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141927.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4377字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7980538
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...