• Habor的高可用(Keepalived+Haproxy+Harbor)


    本篇想实现Harbor的高可用。

    1. 结构与部署要点

    所用到的主机:

    192.168.102.201		harbor201    // Harbor 仓库1
    192.168.102.202		harbor202    // Harbor 仓库2
    192.168.102.210		ha210          // 负责2台Harbor仓库的SLB,本身也实现了高可用
    192.168.102.211		ha211          // 负责2台Harbor仓库的SLB,本身也实现了高可用
    192.168.102.212               haproxy VIP
    192.168.102.215		docker215    // Docker host
    192.168.102.216		docker216    // Docker host
    192.168.102.190		client1
    192.168.102.191		client2    
    

      

    拓扑图如下

     部署要点:

    1. harbor201和harbor202上,通过仓库复制,实现两台harbor仓库的镜像同步;
    2. ha210和ha211上,分别部署了Haproxy和keepalived,Haproxy实现对2台harbor仓库的LB,Keepalived实现2台haproxy的冗余。

    2. 关键配置

    2.1 通过仓库管理实现Harbor的高可用

    两台Harbor通过仓库管理,建立到Peer的连接。配置要点如下

    • 在两台harbor上分别建立项目mara与用户mara,并将用户mara指定为项目mara的管理员;
    • 在两台harbor上,仓库管理——新建目标,建立到Peer的连接,见下图

      根据自己的情况,是否勾选验证远程证书
      下图是建立好连接的情况

    • 新建复制规则,复制管理——新建规则,根据自己的情况进行配置,如下图

    通过上述配置,当对harbor201和harbor202中任一仓库进行增、删操作,都会同步到peer仓库,较简单地实现了Harbor的高可用。但存在以下缺点。

    • 当需要同步的harbor仓库数量增加时,仓库管理&复制管理中的配置会成倍增加;
    • 整体结构不灵活,不优雅。

     2.2 Harbor前端的负载均衡(Haproxy)

    如何将上行流量负载到2台不同的harbor服务器上,需要用到Nginx、LVS、Haproxy等工具来实现,在这儿采用Haproxy。

    Ha210的配置如下。

     1 yum install -y haproxy
     2 systemctl start haproxy; systemctl enable haproxy
     3 cp /etc/haproxy/haproxy.conf{,.bak}
     4 vim /etc/haproxy/haproxy.conf
     5 //// 以下是haproxy.conf的关键配置
     6     listen harbor
     7         bind *:80
     8         mode tcp
     9         log global
    10         balance source
    11         server harbor201 192.168.102.201:80 check inter 3s fall 3 rise 5
    12         server harbor202 192.168.102.202:80 check inter 3s fall 3 rise 5
    13 //// haproxy.conf 结束
    14 systemctl restart haproxy
    15 ss -ntlp | grep 80
    16 curl http://192.168.102.210        # 验证
    View Code

    Ha211的配置与Ha210类似 。

    完成上述配置后,无论登录Ha210、Ha211,都可以对后面的Harbor仓库进行管理。

    当关闭Harbor201时,流量会切换到habor202上,登录信息会重置,镜像内容不受影响。

    2.3 Keepalived实现VRRP

    通过Keepalived,实现两台Haproxy只对外提供一个服务IP。

    Keepalived的相关配置如下。

    Ha210:

     1 yum install -y keepalived
     2 systemctl enable keepalived; systemctl start keepalived
     3 cp /etc/keepalived/keepalived.conf{,.bak}
     4 vim /etc/keepalived/keepalived.conf
     5 //// 以下是keepalived.conf的关键配置,其他VRRP的配置删除
     6 vrrp_instance harbor_1 {
     7   state MASTER        // 备机:state BACKUP
     8   interface ens33
     9   virtual_router_id 101
    10   priority 100
    11   advert_int 1
    12   virtual_ipaddress {
    13     192.168.102.212
    14   }
    15 }
    View Code

    Ha211的配置见上。

    由于VRRP的主在Ha210上,在Ha210上查看接口IP,应该可以看到 192.168.102.212

     用curl http://192.168.102.212 检查服务是否正常。

    配置完成后,即可用 http://192.168.102.212 来访问上述高可用架构。

  • 相关阅读:
    SqlServer注意事项总结,高级程序员必背!
    C#语法——委托,架构的血液
    C#语法——泛型的多种应用
    C#——Nhibernate探索
    C#语法——await与async的正确打开方式
    谈谈我理解的SA——Systems Architecture
    C#线程安全使用(五)
    C#语法——元组类型
    架构师的御人之道
    另一个角度的架构师
  • 原文地址:https://www.cnblogs.com/marathoner/p/15779821.html
Copyright © 2020-2023  润新知