超赞_Docker私有仓库Harbor_多实例高可用

   2023-04-12 15:47:37 4400
核心提示:多实例共享存储架构图感谢 LB 不使用 Nginx,使用阿里 SLB。感谢架构需要考虑三个问题共享存储得选取,Harbor 得后端存储目前支

超赞_Docker私有仓库Harbor_多实例高可用

多实例共享存储架构图

感谢 LB 不使用 Nginx,使用阿里 SLB。

感谢架构需要考虑三个问题共享存储得选取,Harbor 得后端存储目前支持 AWS S3、 Openstack Swift, Ceph 等。感谢使用 阿里云极速性 NAS,磁盘 IO 性能比单块磁盘读写性能要好。使用 NFS V3 版本挂载。Session 不能在不同得实例上共享,所以 Harbor Redis 需要单独部署,并且多个实例连接相同得 Redis。Harbor 多实例数据库问题,必须单独部署一个数据库,并且多个实例连接相同得数据库。

注:生产环境如果使用阿里云 NAS,推荐使用 极速性 NAS,不推荐使用 通用型 NAS。

阿里云 NAS 性能参考文档:

感谢分享help.aliyun感谢原创分享者/document_detail/124577.html?spm=a2c4g.11186623.6.552.2eb05ea0HJUgUB

部署资源部署

Harbor 选择在线部署,使用 docker-compose 部署,docker-compose 和 Docker 部署环境感谢不再介绍,网上可以搜索到相关文档。

挂载阿里云极速性 NAS

harbor1 和 harbor2 机器都需要执行挂载 NAS

配置开机自动挂载,打开 /etc/fstab 配置文件,添加挂载命令。

# 创建 NAS 挂载目录$ mkdir /data # 提高同时发起得 NFS 请求数量$ sudo echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf$ sudo echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf

挂载 NFS v4 文件系统,添加以下命令:

file-system-id.region.nas.aliyuncs感谢原创分享者:/ /data nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0

如果您要挂载 NFS v3 文件系统,添加以下命令:

file-system-id.region.nas.aliyuncs感谢原创分享者:/ /data nfs vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0# 在 /etc/fstab 配置文件添加好挂载,并执行挂载$ mount -a # 检查挂载,如果结果中存在 NFS 文件系统得挂载地址,则说明挂载成功$ df -h | grep aliyun临时部署单机 Harbor

在 harbor1 机器上操作

# 在线部署 Harbor$ cd /opt/$ wget 感谢分享github感谢原创分享者/goharbor/harbor/releases/download/v2.2.1/harbor-online-installer-v2.2.1.tgz$ tar xf harbor-online-installer-v2.2.1.tgz$ cd /opt/harbor$ cp harbor.yml.tmpl harbor.yml # 创建 harbor 数据存储$ mkdir /data/harbor # 添加域名证书,已有域名 SSL 证书$ mkdir /data/harbor/cert # 把 SSL 证书公钥和私钥上传到 /data/harbor/cert 目录中$ scp harbor.example.pem root等192.168.10.10:/data/harbor/cert/$ scp harbor.example.key root等192.168.10.10:/data/harbor/cert/ # 配置 harbor.yml 文件,下面是修改后文件与原文件比较结果$ diff harbor.yml harbor.yml.tmpl 5c5< hostname: harbor.example感谢原创分享者---> hostname: reg.mydomain感谢原创分享者17,18c17,18< certificate: /data/harbor/cert/harbor.example.pem< private_key: /data/harbor/cert/harbor.example.key---> certificate: /your/certificate/path> private_key: /your/private/key/path29c29< external_url: 感谢分享harbor.example感谢原创分享者---> # external_url: 感谢分享reg.mydomain感谢原创分享者:8433 < data_volume: /data/harbor---> data_volume: /data # 生成配置文件$ cd /opt/harbor # harbor 开启 helm charts 和 镜像漏洞扫描$ ./prepare --with-notary --with-trivy --with-chartmuseum # 安装$ ./install.sh --with-notary --with-trivy --with-chartmuseum # 查看$ docker-compose ps单独部署 Harbor 数据库和 Redis

