Keepalived之MISC_CHECK方式检测

本文深入解析了Keepalived配置文件,详细讲解了其核心组件如全局配置、VRRP同步组、VRRP实例、虚拟服务器和真实服务器的配置,展示了如何通过配置实现高可用性的网络服务。通过理解配置文件中的关键参数和作用,读者能够掌握Keepalived在实际部署中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    ! Configuration File for keepalived   
    global_defs { #全局配置  
        notification_email {  
            xxxxxx@sina.com   #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。  
        }  
        notification_email_from keepalived@localhost  #设置邮件的发送地址  
        smtp_server 127.0.0.1                         #设置SMTP Server地址  
        smtp_connect_timeout 30                       #设置SMTP Server的超时时间  
        router_id LVS_DEVEL          #表示运行Keepalived服务器的一个标识。发邮件时显示大邮件主题中的信息  
    }    
      
    vrrp_sync_group VGM { #VRRP同步组设置:设置同步组可支持MASTER和BACKUP机器分别存在于内外网  
             group {  
                VI_CACHE         #VRRP实例定义  
            }   
    }    
    vrrp_instance VI_CACHE {    #VRRP实例配置  
         state MASTER           #指定Keepalived的角色,MASTER表示些主机是主服务器。BACKUP表示此主机是备用服务器   
         interface eth2         #指定HA监测网络的接口(查看网络接口用命令ip addr)  
         virtual_router_id 51   #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下MASTER与BACKUP必须是一致的  
         priority 100           #定义优先级,数字越大,优先级越高,一般主机高于备机  
         advert_int 1           #检查间隔,默认1秒  
         authentication {       #设置认证  
          auth_type PASS        #认证方式,支持PASS和AH  
          auth_pass 1111        #认证的密码  
         }   
        virtual_ipaddress {     #设置漂移地址(虚拟IP地址),可以设置多个漂移地址,每行一个  
             173.1.3.156      
        }   
    }   
       
    virtual_server 173.1.3.156 21 { #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开  
         delay_loop 6               #设置运行情况检查时间,单位为秒  
         lb_algo wlc                #设置负载调度算法,这里设置rr,即轮询算法  
         lb_kind DR                 #设置LVS实现负载均衡机制,有NAT、TUN、DR三个模式可选(简单说NAT支持任意OS但只支持20个负载,TUN只支持LINUX,DR支持LINUX/WINDOWS等,但只支持同一网段)  
         persistence_timeout 50     #会话保持单位时间,单位是秒  
         protocol TCP               #指定转发协议类型,有TCP和UDP两种   
       
            real_server 173.1.3.154 21 {#配置服务节点1,需要指定real server的真实IP地址和端口  
                weight 1                #配置服务节点的权值,权值数字越大,权值越高  
                MISC_CHECK {            #MISC健康检查方式,执行一个程序  
                    misc_path "/usr/local/bin/check_ftpget.pl -H 173.1.3.154 -u admin -p 123457"    #待执行的脚本  
                    misc_timeout 10     #脚本执行的超时时间  
                }  
            }   
            real_server 173.1.3.155 21 {#配置服务节点2,说明参考1,略  
                weight 1  
                MISC_CHECK {   
                        misc_path "/usr/local/bin/check_ftpget.pl -H 173.1.3.155 -u admin -p 123457"  
                         misc_timeout 10  
                 }       
            }   
    }  


<think>好的,我需要解决用户提到的Keepalived编译时出现的OPENSSL_init_ssl未定义错误。首先,我需要了解这个错误的原因。根据经验,这类问题通常与OpenSSL版本不兼容有关。用户可能在较新的OpenSSL版本(比如1.1.x或3.0)上编译旧版的Keepalived,而Keepalived的代码可能还在使用旧版的API函数,如SSL_library_init(),而新版本中这些函数已被废弃或替换为OPENSSL_init_ssl。 接下来,我应该考虑可能的解决方案。首先,检查Keepalived的版本是否过旧,是否支持新的OpenSSL。如果用户使用的是较旧的Keepalived版本,建议升级到最新版本,因为官方可能已经修复了这个问题。例如,Keepalived 2.2.0之后的版本可能已经适配了新的OpenSSL API。 如果升级不可行,另一个办法是降级系统安装的OpenSSL版本。但这种方法可能存在安全风险,不推荐生产环境使用。用户可能需要从源代码编译旧版OpenSSL,并指定Keepalived使用该版本。这涉及到配置编译时的路径参数,比如--with-openssl=/path/to/openssl。 此外,用户可能需要修改Keepalived的源代码,将旧的函数调用替换为新的。例如,将SSL_library_init()替换为OPENSSL_init_ssl(),并添加相应的初始化标志。这需要一定的编程知识,但可以参考OpenSSL的文档和Keepalived的社区讨论。 然后,我需要验证这些方法的有效性,确保步骤正确。例如,在升级Keepalived时,应指导用户如何正确下载和编译最新版本,或者在配置时指定正确的OpenSSL路径。同时,提醒用户在修改代码后重新运行autoconf和configure脚本,以确保配置更新。 最后,整理解决方案,分步骤说明,并提供相关命令示例。例如,给出具体的编译命令,配置选项,以及代码修改的位置。同时,注意用户可能不熟悉编译过程,需要步骤尽量详细,避免遗漏依赖项安装等环节。</think>### Keepalived中OPENSSL_init_ssl未定义问题的解决方案 此问题通常由**OpenSSL版本与Keepalived代码不兼容**导致。新版本OpenSSL(如1.1.x或3.0)移除了旧版API函数(如`SSL_library_init()`),而Keepalived若未适配新API则会出现`OPENSSL_init_ssl`未定义错误[^1]。 #### 分步解决方案 1. **升级Keepalived版本** - 最新版Keepalived(≥2.2.0)已适配OpenSSL新API ```bash wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz tar -zxvf keepalived-2.2.8.tar.gz cd keepalived-2.2.8 ./configure make && make install ``` 2. **指定旧版OpenSSL路径(临时方案)** - 若需强制使用旧版OpenSSL库: ```bash ./configure --with-openssl=/opt/openssl-1.0.2 ``` > 需先编译安装OpenSSL 1.0.2并指定路径 3. **代码级修改(开发者适用)** - 修改`keepalived/core/ssl.c`文件: ```c // 替换旧版初始化函数 // SSL_library_init(); OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); ``` - 重新生成配置: ```bash autoreconf -ivf ./configure ``` #### 验证配置 ```bash ldd /usr/local/sbin/keepalived | grep ssl ``` 应显示链接的OpenSSL库路径与预期版本一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值