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

Keepalived安装与配置

491次阅读
没有评论

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

一、简介

Keepalived 是一个免费开源的,用 C 编写的类似于 layer3, 4 & 7 交换机制软件,具备我们平时说的第 3 层、第 4 层和第 7 层交换机的功能。主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖 Linux 的虚拟服务内核模块(ipvs),而高可用是通过 VRRP 协议实现多台机器之间的故障转移服务。
Keepalived 安装与配置
上图是 Keepalived 的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。
内核空间 :主要包括 IPVS(IP 虚拟服务器,用于实现网络服务的负载均衡)和 NETLINK(提供高级路由及其他相关的网络功能)两个部份。
用户空间

  • WatchDog:负载监控 checkers 和 VRRP 进程的状况
  • VRRP Stack:负载负载均衡器之间的失败切换 FailOver,如果只用一个负载均稀器,则 VRRP 不是必须的。
  • Checkers:负责真实服务器的健康检查 healthchecking,是 keepalived 最主要的功能。换言之,可以没有 VRRP Stack,但健康检查 healthchecking 是一定要有的。
  • IPVS wrapper:用户发送设定的规则到内核 ipvs 代码
  • Netlink Reflector:用来设定 vrrp 的 vip 地址等。

Keepalived 的所有功能是配置 keepalived.conf 文件来实现的。

二、安装与配置

从官网下载 keepalived 的最新版本,本文以当前最新版本 1.2.24 为例。

2.1 安装

shell> cd /usr/local/src
shell> wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz
shell> tar -zxvf keepalived-1.2.24.tar.gz
shell> cd keepalived-1.2.24
shell> ./configure --prefix=/usr/local/keepalived
shell> make && make install

2.2 配置

安装完成后,进入安装目录的 etc 目录下,将 keepalived 相应的配置文件拷贝到系统相应的目录当中。keepalived 启动时会从 /etc/keepalived 目录下查找 keepalived.conf 配置文件,如果没有找到则使用默认的配置。/etc/keepalived 目录安装时默认是没有安装的,需要手动创建。配置文件目录结构如下所示:

