A crazy guy

容器下快速部署HAProxy

HAProxy

在阿里云部署了Kubernetes集群,购买了SLB用于API负载均衡。阿里云的SLB负载均衡不支持ECS即当服务器端又当客户端,这会造成我们的Master节点在访问API时恰好回路到原节点会出现timeout情况。这种情况下只能Worker节点使用SLB转发到API,而Master节点最省事的方式就是在每个节点上自建一套HAProxy负载均衡到其余Master节点。

而采用容器化Docker方式快速部署HAProxy非常非常容易

首先新建一个目录供HAProxy使用

mkdir /etc/haproxy

接着,新建一个配置文件

vim /etc/haproxy/haproxy.cfg

复制一下内容到/etc/haproxy/haproxy.cfg文件中

global
 log 127.0.0.1 local0 err
 maxconn 50000
 uid 99
 gid 99
 #daemon
 nbproc 1
 pidfile haproxy.pid

defaults
 mode http
 log 127.0.0.1 local0
 maxconn 50000
 retries 3
 timeout connect 5s
 timeout client 30s
 timeout server 30s
 timeout check 2s

frontend k8s-api
 bind *:8443
 mode tcp
 default_backend k8s-api

backend k8s-api
 mode tcp
 balance roundrobin
 server node4 172.16.7.120:6443 weight 1 minconn 100 maxconn 50000 check inter 5000 rise 2 fall 5
 server node5 172.16.7.118:6443 weight 2 minconn 100 maxconn 50000 check inter 5000 rise 2 fall 5
 server node6 172.16.7.121:6443 weight 3 minconn 100 maxconn 50000 check inter 5000 rise 2 fall 5

以上配置请根据自己的实际情况配置,尤其是监听端口号以及balance的算法,我以上配置使用的是加权算法,HAProxy还支持很多算法。

最后,我们只需要一条命令就可以启动HAProxy

docker run -d --name k8s-api-haproxy -v /etc/haproxy:/usr/local/etc/haproxy:ro -p 8443:8443 --restart always haproxy:2.0.13-alpine

以上的--restart always选项用于容器进程挂掉,或者及其宿主机重启等任何非Runnig/Up状态时会自动重启。

分享

TITLE: 容器下快速部署HAProxy

LINK: https://www.qttc.net/514-container-quickly-deploy-haproxy.html

NOTE: 原创内容,转载请注明出自琼台博客