Docker安装HaProxy

默认自己已经会用 Docker 并且已经使用了国内源。

HaProxy 是一个免费的,开源的高可用性/服务器解决方案,通过跨多个服务器分发请求,为 TCP 和基于 http 的应用程序提供负载平衡和代理。它是用 c 语言编写的,以快速和高效(在处理器和内存使用方面)著称。

HaProxy

一、镜像安装

查找镜像

1
docker search haproxy

获取镜像

1
docker pull haproxy

二、使用镜像

创建一个Dockerfile

haproxy.cfg是本地的配置文件,后面 /usr/local/etc/haproxy/haproxy.cfg 是目标位置,在运行容器时,使用当前配置

1
2
FROM haproxy:latest
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

创建容器

1
docker build -t custom-haproxy .

测试配置文件

1
docker run -it --rm --name haproxy-syntax-check custom-haproxy haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg

成功后会返回

1
Configuration file is valid

运行容器

1
docker run -d --name my-haproxy --sysctl net.ipv4.ip_unprivileged_port_start=0 custom-haproxy
进入容器使用文件
1
2
3
4
#进入docker-haproxy服务
docker exec -it haproxy-syntax-check /bin/bash
#启用配置文件(启用完配置文件才算是真的启动了haproxy服务)
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

通过绑定挂载

1
docker run -d --name my-running-haproxy -v D:\develop\docker\haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 haproxy:latest
重新加载配置命令
1
docker kill -s HUP my-haproxy

Keepalived

keepalived需要在服务器内部创建,首先进入容器安装 keepalived

一、安装

1
docker exec -it my-haproxy /bin/bash

haproxy.cfg 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#全局配置
global
#设置日志
log 127.0.0.1 local0 info
#当前工作目录
chroot /usr/local/haproxy
#用户与用户组
user haproxy
group haproxy
#运行进程ID
uid 99
gid 99
#守护进程启动
daemon
#最大连接数
maxconn 4096

#默认配置
defaults
#应用全局的日志配置
log global
#默认的模式mode {tcp|http|health}
#TCP是4层,HTTP是7层,health只返回OK
mode tcp
#日志类别tcplog
option tcplog
#不记录健康检查日志信息
option dontlognull
#3次失败则认为服务不可用
retries 3
#每个进程可用的最大连接数
maxconn 2000
#连接超时
timeout connect 5s
#客户端超时
timeout client 120s
#服务端超时
timeout server 120s

#绑定配置
listen rabbitmq_cluster
bind 0.0.0.0:5671
#配置TCP模式
mode tcp
#简单的轮询
balance roundrobin
#RabbitMQ集群节点配置
server rmq_node1 10.110.8.34:5672 check inter 5000 rise 2 fall 3 weight 1
server rmq_node2 10.110.8.38:5672 check inter 5000 rise 2 fall 3 weight 1

#haproxy监控页面地址
listen monitor
bind 0.0.0.0:8100
mode http
option httplog
stats enable
stats uri /stats
stats refresh 5s

本文地址: https://github.com/maxzhao-it/blog/post/39007/