美文网首页
Kubernetes:3.安装 Keepalived + Hap

Kubernetes:3.安装 Keepalived + Hap

作者: 小六的昵称已被使用 | 来源:发表于2019-08-12 15:20 被阅读0次

环境

[09:43:26 root@ceshi-01 ~ $]cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

[09:43:08 root@ceshi-01 ~ $]haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>

[09:43:55 root@ceshi-01 ~ $]keepalived -v
Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
Copyright(C) 2001-2017 Alexandre Cassen, <acassen@gmail.com>
Build options:  PIPE2 LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_PREF FRA_OIFNAME FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK LIBIPTC LIBIPSET_DYNAMIC LVS LIBIPVS_NETLINK VRRP VRRP_AUTH VRRP_VMAC SOCK_NONBLOCK SOCK_CLOEXEC FIB_ROUTING INET6_ADDR_GEN_MODE SNMP_V3_FOR_V2 SNMP SNMP_KEEPALIVED SNMP_CHECKER SNMP_RFC SNMP_RFCV2 SNMP_RFCV3 SO_MARK

第一步:安装并设置 Keepalived

1.安装

yum install -y ipvsadm keepalived

2.设置 Keepalived 配置文件

这里只需要修改 virtual_router_id、VIP 和验证密码即可

cat <<EOF >/etc/keepalived/keepalived.conf 
! Configuration File for keepalived

## 建议设置为主机名
global_defs {
    router_id `hostname`
}

vrrp_instance VI_1 {
    ## 以下两行设置为非抢占模式
    state BACKUP
    nopreempt
    interface ens192
    ## 建议设置为第一台服务器 IP 地址最后一位
    virtual_router_id 211
    ## 优先级
    priority 100
    advert_int 1
    ## 设置验证方式为密码验证
    authentication {
        auth_type PASS
        auth_pass 111112113
    }
    ## 虚拟 IP,可以绑定多个
    virtual_ipaddress {
        192.168.30.110
    }
}
EOF
cat /etc/keepalived/keepalived.conf

4.启动并设置开机自动启动

systemctl enable keepalived.service
systemctl stop keepalived.service
systemctl start keepalived.service
systemctl status keepalived.service

第二步:安装并设置 Haproxy

1.安装

yum install -y haproxy

2.配置文件

cat <<\EOF >/etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# 全局配置
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    user        haproxy
    group       haproxy
    ## 每个 haproxy 进程可接受的最大并发连接数
    maxconn     4000
    ## 设置为后台运行模式
    daemon
    ## 进程数,此参数要求运行运行模式为 daemon,默认启用一个进程。
    ## 一般来说该值的设置应小于服务器的 CPU 核数
    ## 创建多个进程,能减少每个进程的任务队列,但是过多的进程可能会导致进程的崩溃
    nbproc 4

    # turn on stats unix socket
    # stats socket /var/lib/haproxy/stats

frontend  main *:5000
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    ## 指定默认的后端服务器池
    default_backend             app

backend static
    ## 负载均衡算法
    ##  roundrobin  基于权重的轮询
    ##  static-rr   也只基于权重的轮训,不过此算法为静态方法,在运行时调整其服务器权重不会生效
    ##  source      基于源地址 hash
    ##  leastconn   最少连接,在会话时间较长的场景中推荐此算法,不适合会话较短的环境中(例如基于 HTTP 的应用)
    ##  uri         基于 URI hash
    ##  uri_param   基于 RUL 路径中的参数进行转发
    ##  hdr(<name>) 根据 http 头进行转发,如果指定的 http 头名称不存在,则使用 roundrobin 策略
    balance     roundrobin
    server      static 0.0.0.0:8443 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  k8s-01 192.168.30.111:6443 check port 6443 inter 5000
    server  k8s-02 192.168.30.112:6443 check port 6443 inter 5000
    server  k8s-03 192.168.30.113:6443 check port 6443 inter 5000
EOF

3.参考配置文件

https://www.cnblogs.com/cptao/p/10912644.html

cat <<\EOF >/etc/haproxy/haproxy.cfg
global
        chroot  /var/lib/haproxy
        daemon
        group haproxy
        user haproxy
        pidfile /var/lib/haproxy.pid
        maxconn 20000
        spread-checks 3
        nbproc 8

defaults
    ## 模式(tcp|http|health),tcp是4层,http是7层,health只会返回 OK
    ## tcp  在此模式下,客户端和服务器之间将简历一个全双工的连接,不会对7层报文做任何类型的检查,经常用于 SSL、SSH、SMTP等应用
    ## http 在此模式下,护短请求在转发至后端服务器之前会被深度分析,所有与 RFC 格式不兼容的请求都会被拒绝
    ## health   目前该模式基本已废弃
    mode                    tcp
    ## 集成 global 中的 log 定义
    log                     global
    ## 日志中不记录空链接。
    ## 官方文档中中提示:如果上游没有其他的负载均衡器的话,建议不要使用此参数,因为互联网上的恶意扫描或其他启动就不会被记录
    option                  dontlognull
    option http-server-close
    ## 当服务器故障时将会话重新分发到其他健康的服务器上,当原来恢复时,会话又被定向到已恢复的服务器上
    option                  redispatch
    ## 3次连接失败就认为服务不可用,也可以通过后面设置
    retries                 3
    ## http 请求超时 
    timeout http-request    10s
    ## 请求超时
    timeout queue           1m
    ## 连接超时
    timeout connect         10s
    ## 客户端超时
    timeout client          1m
    ## 服务器超时
    timeout server          1m
    timeout http-keep-alive 10s
    ## 心跳检测超时
    timeout check           10s
    ## 最大连接
    maxconn                 3000

listen https-apiserver
        bind 0.0.0.0:8443
        mode tcp
        balance roundrobin
        timeout server 900s
        timeout connect 15s

        server k8s-01 192.168.30.111:6443 check port 6443 inter 5000 fall 5
        server k8s-02 192.168.30.112:6443 check port 6443 inter 5000 fall 5
        server k8s-03 192.168.30.113:6443 check port 6443 inter 5000 fall 5
EOF

4.启动服务

systemctl enable haproxy.service
systemctl stop haproxy.service
systemctl start haproxy.service
systemctl status haproxy.service

相关文章

网友评论

      本文标题:Kubernetes:3.安装 Keepalived + Hap

      本文链接:https://www.haomeiwen.com/subject/oojujctx.html