百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Centos7系统部署keeplived详细教程

wptr33 2024-12-10 21:21 13 浏览

CentOS 7系统中,Keepalived是一款用于实现高可用性负载均衡的强大工具。通过部署Keepalived,可以有效地管理网络流量,实现故障切换,确保服务的连续性和稳定性。本文将详细介绍如何在CentOS 7系统上部署Keepalived,包括安装、配置、启动及验证等步骤,并配以实例说明,帮助您全面掌握这一工具的使用方法。


1. 安装Keepalived

首先,需要在CentOS 7系统上安装Keepalived。可以使用yum包管理工具进行安装。

安装命令:

sudo yum install keepalived

解释:

  • sudo:以超级用户权限执行命令。
  • yum install keepalived:使用yum包管理器安装Keepalived软件包。

安装完成后,可以通过以下命令验证安装是否成功:

keepalived -v

此命令将显示Keepalived的版本信息,确认安装无误。


?2. 配置Keepalived

安装完成后,需要对Keepalived进行配置,以实现负载均衡和故障切换功能。配置文件通常位于 /etc/keepalived/keepalived.conf。

2.1 编辑配置文件

使用文本编辑器打开配置文件:

sudo nano /etc/keepalived/keepalived.conf

2.2 示例配置

以下是一个基本的Keepalived配置示例:

global_defs {
    router_id LVS_DEVEL
}

vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 3
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.0.100
    }

    track_script {
        check_nginx
    }
}

配置说明:

  • global_defs
    • router_id LVS_DEVEL:定义一个唯一的路由器ID,用于区分不同的Keepalived实例。
  • vrrp_script
    • check_nginx:定义一个脚本,用于检查Nginx服务的状态。
    • script "/etc/keepalived/check_nginx.sh":指定检查脚本的路径。
    • interval 3:每3秒执行一次检查脚本。
  • vrrp_instance VI_1
    • state MASTER:定义当前节点为主节点(MASTER)。
    • interface eth0:指定用于VRRP的网络接口。
    • virtual_router_id 51:虚拟路由器ID,必须在同一子网内唯一。
    • priority 100:优先级,数值越高优先级越高,主节点优先级应高于备节点。
    • advert_int 1:广告发送间隔,单位为秒。
    • authentication:auth_type PASS:认证类型为密码。auth_pass 1111:认证密码,确保主备节点配置一致。
    • virtual_ipaddress:192.168.0.100:定义虚拟IP地址,用于服务的高可用。
    • track_script:check_nginx:关联前面定义的检查脚本,确保Nginx服务正常。

3. 创建检查脚本

根据配置文件中指定的脚本路径,创建一个用于检查Nginx服务状态的脚本。

创建脚本:

sudo nano /etc/keepalived/check_nginx.sh

脚本内容:

#!/bin/bash

if systemctl is-active --quiet nginx; then
    exit 0
else
    exit 1
fi

解释:

  • #!/bin/bash:指定脚本使用的解释器。
  • systemctl is-active --quiet nginx:检查Nginx服务是否处于活动状态。
  • exit 0:如果Nginx正在运行,脚本以成功状态退出。
  • exit 1:如果Nginx未运行,脚本以失败状态退出。

设置脚本权限:

sudo chmod +x /etc/keepalived/check_nginx.sh

确保脚本具有可执行权限。


4. 启动Keepalived服务

配置完成后,需要启动Keepalived服务并设置为开机自启动。

启动服务:

sudo systemctl start keepalived

设置开机自启:

sudo systemctl enable keepalived

解释:

  • sudo systemctl start keepalived:启动Keepalived服务。
  • sudo systemctl enable keepalived:设置Keepalived服务在系统启动时自动启动。

5. 检查服务状态

确保Keepalived服务已成功启动并正常运行。

检查命令:

sudo systemctl status keepalived

示例输出:

● keepalived.service - Keepalive Daemon (LVS and VRRP)
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-04-27 10:00:00 UTC; 1min 30s ago
     Docs: man:keepalived(8)
 Main PID: 1234 (keepalived)
   CGroup: /system.slice/keepalived.service
           └─1234 /usr/sbin/keepalived -n

解释:

  • Active: active (running):表示Keepalived服务正在运行。
  • Main PID: 1234:显示Keepalived进程的PID。

6. 配置防火墙

为了确保VRRP协议能够正常工作,需要在防火墙中开放相关端口。

开放VRRP端口(默认是112):

sudo firewall-cmd --permanent --add-port=112/udp
sudo firewall-cmd --reload

解释:

  • --permanent:永久添加防火墙规则。
  • --add-port=112/udp:开放UDP协议的112端口,用于VRRP通信。
  • --reload:重新加载防火墙规则,使更改生效。

7. 验证高可用性配置

完成上述配置后,需要验证Keepalived是否实现了高可用性。

7.1 检查虚拟IP地址

在主节点上执行以下命令,确认虚拟IP是否已添加:

ip addr show eth0

示例输出:

inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0:1

显示虚拟IP 192.168.0.100 已成功添加到网络接口。

7.2 模拟故障切换

在主节点上停止Nginx服务,观察备节点是否接管虚拟IP。

停止Nginx服务:

sudo systemctl stop nginx

在备节点上检查虚拟IP:

ip addr show eth0

应显示备节点已接管虚拟IP 192.168.0.100。

重新启动Nginx服务:

sudo systemctl start nginx

验证主节点是否恢复接管虚拟IP。


