Keepalive配置说明

配置文件

[root@lb01 keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
       admin@163.com      #配置收件人邮箱地址
   }
   notification_email_from keepalived@qq.com      #配置发件人邮箱地址,注:不支持需要smtp验证的发件服务器   
   smtp_server 84.17.184.248    #smtp服务器必需是IP地址不能使用域名,如:smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script check_sta {    #定义检测脚本
   script "/etc/keepalived/keepalived.sh"|"pidof nginx"  #当脚本或命令的返回值为0时表示检测失败,非0表示检测通过。脚本的返回值用exit命令控制
   interval 5     #每5s检测一次
   weight -20     #脚本返回值为0时,keepalive优先级减20
   fall 3         #判定服务异常的检查次数
   rise 2         #判定服务正常的检查次数
}

vrrp_instance VI_39.5 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1   ##检查间隔,默认1s,VRRP心跳包的发送周期,组播信息发送间隔,两个节点设置必须一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.47.39.4
    }
    track_script {
        check_sta   #调用检测脚本
    }
    smtp_alert    #启用keepalive状态切换邮件通知功能
    nopreempt
    notify_master /etc/keepalived/to_master.sh       #keepalive状态切换为主时执行to_master.sh脚本
    notify_backup /etc/keepalived/to_backup.sh       #keepalive状态切换为备时执行to_backup.sh脚本
    notify_fault  /etc/keepalived/to_fault.sh        #keepalive状态失败时执行to_fault.sh脚本
}

Keepalived lvs配置,virtual_server:定义虚拟IP(VIP)和端口,客户端请求集中在此。real_server:实际的后端服务机器,监控其健康状态,以决策是否将流量切换到它们

virtual_server 10.47.39.4 80 {
    delay_loop 6  # 健康检查时间间隔(实际并不一定完全是6秒,测试结果是小于6秒的随机值?)
    lb_algo rr    # lvs调度算法(rr:轮询|wrr:加权轮询|lc:最少连接|wlc:加权最少连接|lblc:基于连接数和带宽的调度|sh:源地址哈希|dh:目标地址哈希)
    lb_kind DR    # 负载均衡转发规则NAT|DR|RUN
    persistence_timeout 5   # 会话保持时间
    protocol TCP            # 使用的协议
    persistence_granularity <NETMASK>    # lvs会话保持粒度
    virtualhost <string>                 # 检查的web服务器的虚拟主机(host:头)   
    sorry_server <IPADDR> <port>         # 备用机,所有realserver失效后启用
    real_server 10.47.39.5 8080 {
        weight 1              # 默认为1,0为失效
        inhibit_on_failure    # 在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除
        notify_up <string> | <quoted-string>    # 在检测到server up后执行脚本
        notify_down <string> | <quoted-string>  # 在检测到server down后执行脚本
    # HTTP服务状态检测
    HTTP_GET或SSL_GET {
        url {
            path /index.html        # 检测url,可写多个
            digest  24326582a86bee478bac72d5af25089e    # 检测效验码
            # digest效验码获取方法:genhash -s IP -p 80 -u http://IP/index.html 
            status_code 200         # 检测返回http状态码
        }
        connect_port 8080       # 连接端口
        connect_timeout 3       # 连接超时时间
        nb_get_retry 3          # 重试次数
        delay_before_retry 2    # 连接间隔时间
    }
    # TCP端口状态检测(使用TCP端口服务基本上都可以使用)
    TCP_CHECK {
        connect_port 8080     # 健康检测端口,默认为real_server后跟的端口
        connect_timeout 5
        nb_get_retry 3
        delay_before_retry 3
    }
    # 邮件服务器SMTP检测
    SMTP_CHECK {            # 健康检测邮件服务器smtp
        host {
            connect_ip 192.168.1.100   # SMTP服务器IP
            connect_port 25
        }
        bindto 192.168.1.50   # 指定本机绑定的IP地址
        connect_timeout 5
        retry 2
        delay_before_retry 3
        hello_name "mail.domain.com"  # SMTP客户端问候名,通常设置为邮件域名,可选
    }
    # 用户自定义脚本检测real_server服务状态
    MISC_CHECK {
        misc_path /script.sh  # 指定外部程序或脚本位置
        misc_timeout 3        # 执行脚本超时时间
        !misc_dynamic         # 不动态调整服务器权重(weight),如果启用将通过退出状态码动态调整real_server权重值
        }
    }
}

参考链接:
           https://www.cnblogs.com/cutemsyu/p/6019420.html
           https://www.jianshu.com/p/b050d8861fc1
           https://blog.csdn.net/wzyzzu/article/details/50787042           # keepalived 各配置项和术语说明
           https://www.cnblogs.com/pangguoping/p/5721517.html       # keepalived vip漂移基本原理及选举算法
           https://www.cnblogs.com/Sinte-Beuve/p/13392747.html       # LVS+Keepalived 实现高可用负载均衡

posted @ 2018-12-19 16:25  風£飛  阅读(542)  评论(0)    收藏  举报