keepalived 基本使用手册

109 阅读3分钟

Keepalived

编译安装

下载安装包 从keepalived官网或者github下载安装包,官网下载地址:www.keepalived.org/download.ht…

# 编译安装
tar -zxvf keepalived.tar.gz
cd keepalived
./configure --prefix=/usr/local/keepalived --sysconf=/etc
make && make install
# 注册服务
cd keepalived/etc && cp init.d/keepalived /etc/init.d/ && cp sysconfig/keepalived /etc/sysconfig/
systemctl daemon-reload

配置文件

keepalived的配置为/etc/keepalived/keepalived,完整的keepalived配置主要包含三大块。

  • 全局定义块是必配置项。
  • VRRP 实例定义块主要用于虚拟路由节点定义。
  • 虚拟服务器定义块用于健康监测、流量分发(作用类似于 F5 或者 nginx),与 nginx 等反向代理服务的区别是,keepalived 用于四层流量分发,nginx 做七层负载,能够制定更为灵活的正则表达式规则。如果 keepalived 只是用于 HA 高可用,则虚拟服务器定义块是可配置项。
! Configuration File for keepalived
  #全局定义块
  global_defs {
     ...
  }

  #VRRP 实例定义块
  vrrp_instance VI_1 {
     ...
  }

  #虚拟服务器定义块
  virtual_server 10.10.10.2 1358 {
    ...
  }
! Configuration File for keepalived

global_defs {                        
      notification_email {		         # 邮箱服务器,服务故障时执行邮件报警,不建议使用
      xxx@gmail.com
   }
   notification_email_from xxx@gmail.com    # 发件人,可选配置
   smtp_server 192.168.200.1                # smtp服务器地址,可选配置
   smtp_connect_timeout 30                  # 连接smtp的超时时间,可选配置
   router_id LVS_DEVEL                      # 用户标识本节点的名称,通常配置为主机名
   vrrp_skip_check_adv_addr                 # 所有报文都检查比较消耗性能,此配置为如果当前报文和上一条报文是同一路由器发送,则跳过此次报文中的源地址
   vrrp_strict                              # 严格遵守VRRP协议,不允许出现情况:1.没有VIP虚拟地址;2.配置了单播邻居;3.在VRRP版本2中有IPv6地址
   vrrp_garp_interval 0                     # ARP报文发送延迟时间   
   vrrp_gna_interval 0                      # ARP消息发送延迟时间   
}

vrrp_instance VI_1 {                        # 定义VRRP实例名(VT_1),建议默认配置
    state MASTER                            # 当前节点的主备初始状态,一般情况给BACKUP,因为初始状态最终是由两个节点的priority比较决定
    interface ens33                         # 绑定虚拟路由器使用的物理接口,在当前节点的可用网卡中选择
    virtual_router_id 51                    # 虚拟路由id,唯一标识,主备节点该值相同,0~255
    priority 100                            # 节点初始优先级,不同节点该值不同,节点间选举主备依靠priority+weight进行,weight根据节点当前状态变化,priority值域:0~255
    advert_int 1                             # vrrp通告优先级时间间隔
    authentication {                         # 认证机制
        auth_type PASS                       # AH(不推荐)或PASS
        auth_pass xxx                       # 预共享密钥,前8位有效,同一虚拟路由器下的多个keepalived节点必须一致
    }
    virtual_ipaddress {                      # 虚拟IP,可配置多个VIP,按如下格式配置
        192.168.200.16                       # 指定VIP,不指定网卡和掩码,默认为eth0和32位掩码
        192.168.200.17/24 eth1               # 指定VIP,指定网卡eth1,掩码24位
        192.168.200.18/24 eth2 label eth2:1  # 指定VIP,指定网卡eth2,掩码24位,label位eth2:1
    }
}
global_defs {
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface ens33
    virtual_router_id 80
    mcast_src_ip 192.168.77.129
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass xxxx
    }
    virtual_ipaddress {
        192.168.77.77
    }
}
virtual_server 192.168.77.77 6443 {
    delay_loop 6
    lb_algo loadbalance
    lb_kind DR
    net_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 192.168.77.129 6443 {
        weight 1
        SSL_GET {
            url {
              path /healthz
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.77.130 6443 {
        weight 1
        SSL_GET {
            url {
              path /healthz
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.123.131 6443 {
        weight 1
        SSL_GET {
            url {
              path /healthz
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}