?8. 增强安全性(可选)

为了提高配置的安全性,可以启用认证机制,确保VRRP通信的安全。

修改配置文件中的认证部分:

authentication {
    auth_type PASS
    auth_pass 1111
}

解释:

  • auth_type PASS:使用密码认证类型。
  • auth_pass 1111:设置认证密码,主备节点需使用相同密码。

工作流程概述

  1. 安装Keepalived:使用yum包管理器在CentOS 7上安装Keepalived。
  2. 配置Keepalived:编辑 keepalived.conf文件,设置全局定义、VRRP实例和检查脚本。
  3. 创建检查脚本:编写用于监控服务状态的脚本,并赋予执行权限。
  4. 启动服务:启动Keepalived服务并设置为开机自启。
  5. 配置防火墙:开放VRRP所需的端口,确保节点间通信正常。
  6. 验证配置:通过检查虚拟IP和模拟故障切换,确保高可用性配置生效。
  7. 增强安全性:根据需求,配置认证机制,提升通信安全。

?总结

通过本文的详细步骤,您已经掌握了在CentOS 7系统上部署Keepalived的完整流程。从安装、配置到验证,每一步都进行了详细解释,确保您能够顺利实现高可用性负载均衡的目标。Keepalived不仅提升了系统的可靠性,还通过自动故障切换机制,确保了服务的连续性和稳定性。

在实际应用中,您可以根据具体需求,进一步优化Keepalived的配置,例如配置更多的VRRP实例、集成其他监控脚本或与负载均衡器结合使用。持续学习和实践,将帮助您在系统管理和网络配置方面不断提升专业能力,构建更加稳健和高效的IT基础设施。

相关推荐

每天一个编程技巧!掌握这7个神技,代码效率飙升200%

“同事6点下班,你却为改BUG加班到凌晨?不是你不努力,而是没掌握‘偷懒’的艺术!本文揭秘谷歌工程师私藏的7个编程神技,每天1分钟,让你的代码从‘能用’变‘逆天’。文末附《Python高效代码模板》,...

Git重置到某个历史节点(Sourcetree工具)

前言Sourcetree回滚提交和重置当前分支到此次提交的区别?回滚提交是指将改动的代码提交到本地仓库,但未推送到远端仓库的时候。...

git工作区、暂存区、本地仓库、远程仓库的区别和联系

很多程序员天天写代码,提交代码,拉取代码,对git操作非常熟练,但是对git的原理并不甚了解,借助豆包AI,写个文章总结一下。Git的四个核心区域(工作区、暂存区、本地仓库、远程仓库)是版本控制的核...

解锁人生新剧本的密钥:学会让往事退场

开篇:敦煌莫高窟的千年启示在莫高窟321窟的《降魔变》壁画前,讲解员指着斑驳色彩说:"画师刻意保留了历代修补痕迹,因为真正的传承不是定格,而是流动。"就像我们的人生剧本,精彩章节永远...

Reset local repository branch to be just like remote repository HEAD

技术背景在使用Git进行版本控制时,有时会遇到本地分支与远程分支不一致的情况。可能是因为误操作、多人协作时远程分支被更新等原因。这时就需要将本地分支重置为与远程分支的...

Git恢复至之前版本(git恢复到pull之前的版本)

让程序回到提交前的样子:两种解决方法:回退(reset)、反做(revert)方法一:gitreset...

如何将文件重置或回退到特定版本(怎么让文件回到初始状态)

技术背景在使用Git进行版本控制时,经常会遇到需要将文件回退到特定版本的情况。可能是因为当前版本出现了错误,或者想要恢复到之前某个稳定的版本。Git提供了多种方式来实现这一需求。...

git如何正确回滚代码(git命令回滚代码)

方法一,删除远程分支再提交①首先两步保证当前工作区是干净的,并且和远程分支代码一致$gitcocurrentBranch$gitpullorigincurrentBranch$gi...

[git]撤销的相关命令:reset、revert、checkout

基本概念如果不清晰上面的四个概念,请查看廖老师的git教程这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我的修改存起来。后来用多了,也就明白了为什么。gi...

利用shell脚本将Mysql错误日志保存到数据库中

说明:利用shell脚本将MYSQL的错误日志提取并保存到数据库中步骤:1)创建数据库,创建表CreatedatabaseMysqlCenter;UseMysqlCenter;CREATET...

MySQL 9.3 引入增强的JavaScript支持

MySQL,这一广泛采用的开源关系型数据库管理系统(RDBMS),发布了其9.x系列的第三个更新版本——9.3版,带来了多项新功能。...

python 连接 mysql 数据库(python连接MySQL数据库案例)

用PyMySQL包来连接Python和MySQL。在使用前需要先通过pip来安装PyMySQL包:在windows系统中打开cmd,输入pipinstallPyMySQL ...

mysql导入导出命令(mysql 导入命令)

mysql导入导出命令mysqldump命令的输入是在bin目录下.1.导出整个数据库  mysqldump-u用户名-p数据库名>导出的文件名  mysqldump-uw...

MySQL-SQL介绍(mysql sqlyog)

介绍结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同...

MySQL 误删除数据恢复全攻略:基于 Binlog 的实战指南

在MySQL的世界里,二进制日志(Binlog)就是我们的"时光机"。它默默记录着数据库的每一个重要变更,就像一位忠实的史官,为我们在数据灾难中提供最后的救命稻草。本文将带您深入掌握如...