CentOS下利用Keepalived实现双击热备且监听到端口

本文介绍如何使用 Keepalived 的 VRRP 功能搭建高可用集群。包括安装 Keepalived、配置 MASTER 和 BACKUP 服务器步骤,并通过监控 80 端口服务演示故障转移。

几年前试验过老版本的Keepalived实现VRRP的功能参考http://yang-min.iteye.com/admin/blogs/227534

 

最近同事需要此功能,然后就重新梳理一下,发现新版本的Keepalived功能强大多了..下面进行介绍:

1.安装Keepalived

拷贝安装文件到/var/opt目录下,其实位置无所谓.MASTER,BACKUP两台机器都需要拷贝.

 

文件名:keepalived-1.2.8.tar.gz

 

tar -zxf keepalived-1.2.8.tar.gz
cd keepalived-1.2.8

#yum -y install gcc kernel-headers kernel-devel openssl-devel

./configure --sysconfdir=/etc
make && make install

cp /usr/local/sbin/keepalived /usr/sbin/

 2.Master配置

 

vi /etc/keepalived/keepalived.conf
覆盖为如下内容:

! Configuration File for keepalived
global_defs {
   notification_email {
     5276494@qq.com
   }
   #notification_email_from 5276494@qq.com
   #smtp_server smtp.qq.com
   #smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_http_port {  
        script "</dev/tcp/127.0.0.1/80"
        interval 1
        weight -2
}


vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.101.110
    }
	track_script {
			chk_http_port
	}
}

 注:这的state MASTER ,priority(类似优先级MASTER>BACKUP) virtual_ipaddress 为虚拟地址 chk_http_port 中配置的为本机所需要监控的服务端口

然后启动MASTER服务器/etc/init.d/keepalived start

 

3.BACKUP配置,除priority属性不同小于MASTER设置的值之外其余相同

 

 

vi /etc/keepalived/keepalived.conf
文件内容如下:

! Configuration File for keepalived
global_defs {
   notification_email {
     5276494@qq.com
   }
   #notification_email_from 5276494@qq.com
   #smtp_server smtp.qq.com
   #smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_http_port {  
        script "</dev/tcp/127.0.0.1/80"
        interval 1
        weight -2
}


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.101.110
    }
    track_script {
        chk_http_port
    }
}

 

 

注:在BACKUP的keepalived.conf文件中state属性仍然是MASTER此种是根据priority设置的值进行区分MASTER和BACKUP,否则无法进行端口服务的监听.

然后启动BACKUP服务器/etc/init.d/keepalived start

 

 

然后可以进行测试了....

测试方案:这里的配置的虚拟ip:192.168.101.110 一直访问这个ip对应的应用,关闭MASTER机器上的80端口的服务,

则自动切换到BACKUP对于的80服务,启动MASTER的服务则又会自动切换到MASTER机器所在的服务.

