HAProxy实现Harbor的多节点负载均衡

该博客介绍了在192.168.199.200和192.168.199.201两个节点上搭建Harbor并分离MYSQL,搭建双主热备的MYSQL,以及在192.168.199.200搭建HAProxy的实验。包含HAProxy的安装、配置、日志设置,还给出了测试haproxy和harbor是否正常工作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境:

HAProxy节点:192.168.199.200
Harbor1节点:192.168.199.200
Harbor2节点:192.168.199.201

1.在192.168.199.200,192.168.199.201两个节点上搭建Harbor,并做MYSQL分离

见:https://blog.youkuaiyun.com/s812289480/article/details/83302284

2.在192.168.199.200,192.168.199.201上搭建双主热备的MYSQL:

见:https://blog.youkuaiyun.com/s812289480/article/details/83310368

3.在192.168.199.200搭建HAProxy:

3.1 APT安装HAProxy

$ sudo apt install haproxy

3.2 配置/etc/haproxy/haproxy.cfg

$ vi /etc/haproxy/haproxy.cfg
----------------------------------

global
        log 127.0.0.1   local2
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    tcp
        option  httplog
        option  dontlognull
        retries 3
        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                 600
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

listen stats
        mode http
        bind :8888
        stats enable
        stats hide-version

stats uri       /haproxyadmin?stats
        stats realm     Haproxy\ Statistics
        stats auth      admin:admin

frontend main
bind 0.0.0.0:80
        default_backend         harbor

backend harbor
        balance leastconn
        server harbor1 192.168.199.200:8080 check port 80 maxconn 300
        server harbor2 192.168.199.201:8080 check port 80 maxconn 300

3.3 配置启动日志

$ vi /etc/rsyslog.conf 
------------------------------------------
...
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
local2.*        /var/log/haproxy.log
# Enable non-kernel facility klog messages
...

3.4 重启rsyslog和haproxy

$ sudo systemctl restart rsyslog
$ sudo systemctl restart haproxy

3.5 测试haproxy是否正确开启

打开浏览器输入:192.168.199.200:8888/haproxyadmin?stats 如果可以正常登录并且harbor1和harbor2都正常工作则配置正确。

3.6 测试harbor是否正常工作

打开浏览器输入:192.168.199.201登录harbor

 

### 配置HarborHAProxy及Keepalived集成 为了确保Harbor服务的高可用性,通过部署HAProxy作为负载均衡器以及利用Keepalived来管理虚拟IP(VIP),可以有效地提高系统的稳定性和可靠性。 #### HAProxy配置 在`haproxy.cfg`文件中定义前端监听端口和后端服务器列表。对于Harbor而言,通常会指定HTTP(S)流量转发到实际运行着Harbor实例的目标节点上: ```bash frontend harbor_frontend bind *:80 default_backend harbor_backend backend harbor_backend balance roundrobin server harbor_node1 192.168.1.101:80 check inter 2000 rise 2 fall 3 server harbor_node2 192.168.1.102:80 check inter 2000 rise 2 fall 3 ``` 此配置使得所有访问请求被均匀分配给两个不同的Harbor节点[^1]。 #### Keepalived设置 Keepalived用于监控集群状态并自动迁移VIP地址,在主节点发生故障时能够迅速将VIP转移到备用节点继续提供服务。以下是简化版的Keepalived配置示例: - **Master Node (Primary)**: ```bash vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.1.200/24 dev eth0 label eth0:vip } } ``` - **Backup Node (Secondary)**: ```bash vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.1.200/24 dev eth0 label eth0:vip } } ``` 当关闭主节点上的Keepalived进程时,VIP将会切换至备份节点,从而保证业务连续性[^2]。 #### Harbor多副本部署 最后一步是在多个物理或虚拟主机上安装相同版本的Harbor,并确保这些实例可以通过网络相互通信。这一步骤不在上述提及的具体技术范围内,但它是构建高可用架构不可或缺的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值