• Keepalived 配置文件


    keepalived的配置文件:

    keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是
    global_defs、              全局定义及故障时默认邮件发送 参数
    static_ipaddress、    设置本节点的IP              如果你的机器上已经配置了IP和路由,那么这两个区域可以不用配置
    static_routes、          设置本节点路由信息       如果你的机器上已经配置了IP和路由,那么这两个区域可以不用配置
    vrrp_script、              用来做健康检查,检查失败时会将vrrp_instance的priority减少相应的值。

    vrrp_instance             用来定义对外提供服务的VIP区域及其相关属性
    virtual_server         

    global_defs {
    notification_email             发生诸如切换操作时发送email通知邮件地址 可以多个每行一个
    {
    admin@example.com
    }
    notification_email_from admin@example.com    发送通知邮件 源地址
    smtp_server 127.0.0.1                                            smtp服务器地址
    stmp_connect_timeout 30                                      smtp连接超时时间
    router_id node1                                                      机器标识 主要用于通知中
    }

    静态地址和路由配置 (正常不用配置)
    static_ipaddress {
         10.210.214.163/24 brd 10.210.214.255 dev eth0                 静态ip配置,这里实际上和系统里面命令配置IP地址和路由一样
    ...}
    static_routes {
         10.0.0.0/8 via 10.210.214.1 dev eth0                                    静态路由配置
    ...}
    以上分别表示启动/关闭keepalived时在本机执行的如下命令:

    # /sbin/ip addr add 10.210.214.163/24 brd 10.210.214.255 dev eth0
    # /sbin/ip route add 10.0.0.0/8 via 10.210.214.1 dev eth0
    # /sbin/ip addr del 10.210.214.163/24 brd 10.210.214.255 dev eth0
    # /sbin/ip route del 10.0.0.0/8 via 10.210.214.1 dev eth0
    注意: 请忽略这两个区域,一般这个区域不需要配置,机器肯定已经配置了IP和路由。

     

    VRRPD配置:

    VRRPD配置包括三个类

    VRRP实例(VRRP Instance)

    VRRP同步组(synchroization group)

    VRRP脚本

     

    1.VRRP实例(instance)

    vrrp_instance http {
    state MASTER       实例初始状态(还要根据priority值确定)可以是MASTER 或 BACKUP
    interface eth0          实例节点固有IP(非VIP)的网卡,用来发VRRP包
    dont_track_primary      忽略VRRP网卡错误。(默认未设置)
    track_interface {            监控以下网卡,如果任何一个不通就会切换到故障FALT状态。(可选项)
    eth0 eth1
    }
    mcast_src_ip   <IPADDR>        vrrp组播包的源地址,默认源地址为master的IP 这里相当于heartbeat的心跳端口
                                                          如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址
    garp_master_delay 10              当切换为Master状态后多久更新ARP缓存
    virtual_router_id 51            虚拟路由标识即VRID 相同的VRID为一个组 他将决定多播的MAC地址
    priority 100                          定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER 的优先级必须大于BACKUP。
                                                  这个选项的值最好高于其他机器50个点,该项范围是1-255
    advert_int 1             检查间隔默认为1秒

    authentication {       设置认证
    auth_type PASS               认证方式可以是PASS或AH两种认证方式
    autp_pass 1234                认证密码
    }


    virtual_ipaddress {            设置虚拟IP 可以设置多个
    #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL>
    192.168.200.17/24 dev eth1
    192.168.200.18/24 dev eth2 label eth2:1
    }

    设置虚拟路由的地方
    virtual_routes {
    # src <IPADDR> [to] <IPADDR>/<MASK> via|gw <IPADDR> dev <STRING> scope <SCOPE> tab
    src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
    192.168.110.0/24 via 192.168.200.254 dev eth1
    192.168.111.0/24 dev eth2
    192.168.112.0/24 via 192.168.100.254
    }

    track_script {
    check_running weight 20        vrrp监控脚本名称(脚本定义在后边)  权重
    }

    nopreempt                设置不抢占,如设置,则state的状态要为backup
                                       而且这个节点的优先级必须别另外的高。当主MASTER恢复后不抢占资源
    preemtp_delay 300          抢占延迟 master启动多久之后进行接管资源(VIP/Route信息等)
    debug                        debug级别
    }

    注意事项: 设置state为 双备原理
    通常如果master服务死掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP.
    这样就会发生两次切换对业务繁忙的网站来说是不好的。 
    所以我们要在配置文件加入 nopreempt 非抢占 参数,但是这个参数只能用于state 为backup,
    故我们在用HA的时候最好master 和backup的state都设置成backup 让其通过priority来竞争。 
     这样加上nopreempt的时候,即使master又好了,依旧不会切换 。 
        state   nopreempt  priority
     主机  backup  设置  100
     从机  backup  不设置  50

     

    vrrp_script check_running {

    script “/usr/local/bin/check_running”       程序位置
    interval 10                                                 脚本 执行间隔
    weight 10                                   脚本结果导致的优先级变更:10表示优先级+10;-10则表示优先级-10
    }

      • 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
      • 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
      • 其他情况,原本配置的优先级不变,即配置文件中priority对应的值。



    VRRP同步组(synchroization group)配置

    定义vrrp_intance组,使得这个组内成员动作一致。

    例如两个vrrp_instance同属于一个vrrp_rsync_group,
    那么其中一个vrrp_instance发生故障切换时,另一个vrrp_instance也会跟着切换(即使这个instance没有发生故障)。

    vrrp_sync_group VG_1 {
    group { 
      http 
      mysql 

    notify_master /path/to/to_master.sh      表示当切换到master状态时要执行的脚本
    notify_backup /path_to/to_backup.sh   表示当切换到backup状态时要执行的脚本
    notify_fault "/path/fault.sh VG_1"      表示出错状态时要执行的脚本
    notify /path/to/notify.sh                       表示任何状态切换时都调用该脚本,该脚本在以上三个脚本执行完成之后进行调用
    smtp_alert                                          表示切换时给global defs中定义的邮件地址发送邮件通知
    }

     

    virtual_server_group和virtual_server区域

    virtual_server_group一般在超大型的LVS中用到,一般LVS用不过这东西,因此不多说。

    virtual_server IP Port {
        delay_loop <INT>
        lb_algo rr|wrr|lc|wlc|lblc|sh|dh
        lb_kind NAT|DR|TUN
        persistence_timeout <INT>
        persistence_granularity <NETMASK>
        protocol TCP
        ha_suspend
        virtualhost <STRING>
        alpha
        omega
        quorum <INT>
        hysteresis <INT>
        quorum_up <STRING>|<QUOTED-STRING>
        quorum_down <STRING>|<QUOTED-STRING>
        sorry_server <IPADDR> <PORT>
        real_server <IPADDR> <PORT> {
            weight <INT>
            inhibit_on_failure
            notify_up <STRING>|<QUOTED-STRING>
            notify_down <STRING>|<QUOTED-STRING>
            # HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
            HTTP_GET|SSL_GET {
                url {
                    path <STRING>
                    # Digest computed with genhash
                    digest <STRING>
                    status_code <INT>
                }
                connect_port <PORT>
                connect_timeout <INT>
                nb_get_retry <INT>
                delay_before_retry <INT>
            }
        }
    }

     

     

  • 相关阅读:
    20165105 学习基础和C语言基础调查
    2017-2018网络攻防第四周作业
    2017-2018-2 20165233 实验三 敏捷开发与XP实践
    20165233 2017-2018-2 《Java程序设计》第九周学习总结
    Linux学习笔记(一)
    第三周学习总结
    数据结构C++,线性表学习
    uname()系统调用学习
    cd
    go连接数据库并执行文件中的sql语句
  • 原文地址:https://www.cnblogs.com/centos2017/p/8158160.html
Copyright © 2020-2023  润新知