• Harbor 高可用部署


    系统架构

    部署信息

    主机 IP
    harbor1 10.0.0.1
    harbor2 10.0.0.2
    db 10.0.0.3
    NAS 10.0.0.100:/
    软件 版本
    docker 20.10.12
    docker-compose 1.23.1
    harbor 2.2.1

    一、Docker 安装

    1. 使用国内 yum

    # yum install -y yum-utils device-mapper-persistent-data lvm2
    # yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    2. 卸载旧版本的 docker

    ## 如果主机上已经有docker存在且不是想要安装的版本,需要先进行卸载。
    # yum remove -y docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  container*
    

    3. 安装 Docker20.10 版本

    # yum -y install docker-ce-20.10.12-3.el7 docker-ce-cli-20.10.12-3.el7
    

    4. 设置镜像加速

    # mkdir /etc/docker
    # vi /etc/docker/daemon.json
    
    {
      "registry-mirrors": ["https://xxxxxxxxx.mirror.aliyuncs.com"]
    }
    

    5. 启动 docker

    # systemctl start docker
    # systemctl enable docker
    # systemctl status docker
    

    二、Docker-compose 安装

    1. Docker-compose 安装

    ## github.com 可能访问超时,可以使用下面的获取下载下来后上传服务器即可
    # curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    # curl -k "https://dl.cactifans.com/zabbix_docker/docker-compose" -o /usr/bin/docker-compose
    
    # chmod a+x /usr/bin/docker-compose
    

    2. 查看 docker-compose 版本

    # docker-compose version
    

    三、挂载公有云 NAS

    1. 挂载华为云 SFS Turbo

    此处 NAS 服务,使用华为云提供的 SFS Turbo,也可以是 阿里云 腾讯云 等对应服务

    # mkdir /data
    # mount -t nfs -o vers=3,timeo=600,noresvport,nolock 10.1.1.108:/  /data
    

    10.0.0.110.0.0.2 主机均执行

    2. 后续需要考虑写入 /etc/fstab 文件,设置为开机自动挂载 NAS

    # cat /etc/fstab
    ......
    10.0.0.100:/ 	 			  /data    nfs vers=3,timeo=600,noresvport,nolock 0 0
    

    四、部署临时单机 harbor

    10.0.0.110.0.0.2 主机执行

    1. 下载 harbor 2.2.1 在线部署版本

    # cd /opt/
    # wget https://github.com/goharbor/harbor/releases/download/v2.2.1/harbor-online-installer-v2.2.1.tgz
    

    2. 部署单机 harbor

    a | 解压文件

    # tar xf harbor-online-installer-v2.2.1.tgz
    # cd /opt/harbor
    # cp harbor.yml.tmpl harbor.yml
    

    b | 创建 harbor 数据存储

    $ mkdir /data/harbor
    

    c | 添加域名证书,需要自己有域名 SSL证书

    # mkdir /data/harbor/cert
    
    ## 把SSL证书公钥和私钥上传到 /data/harbor/cert 目录中
    # scp evescn.pem root@10.0.0.1:/data/harbor/cert/
    # scp evescn.key root@10.0.0.1:/data/harbor/cert/
    
    # cd /data/harbor/cert/
    # ln -sv edocyun.com.cn.key server.key
    # ln -sv edocyun.com.cn.pem server.pem
    

    d | 配置 harbor.yml 文件

    # vim harbor.yml
    
    ## 需要修改如下内容,其他保持默认即可
    
    5c5
    < hostname: harbor.evescn.com
    
    17,18c17,18
    <   certificate: /data/harbor/cert/server.pem
    <   private_key: /data/harbor/cert/server.key
    
    29c29
    < external_url: https://harbor.evescn.com
    
    47c47
    < data_volume: /data/harbor
    

    e | 生成配置文件

    # cd /opt/harbor
    
    ## harbor开启helm charts 和 镜像漏洞扫描
    # ./prepare --with-notary --with-trivy --with-chartmuseum
    

    f | 安装

    # ./install.sh --with-notary --with-trivy --with-chartmuseum
    

    h | 查看服务

    $ docker-compose ps
    

    五、单独部署 Harbor 数据库 PostgreSQLRedis

    10.0.0.3 主机执行

    1. 创建 postgresqlredis 存储目录

    # mkdir -p /data/harbor/{harbor-redis,harbor-postgresql}
    
    ## 修改所属组
    # chown -R 999.999 /data/harbor/harbor-redis /data/harbor/harbor-postgresql
    

    2. 创建 postgresqlredis docker-compose.yml 文件

    此处 redis 未设置密码,如需设置 redis 密码,可以部署完成 redis 后,复制 redis 配置文件到宿主机目录,修改配置文件启用认证,再配置 volumes 覆盖 redis 容器配置文件

    # vim docker-compose.yml
    
    version: '2.3'
    
    services:
      redis:
        image: goharbor/redis-photon:v2.2.1
        container_name: harbor-redis
        restart: always
        cap_drop:
          - ALL
        cap_add:
          - CHOWN
          - SETGID
          - SETUID
        volumes:
          - /data/harbor/harbor-redis:/var/lib/redis
        networks:
          - harbor-db
        ports:
          - 6379:6379
      postgresql:
        image: goharbor/harbor-db:v2.2.1
        container_name: harbor-postgresql
        restart: always
        cap_drop:
          - ALL
        cap_add:
          - CHOWN
          - DAC_OVERRIDE
          - SETGID
          - SETUID
        environment:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: test2021
        volumes:
          - /data/harbor/harbor-postgresql:/var/lib/postgresql/data:z
        networks:
          - harbor-db
        ports:
          - 5432:5432
    
    networks:
     harbor-db:
       driver: bridge
    

    3. 部署 postgresqlredis

    $ docker-compose up -d
    

    4. 导入 postgresql 数据

    部署临时单机 harbor 主机节点执行 10.0.0.1 主机

    $ 10.0.0.1 主机
    ## 进入临时 harbor-db 容器导出相关表及数据
    # docker exec -it -u postgres harbor-db bash
    
    ## 导出数据
    # pg_dump -U postgres registry > /tmp/registry.sql
    # pg_dump -U postgres notarysigner > /tmp/notarysigner.sql
    # pg_dump -U postgres notaryserver > /tmp/notaryserver.sql
    
    ## 将数据导入单独部署的PostgreSQL数据库
    # psql -h 10.0.0.3 -U postgres registry -W < /tmp/registry.sql
    # psql -h 10.0.0.3 -U postgres notarysigner -W < /tmp/notarysigner.sql
    # psql -h 10.0.0.3 -U postgres notaryserver -W < /tmp/notaryserver.sql
    

    六、部署高可用 harbor 集群

    1. 清理 harbor 数据和配置文件

    部署临时单机 harbor 主机节点执行 10.0.0.1 主机

    ## 停止服务
    # cd /opt/harbor/
    # docker-compose down
    # cd /root/
    
    ## 初始化清理 NAS 空间等
    # cp -a /data/harbor/cert /root/
    # rm -rf /data/harbor/*
    # rm -rf /opt/harbor
    # cp -a /root/cert /data/harbor/
    

    2. 重新创建配置文件

    #  cd /opt/
    # tar xf harbor-online-installer-v2.2.1.tgz
    # cd /opt/harbor
    
    ## 修改配置文件,连接单独部署postgres和redis,注释harbor自带的postgres和redis
    
    # cp harbor.yml.tmpl harbor.yml
    # vim harbor.yml
    
    5c5
    < hostname: harbor.evescn.com
    
    17,18c17,18
    <   certificate: /data/harbor/cert/server.pem
    <   private_key: /data/harbor/cert/server.key
    
    29c29
    < external_url: https://harbor.evescn.com
    
    47c47
    data_volume: /data/harbor
    
    135,158c135,158
    < external_database:
    <   harbor:
    <     host: 192.168.10.10
    <     port: 5432
    <     db_name: registry
    <     username: postgres
    <     password: test2021
    <     ssl_mode: disable
    <     max_idle_conns: 50
    <     max_open_conns: 1000
    <   notary_signer:
    <     host: 10.0.0.3
    <     port: 5432
    <     db_name: notarysigner
    <     username: postgres
    <     password: test2021
    <     ssl_mode: disable
    <   notary_server:
    <     host: 10.0.0.3
    <     port: 5432
    <     db_name: notaryserver
    <     username: postgres
    <     password: test2021
    <     ssl_mode: disable
    
    
    161,175c161,175
    < external_redis:
    <   # support redis, redis+sentinel
    <   # host for redis: <host_redis>:<port_redis>
    <   # host for redis+sentinel:
    <   #  <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3>
    <   host: 10.0.0.3:6379
    <   password:
    <   # sentinel_master_set must be set to support redis+sentinel
    <   #sentinel_master_set:
    <   # db_index 0 is for core, it's unchangeable
    <   registry_db_index: 1
    <   jobservice_db_index: 2
    <   chartmuseum_db_index: 3
    <   trivy_db_index: 5
    <   idle_timeout_seconds: 30
    

    3. 负责文件到高可用其他节点

    ## 拷贝配置到 10.0.0.2 机器上
    # scp -r /opt/harbor 192.168.10.11:/opt/
    
    

    4. 部署第一个节点 harbor

    10.0.0.1

    # cd /opt/harbor
    
    ## harbor开启helm charts 和 镜像漏洞扫描
    # ./prepare --with-notary --with-trivy --with-chartmuseum
    
    ## 安装
    # ./install.sh --with-notary --with-trivy --with-chartmuseum
    
    ## 查看
    # docker-compose ps
    

    5. 部署第二个节点 harbor

    10.0.0.2

    $ cd /opt/harbor
    
    # harbor开启helm charts 和 镜像漏洞扫描
    $ ./prepare --with-notary --with-trivy --with-chartmuseum
    
    # 安装
    $ ./install.sh --with-notary --with-trivy --with-chartmuseum
    
    # 查看
    $ docker-compose ps
    

    6. 配置华为云 SLB

    具体配置,请查看官方文档即可

    参考文档

    https://cloud.tencent.com/developer/article/1838838
    
  • 相关阅读:
    测试网站的响应性的工具
    取出分组后的前N条数据,笔记记录。
    纯js制作页码导航
    英语单复数转换类
    用鼠标滚动缩放图片
    Plugin 'InnoDB' init function returned error.Could not start the service MySQL 解决方法
    超时时间已到。在操作完成之前超时时间已过或服务器未响应。
    数据库关系图”提示:此数据库没有有效所有者(转载)
    关于非静态类的静态成员与非静态成员的初始化顺序(zhuang)
    项目经理的“势能”培养 (转)
  • 原文地址:https://www.cnblogs.com/evescn/p/16175819.html
Copyright © 2020-2023  润新知