# 创建 postgres 和 redis 存储目录$ mkdir -p /data/harbor-redis /data/harbor-postgresql # 修改所属组$ chown -R 999.999 /data/harbor-redis /data/harbor-postgresql# 创建 postgres 和 redis docker-compose.yml 文件$ vim docker-compose.yml version: '2.3' services:redis:image: goharbor/redis-photon:v2.2.1container_name: harbor-redisrestart: alwayscap_drop:- ALLcap_add:- CHOWN- SETG发布者会员账号- SETU发布者会员账号volumes:- /data/harbor-redis:/var/lib/redisnetworks:- harbor-dbports:- 6379:6379postgresql:image: goharbor/harbor-db:v2.2.1container_name: harbor-postgresqlrestart: alwayscap_drop:- ALLcap_add:- CHOWN- DAC_OVERR发布者会员账号E- SETG发布者会员账号- SETU发布者会员账号environment:POSTGRES_USER: postgresPOSTGRES_PASSWORD: test2021volumes:- /data/harbor-postgresql:/var/lib/postgresql/data:znetworks:- harbor-dbports:- 5432:5432 networks:harbor-db:driver: bridge # 部署 postgres 和 redis$ docker-compose up -d导入 postgres 数据

# 进入临时 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 192.168.10.10 -U postgres registry -W < /tmp/registry.sql$ psql -h 192.168.10.10 -U postgres notarysigner -W < /tmp/notarysigner.sql$ psql -h 192.168.10.10 -U postgres notaryserver -W < /tmp/notaryserver.sql清理临时部署单机 Harbor 数据和相关配置文件

# 清理 harbr 数据和配置文件$ cp -a /data/harbor/cert /tmp/$ rm -rf /data/harbor/*$ rm -rf /opt/harbor$ cp -a /tmp/cert /data/harbor/ # 重新创建配置文件$ 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$ diff harbor.yml harbor.yml.tmpl 5c5< hostname: harbor.example感谢原创分享者---> hostname: reg.mydomain感谢原创分享者17,18c17,18< certificate: /data/harbor/cert/harbor.example.pem< private_key: /data/harbor/cert/harbor.example.key---> certificate: /your/certificate/path> private_key: /your/private/key/path29c29< external_url: 感谢分享harbor.example感谢原创分享者---> # external_url: 感谢分享reg.mydomain感谢原创分享者:8433 37c37< # database:---> database:39c39< # password: root123---> password: root12341c41< # max_idle_conns: 50---> max_idle_conns: 5044c44< # max_open_conns: 1000---> max_open_conns: 100047c47 < data_volume: /data/harbor---> data_volume: /data 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: 192.168.10.10< port: 5432< db_name: notarysigner< username: postgres< password: test2021< ssl_mode: disable< notary_server:< host: 192.168.10.10< port: 5432< db_name: notaryserver< username: postgres< password: test2021< ssl_mode: disable---> # external_database:> # harbor:> # host: harbor_db_host> # port: harbor_db_port> # db_name: harbor_db_name> # username: harbor_db_username> # password: harbor_db_password> # ssl_mode: disable> # max_idle_conns: 2> # max_open_conns: 0> # notary_signer:> # host: notary_signer_db_host> # port: notary_signer_db_port> # db_name: notary_signer_db_name> # username: notary_signer_db_username> # password: notary_signer_db_password> # ssl_mode: disable> # notary_server:> # host: notary_server_db_host> # port: notary_server_db_port> # db_name: notary_server_db_name> # username: notary_server_db_username> # password: notary_server_db_password> # ssl_mode: disable161,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: 192.168.10.10: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---> # 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: redis: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# 部署第壹个节点 harbor$ cd /opt/harbor # harbor 开启 helm charts 和 镜像漏洞扫描$ ./prepare --with-notary --with-trivy --with-chartmuseum # 安装$ ./install.sh --with-notary --with-trivy --with-chartmuseum # 查看$ docker-compose ps # 拷贝配置到 harbor2 机器上$ scp -r /opt/harbor 192.168.10.11:/opt/

在 harbor2 机器上操作

# 部署第二个节点 harbor$ cd /opt/harbor # harbor 开启 helm charts 和 镜像漏洞扫描$ ./prepare --with-notary --with-trivy --with-chartmuseum # 安装$ ./install.sh --with-notary --with-trivy --with-chartmuseum # 查看$ docker-compose ps配置阿里云 SLB

不具体介绍 SLB 配置方法,具体配置方法参考下面阿里云 SLB 配置文档,配置 443 端口,使用 TCP 协议,后端映射到两台 harbor1 和 harbor2 443 端口上。

 
举报收藏 0打赏 0评论 0
 
更多>同类百科头条
推荐图文
推荐百科头条
最新发布
点击排行
推荐产品
网站首页  |  公司简介  |  意见建议  |  法律申明  |  隐私政策  |  广告投放  |  如何免费信息发布?  |  如何开通福步贸易网VIP?  |  VIP会员能享受到什么服务?  |  怎样让客户第一时间找到您的商铺?  |  如何推荐产品到自己商铺的首页?  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备15082249号-2