shell> tree -l /usr/local/keepalived/etc
-- keepalived
|   |-- keepalived.conf
|   `-- samples
|       |-- keepalived.conf.status_code
|       |-- keepalived.conf.track_interface
|       |-- keepalived.conf.vrrp
|       |--。。。
|-- rc.d
|   `-- init.d
|       `-- keepalived
`-- sysconfig
    `-- keepalived

分别对应系统目录(忽略 samples 目录):

/etc/keepalived/keepalived.conf
/etc/rc.d/init.d/keepalived
/etc/sysconfig/keepalived

将配置文件拷贝到系统对应的目录下

shell> mkdir /etc/keepalived
shell> cp /usr/local/keepalived/etc/keepalived.conf /etc/keepalived/keepalived.conf
shell> cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalived
shell> cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

设置 keepalived 服务开机启动:

shell> chkconfig keepalived on
shell> service keepalived start   # 启动服务
shell> service keepalived stop    # 停止服务
shell> service keepalived restart # 重启服务

另外需要注意的一点是,keepalived 启动时不会检查配置文件的语法是否正确,所以我们在编写配置文件时要特别小心,别写错了,否则会出现一些意想不到的现象。

使用 service keepalived start 命令启动服务时,默认会将 /etc/sysconfig/keepalived 文件中 KEEPALIVED_OPTIONS 参数作为 keepalived 服务启动时的参数,并从 /etc/keepalived/ 目录下加载 keepalived.conf 配置文件,或用 - f 参数指定配置文件的位置。

# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp               -P    Only run with VRRP subsystem.
# --check              -C    Only run with Health-checker subsystem.
# --dont-release-vrrp  -V    Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs  -I    Dont remove IPVS topology on daemon stop.
# --dump-conf          -d    Dump the configuration data.
# --log-detail         -D    Detailed log messages. 日志默认输出在 /var/log/message 文件中
# --log-facility       -S    0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D"

运行 keepalived --help 可以查看启动时的可选参数,这些可选参数都可以配置在 /etc/sysconfig/keepalived 文件中的 KEEPALIVED_OPTIONS 选项中,作为服务启动时的参数。

keepalived 正常运行后,会启动 3 个进程,其中一个是父进程,负责监控其子进程。一个是 vrrp 子进程,另外一个是 checkers 子进程。

shell> ps -ef | grep keepalived
root       831     1  0 11:22 ?        00:00:00 keepalived -D
root       840   831  0 11:22 ?        00:00:00 keepalived -D
root       841   831  0 11:22 ?        00:00:00 keepalived -D

到此 keepalived 就安装完成了。

三、keepalived.conf 配置文件说明

keepalived 服务安装完成之后,后面的主要工作就是在 keepalived.conf 文件中配置 HA 和负载均衡。一个功能比较完整的常用的 keepalived 配置文件,主要包含三块:全局定义块、VRRP 实例定义块和虚拟服务器定义块。全局定义块是必须的,如果 keepalived 只用来做 ha,虚拟服务器是可选的。下面是一个功能比较完整的配置文件模板:

# 全局定义块
global_defs {# 邮件通知配置
    notification_email {
        email1
        email2
    }
    notification_email_from email
    smtp_server host
    smtp_connect_timeout num

    lvs_id string
    router_id string    ## 标识本节点的字条串, 通常为 hostname
}

#VRRP 实例定义块
vrrp_sync_group string { 
    group {string
        string
    }
}

vrrp_instance string {
    state MASTER|BACKUP
    virtual_router_id num
    interface string
    mcast_src_ip @IP 
    priority num
    advert_int num
    nopreempt
    smtp_alert
    lvs_sync_daemon_interface string 
    authentication {
        auth_type PASS|AH
        auth_pass string
    }

    virtual_ipaddress {# Block limited to 20 IP addresses @IP
        @IP
        @IP
    }
}

# 虚拟服务器定义块
virtual_server (@IP PORT)|(fwmark num) {delay_loop num
    lb_algo rr|wrr|lc|wlc|sh|dh|lblc 
    lb_kind NAT|DR|TUN
    persistence_timeout num 
    protocol TCP|UDP
    real_server @IP PORT {weight num
        notify_down /path/script.sh
        TCP_CHECK {connect_port num 
            connect_timeout num
        }
    }

    real_server @IP PORT {weight num
        MISC_CHECK {misc_path /path_to_script/script.sh(or misc_path“/path_to_script/script.sh <arg_list>”)
        }
    }

    real_server @IP PORT {weight num
        HTTP_GET|SSL_GET {
            url {# You can add multiple url block path alphanum
                digest alphanum
            }
            connect_port num
            connect_timeout num 
            nb_get_retry num 
            delay_before_retry num
        }
    }
}

全局定义块

1、email 通知(notification_email、smtp_server、smtp_connect_timeout):用于服务有故障时发送邮件报警,可选项,不建议用。需要系统开启 sendmail 服务,建议用第三独立监控服务,如用 nagios 全面监控代替。
2、lvs_id:lvs 负载均衡器标识,在一个网络内,它的值应该是唯一的。
3、router_id:用户标识本节点的名称,通常为 hostname
4、花括号{}:用来分隔定义块,必须成对出现。如果写漏了,keepalived 运行时不会得到预期的结果。由于定义块存在嵌套关系,因此很容易遗漏结尾处的花括号,这点需要特别注意。

VRRP 实例定义块

  1. vrrp_sync_group:同步 vrrp 级,用于确定失败切换(FailOver)包含的路由实例个数。即在有 2 个负载均衡器的场景,一旦某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪
  2. group:至少要包含一个 vrrp 实例,vrrp 实例名称必须和 vrrp_instance 定义的一致
  3. vrrp_instance:vrrp 实例名
    1> state:实例状态,只有 MASTER 和 BACKUP 两种状态,并且需要全部大写。抢占模式下,其中 MASTER 为工作状态,BACKUP 为备用状态。当 MASTER 所在的服务器失效时,BACKUP 所在的服务会自动把它的状态由 BACKUP 切换到 MASTER 状态。当失效的 MASTER 所在的服务恢复时,BACKUP 从 MASTER 恢复到 BACKUP 状态。
    2> interface:对外提供服务的网卡接口,即 VIP 绑定的网卡接口。如:eth0,eth1。当前主流的服务器都有 2 个或 2 个以上的接口(分别对应外网和内网),在选择网卡接口时,一定要核实清楚。
    3> mcast_src_ip:本机 IP 地址
    4> virtual_router_id:虚拟路由的 ID 号,每个节点设置必须一样,可选择 IP 最后一段使用,相同的 VRID 为一个组,他将决定多播的 MAC 地址。
    5> priority:节点优先级,取值范围 0~254,MASTER 要比 BACKUP 高
    6> advert_int:MASTER 与 BACKUP 节点间同步检查的时间间隔,单位为秒
    7> lvs_sync_daemon_inteface:负载均衡器之间的监控接口, 类似于 HA HeartBeat 的心跳线。但它的机制优于 Heartbeat,因为它没有“裂脑”这个问题, 它是以优先级这个机制来规避这个麻烦的。在 DR 模式中,lvs_sync_daemon_inteface 与服务接口 interface 使用同一个网络接口
    8> authentication:验证类型和验证密码。类型主要有 PASS、AH 两种,通常使用 PASS 类型,据说 AH 使用时有问题。验证密码为明文,同一 vrrp 实例 MASTER 与 BACKUP 使用相同的密码才能正常通信。
    9> smtp_alert:有故障时是否激活邮件通知
    10> nopreempt:禁止抢占服务。默认情况,当 MASTER 服务挂掉之后,BACKUP 自动升级为 MASTER 并接替它的任务,当 MASTER 服务恢复后,升级为 MASTER 的 BACKUP 服务又自动降为 BACKUP,把工作权交给原 MASTER。当配置了 nopreempt,MASTER 从挂掉到恢复,不再将服务抢占过来。
    11> virtual_ipaddress:虚拟 IP 地址池,可以有多个 IP,每个 IP 占一行,不需要指定子网掩码。注意:这个 IP 必须与我们的设定的 vip 保持一致。

虚拟服务器 virtual_server 定义块

  1. virtual_server:定义一个虚拟服务器,这个 ip 是 virtual_ipaddress 中定义的其中一个,后面一个空格,然后加上虚拟服务的端口号。
    1> delay_loop:健康检查时间间隔,单位:秒
    2> lb_algo:负载均衡调度算法,互联网应用常用方式为 wlc 或 rr
    3> lb_kind:负载均衡转发规则。包括 DR、NAT、TUN 3 种,一般使用路由(DR)转发规则。
    4> persistence_timeout:http 服务会话保持时间,单位:秒
    5> protocol:转发协议,分为 TCP 和 UDP 两种
  2. real_server:真实服务器 IP 和端口,可以定义多个
    1> weight:负载权重,值越大,转发的优先级越高
    2> notify_down:服务停止后执行的脚本
    3> TCP_CHECK:服务有效性检测
    * connect_port:服务连接端口
    * connect_timeout:服务连接超时时长,单位:秒
    * nb_get_retry:服务连接失败重试次数
    * delay_before_retry:重试连接间隔,单位:秒

《Keepalived 权威指南》下载见 http://www.linuxidc.com/Linux/2012-05/60951.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

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

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995194
文章搜索
热门文章
星哥带你玩飞牛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-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

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

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...

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

一言一句话
-「
手气不错
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...