<think>嗯,用户想配置Keepalived实现双机,需要详细的配置教程。从引用内容看,用户应该是在Linux环境下操作,特别是CentOS 7系统,因为引用[1]提到使用yum安装keepalived和ipvsadm。用户可能是个系统管理员或运维工程师,正在搭建高可用环境。 用户的需求很明确,就是要双机的配置步骤。不过引用中提到的配置比较零散,需要整合成完整流程。引用[1][4]都提到yum安装和开机启动,引用[2]提到Nginx配合的示例,引用[3]则提到LVS扩展可能性。这些都需要有机融合进教程。 考虑到用户是实操需求,教程必须包含:1) 基础环境准 2) 软件安装 3) 主配置文件差异 4) 服务启动验证 5) 故障切换测试。特别要注意VRRP配置部分,这是的核心,虚拟IP和优先级设置不能出错。 用户可能遇到的坑包括:防火墙阻塞VRRP协议、网卡名称不一致、SELinux限制等,这些需要在注意事项里强调。另外引用[2]提到健康检查配置很重要,但示例里没展开,应该补充Nginx健康检查的配置示例。 需要特别提醒权限问题,因为引用[1][4]都提到需要root权限操作。配置文件里的vrrp_instance区域要重点标注,主机的priority值和state模式是容易混淆的点。 最后考虑延伸问题设计:性能优化和LVS集成是引用[3]提到的进阶方向,可以作为扩展问题;故障排查则是运维刚需,必须包含。这样既解决当前需求,也预留技术延伸空间。</think>以下是基于CentOS 7的Keepalived双机配置教程,结合主服务器实现虚拟IP漂移: --- ### **一、环境准** | 角色 | IP地址 | 虚拟IP (VIP) | |------------|----------------|----------------| | **主服务器** | 172.16.16.173 | 172.16.16.172 | | **服务器** | 172.16.16.174 | 172.16.16.172 | > **注意**:确保两台服务器已关闭防火墙和SELinux: > ```bash > systemctl stop firewalld && systemctl disable firewalld > setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config > ``` --- ### **二、安装Keepalived** **两台服务器均执行**: ```bash yum install -y keepalived ipvsadm # ipvsadm用于LVS扩展(非必需) systemctl enable keepalived # 设置开机自启 ``` --- ### **三、配置Keepalived** #### **1. 主服务器配置** (`/etc/keepalived/keepalived.conf`) ```bash vrrp_instance VI_1 { state MASTER # 角色:MASTER interface ens33 # 网卡名(通过ip addr查看实际网卡) virtual_router_id 51 # 虚拟路由ID,主必须相同(0-255) priority 100 # 优先级(主>) advert_int 1 # 心跳间隔(秒) authentication { # 认证密码 auth_type PASS auth_pass 1111 # 主密码需一致 } virtual_ipaddress { # 虚拟IP配置 172.16.16.172/24 dev ens33 } } ``` #### **2. 服务器配置** (`/etc/keepalived/keepalived.conf`) ```bash vrrp_instance VI_1 { state BACKUP # 角色:BACKUP interface ens33 virtual_router_id 51 # 与主服务器一致 priority 90 # 优先级低于主节点 advert_int 1 authentication { auth_type PASS auth_pass 1111 # 与主服务器密码一致 } virtual_ipaddress { 172.16.16.172/24 dev ens33 } } ``` --- ### **四、启动服务与验证** ```bash systemctl start keepalived # 两台服务器均启动 ``` #### **验证步骤**: 1. **查看主服务器IP**: ```bash ip addr show ens33 # 应看到虚拟IP 172.16.16.172 ``` 2. **模拟主节点故障**: ```bash systemctl stop keepalived # 在主服务器执行 ``` 3. **检查服务器**: ```bash ip addr show ens33 # 服务器应接管虚拟IP 172.16.16.172 ``` --- ### **五、结合Nginx示例(可选)** 若需为Web服务提供高可用,在两台服务器安装Nginx: ```bash yum install -y nginx systemctl enable --now nginx ``` **测试**:访问虚拟IP `http://172.16.16.172`,主切换时服务应不间断。 --- ### **六、注意事项** 1. **网卡一致性**:`interface` 需配置实际网卡名(如`ens33`、`eth0`)。 2. **虚拟路由ID**:同一局域网内不同Keepalived组需使用不同ID。 3. **日志排查**:若故障切换失败,检查日志: ```bash journalctl -u keepalived -f ``` 4. **安全建议**:生产环境建议启用健康检查脚本,自动剔除故障节点[^2][^3]。 --- ### **相关问题** 1. **如何配置Keepalived的健康检查机制?** > 需编写自定义脚本检测服务状态,在`vrrp_script`中定义,并在`vrrp_instance`中调用[^2]。 2. **双机场景下,如何避免"脑裂"问题?** > 可通过多播检测、第三方仲裁或增强心跳信号机制解决[^3]。 3. **Keepalived如何与LVS集成实现负载均衡?** > 需在配置中添加`virtual_server`模块,定义后端真实服务器和调度算法[^1][^3]。 > 引用说明: > [^1]: 基础安装与双机原理 > [^2]: Nginx健康检查与安全配置建议 > [^3]: 脑裂防护与LVS集成方案
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值