部署简单的高可用Harbor本地仓库

前提
三台已安装docker、docker-compose的主机
192.168.56.29 (harbor)
192.168.56.27 (harbor)
192.168.56.26

1. 安装docker、docker-compose
步骤略过,未安装的可按照末尾参考资料二安装

2. 下载解压harbor
步骤略过,可查看末尾参考资料一步骤

3. 修改harbor配置文件

mv /home/harbor/harbor.yml.tmpl /home/harbor/harbor.yml
vi /home/harbor/harbor.yml

...
#192.168.56.29、192.168.56.27两个主机各自配置本身地址
hostname: 192.168.56.29

http: 
  port: 80

#这里不配置https访问
#https:
  #port: 443
  #certificate: /home/harbor/certs/harbor.k8smaster1.com.crt #需要自己生成的证书文件
  #private_key: /home/harbor/certs/harbor.k8smaster1.com.key #需要自己生成的证书文件

#admin用户的登录密码
harbor_admin_password: Harbor12345

database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 1000

#数据存放的目录
data_volume: /home/harbor/data
...

mkdir -p /home/harbor/data

4. 安装harbor

./install.sh 

5. 配置docker仓库

#三台主机都做同样的配置
vi /etc/docker/daemon.json

{
   "registry-mirrors": ["https://registry.docker-cn.com"],
   "insecure-registries":["192.168.56.29","192.168.56.29"]
}

6. 重启docker服务

systemctl daemon-reload
systemctl restart docker

#重启后一般harbor服务会挂掉,需要再重启harbor
cd /home/harbor/
docker-compose down -v
docker-compose up -d

7. 登录harbor管理界面配置双主复制
在192.168.56.29添加192.168.56.27仓库以及复制规则
在这里插入图片描述
在这里插入图片描述
在192.168.56.27添加192.168.56.29仓库以及复制规则
在这里插入图片描述
在这里插入图片描述
再在192.168.56.29新建一个仓库
在这里插入图片描述

9. 配置nginx实现高可用
以下操作在192.168.56.26主机上进行

首先编写nginx配置文件

vi harbor-nginx.conf

user nginx;
worker_processes 1;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log warn;

events {
        worker_connections 1024;
        multi_accept on;
        use epoll;
}

http {
       #日志输出,可以不用
       log_format access_json '{ "@timestamp": "$time_iso8601", '
                         '"time": "$time_iso8601", '
                         '"remote_addr": "$remote_addr", '
                         '"remote_user": "$remote_user", '
                         '"body_bytes_sent": "$body_bytes_sent", '
                         '"request_time": "$request_time", '
                         '"status": "$status", '
                         '"host": "$host", '
                         '"request": "$request", '
                         '"request_method": "$request_method", '
                         '"uri": "$uri", '
                         '"http_referrer": "$http_referer", '
                         '"body_bytes_sent":"$body_bytes_sent", '
                         '"http_x_forwarded_for": "$http_x_forwarded_for", '
                         '"http_user_agent": "$http_user_agent" '
                    '}';

       access_log  /var/log/nginx/access.log access_json;
       error_log   /var/log/nginx/error.log;

       upstream harbor {
             ip_hash; #必须使用ip_hash的方式
             server 192.168.56.29:80 weight=1 max_fails=3 fail_timeout=5s;
             server 192.168.56.27:80 weight=1 max_fails=3 fail_timeout=5s;
       }

       server {
             listen 80;
             server_name  localhost;
             
             location / {
                  proxy_next_upstream http_500  http_502  http_503 http_504; #自动重试
                  proxy_redirect off;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_pass http://harbor;
             }
       }

}

编写nginx的docker脚本

vi harbor-nginx.sh

#!/bin/bash
  
docker stop harbor-nginx

docker rm harbor-nginx

#路径自己看着设置 -v 本机位置:容器内部位置
docker run -itd -p 8090:80  --name harbor-nginx -v /usr/tmp/harbor-nginx.conf:/etc/nginx/nginx.conf -v /usr/tmp/access.log:/var/log/nginx/access.log -v /usr/tmp/error.log:/var/log/nginx/error.log  nginx:1.14.0

配置仓库

vi /etc/docker/daemon.json

{
   "registry-mirrors": ["https://registry.docker-cn.com"],
   "insecure-registries":["192.168.56.29","192.168.56.29","192.168.56.26:8090"]
}

重启docker,并运行nginx脚本

systemctl daemon-reload
systemctl restart docker

sh harbor-nginx.sh

访问192.168.56.26:8090的harbor界面
在这里插入图片描述

10. 推送镜像,测试复制是否成功
在192.168.56.26主机上操作

docker login 192.168.56.26:8090 -u admin -p Harbor12345

docker pull nginx

docker tag nginx:latest 192.168.56.26:8090/local-repository/mynginx:v1

docker push 192.168.56.26:8090/local-repository/mynginx:v1

查看192.168.56.27仓库是否已复制镜像过来
在这里插入图片描述
至此,完成。

后记

  1. 一般harbor常用在自己内网,所以只使用http方式问题不大。
  2. 有些是搭建在阿里云服务器上面的,像这种有域名的服务地址全部使用域名,然后改主机hosts,不使用域名的用公网IP,不要使用私网IP,不然管理界面添加远程仓库访问不到也就不能继续往下配置复制了,虽然推拉镜像没问题。
  3. 使用https方式配置+自签证书,本人尝试过后一直不能成功添加另一台主机的仓库,还没搞明白什么情况,因此不得已使用http的方式来搭建。

参考资料:
k8s搭建安装 Harbor 私有镜像仓库(详细)
Docker使用Harbor本地仓库
centos7安装harbor并使用nginx的proxy_next_upstream提高可用性

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值