关于harbor做HA

news2024/10/7 20:31:19

我起初是用helm在k8s上装的harbor,最近遇到如下故障:就是服务器硬件设备故障突然死机,恰巧是harbor容器所在的服务器,其他在这个服务器上运行的容器,由kubelet调度到其他正常的服务器上重启去了,但harbkor并没有被调度走。移动到其他服务器上的容器,需要重新连接harbor拉取镜像,但私有仓库挂了,镜像也就拉取失败,直接导致所有在这个宕机的服务器上运行的容器全部挂了,无法再次启动。所以就想着把harbor从k8s中替换出来,找两台固定的服务器做一个高可用HA,这样harbor再次失效的可能性就小一些。

我选择的HA架构是如下图所示,如果机器富裕,我感觉不用这种架构,把数据独立共享出来可能会更好一些。

 我这张图是下载网上的,这里没有用负载均衡Haproxy,只是用了Keepalived做了一个虚拟地址,然后把域名绑定到虚拟地址上,一旦一台harbor的主机宕机,虚拟地址自动漂移到另一台harbor上,可确保harbor始终在线,这里只要做好两台harbor的数据同步就可以了。如果不是两台主机同时挂,应该不会出现上述故障现象了。如下是操作步骤。

我选择的两台主机ip分别为11.12.3.97和11.12.3.98使用keepalived虚拟出来的地址是11.12.3.99,要确保这些ip地址不会冲突,且网络可达。

在主机上安装docker、docker-compose、python3、pip和keepalived,然后参考CSDN我之前写的这篇文章配置keepalived,停机测试虚拟地址是否可以正常漂移。在安装docker组件的时候要注意版本的问题,不然安装harbor会报错。我这里用的版本是:

docker: Docker version 25.0.1
docker-compose: Docker Compose version v2.24.4
python3: Python 3.8.10
pip: pip 23.3.2

然后去github.com/goharhor/harbor/tags上下载你想安装的harbor版本(如何github不好打开,可以用一下加速器软件,我这里用了Watt Toolkit 做加速),我的服务器是用的ubuntu,我下载的是harbor-offline-installer-v2.4.2.tgz

然后将压缩包解压 tar -zxvf ./harbor-offline-installer-v2.4.2.tgz -C /opt/

再参考官网配置证书Harbor docs | Configure HTTPS Access to Harbor

这里注意一点,使用docker安装harbor,它会在根目录创建一个data的目录,harbor容器是挂载到/data这个目录下,将所有数据在这个目录下持久化保存,官方文档中

这里的目录就是在安装harbor的主机上自行创建的目录,这里要注意/data/cert 目录的用户和用户组必须是10000 ,因为harbor默认访问的用户就是10000,拷贝到该目录下的文件也要

chown -R 10000.10000 /data/cert

不然harbor运行时会报没有权限访问证书的错误。

关于harbor的证书和docker配置可以参考CSDN我之前写的这篇文章。

这里需要注意一点,在配置/etc/docker/daemon.json

添加 "registry-mirrors": ["https://core.harbor.shell.com:443"],
         "insecure-registries": ["11.12.3.97","11.12.3.98","11.12.3.99"]

把地址都配进去,并且在创建证书的时候v3.ext文件中的DNS信息也要将这些地址都加上,证书创建完后,可以通过openssl x509 -text -noout -in core.harbor.shell.com.crt命令去验证,看是否有

  X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Alternative Name: 
                DNS:core.harbor.shell.com, DNS:core.harbor.shell, DNS:11.12.3.98, DNS:11.12.3.97,DNS:11.12.3.99

 证书配置完毕后,到/opt/harbor目录配置安装文件

mv harbor.yml.tmpl harbor.yml

 

这里端口号根据需求也可以配置,harbor_admin_password:这里是配置harbor登录的初始密码,用户名默认是admin

然后运行install.sh 进行harbor安装,如果中间变更了配置或者已经安装过后想修改,可以运行

sudo docker-compose down -v
sudo ./prepare

安装完毕可以通过 sudo docker-compose ps 查看容器是否都已经起来

启动正常后,可以通过浏览器输入11.12.3.99 地址打开harbor操作界面,配置了证书后,浏览器会自动跳转到https,如何想通过域名core.harbor.shell.com访问,需要在客户端的hosts中添加域名和虚拟ip地址的绑定信息。

现在,访问11.12.3.97和11.12.3.98 是打开了两个不同主机上运行的harbor,我的11.12.3.99虚拟地址在3.97上,所以需要配置3.98的数据同步,可以参考Haproxy 实现 harbor 高可用_harbor 高可用部署 haproxy-CSDN博客

 上面的同步是将虚拟地址上运行的harbor通过事件触发,同步到另一台harbor上,但是我这里按照上面的配置行不通,因为我咋3.99也就是3.97这台机器上配置

(98连97是正常的,这里注意自己配置的证书验证远程证书的对勾不能打,否则连接失败。 )

查看日志可以发现,报如下错误

2024-02-04T09:26:10Z [ERROR] [/lib/http/error.go:54]: {"errors":[{"code":"UNKNOWN","message":"unknown: Get \"https://11.12.3.98/api/version\": x509: cannot validate certificate for 11.12.3.98 because it doesn't contain any IP SANs"}]} 

而在另外一台机器上做相同配置连接另一台主机就可以配置成功,要是把keepalived的优先级颠倒一下,将3.99漂移到3.98上,和之前配置3.97的情况一样,可以配置成功,但是3.97就会报之前3.98的错误。所以我这里做同步是用pull的方式

这里配置的是定时每天12点执行同步,由3.98向3.97拉去镜像同步。这样,一旦3.97挂了,3.99的地址就会漂移到3.98上,此时容器拉取操作就是在同3.98这台服务器上的harbor交互。

这个方案存在一个问题,就是一旦3.97恢复,如果3.98的镜像和3.97镜像不一致,需要手动再做一下同步,在复制管理里添加一条规则

当3.97恢复,3.99漂移到3.97上,可以在3.98上手动执行该策略,实现3.98到3.97的镜像同步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1434133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024.1.26力扣每日一题——边权重均等查询

2024.1.26 题目来源我的题解方法一 使用dfs对每一组查询都求最近公共祖先(会超时,通不过)方法二 不需要构建图,直接在原始数组上进行求最大公共祖先的操作。 题目来源 力扣每日一题;题序:2846 我的题解 …

[C++] opencv + qt 创建带滚动条的图像显示窗口代替imshow

在OpenCV中,imshow函数默认情况下是不支持滚动条的。如果想要显示滚动条,可以考虑使用其他库或方法来进行实现。 一种方法是使用Qt库,使用该库可以创建一个带有滚动条的窗口,并在其中显示图像。具体步骤如下: 1&…

《汇编语言》- 读书笔记 - 各章检测点归档

《汇编语言》- 读书笔记 - 各章检测点归档 检测点 1.1检测点 2.1检测点 2.2检测点 2.3检测点 3.1检测点 3.2检测点 6.1检测点 9.1 检测点 1.1 1个CPU 的寻址能力为8KB,那么它的地址总线的宽度为 13 。 解:8KB 8192B 213 1KB的存储器有 10…

###C语言程序设计-----C语言学习(9)#函数基础

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 一. 基础知识的学习 1.函数的定义 函数是一个完成特定工作的独立程序模块&…

酷开系统 | 拓展内容营销边界,酷开科技大屏价值全面升维

丰富的内容是智能大屏吸引消费者的关键。随着智能大屏各类垂直应用的增多,和长、短视频等多元内容的加入,使消费者的使用需求进一步激发和释放,这些流量的加入,也使大屏成为了营销的天然宝藏。酷开科技一直致力于OTT大屏营销&…

这个人脸考勤技术,拿走直接套用!请收藏!

随着科技的不断发展,人脸识别技术在各个领域得到了广泛应用,其中之一就是人脸考勤系统。 三维人脸考勤系统作为现代智能考勤的代表,通过先进的人脸识别技术,为组织提供了一种高效、准确、安全的考勤解决方案。 客户案例 制造企业…

【XR806开发板试用】TCP通信测试 Ping 命令测试

1.工程准备 由于要使用wifi功能,直接从wlan_demo复制一份出来,然后修改。 源文件只留下 main.c 就可以了。 BUILD.gn文件 import("//device/xradio/xr806/liteos_m/config.gni")static_library("app_mying") {configs []sources…

【C语言】const修饰指针的不同作用

目录 const修饰变量 const修饰指针变量 ①不用const修饰 ②const放在*的左边 ③const放在*的右边 ④*的左右两边都有const 结论 const修饰变量 变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。 但…

vue - 指令(一)

看文章可以得到什么? 1.可以快速的了解并会使用vue的指令 2.可以加深你对vue指令的理解,知道每个指令代表什么功能​​​​​​​ 目录 什么是vue的指令?​​​​​​​ vue常见指令的使用 v-html v-show v-if v-else 和v-else-…

JVM 性能调优 - Java 中的四种引用(4)

为什么会有四种引用 我们先回顾下在 Java 虚拟机内存体系(1) 中提到了的垃圾回收算法 1、引用计数法 原理:给对象添加一个引用计数器,每当有一个地方引用它,计数器的值就加一。每当有一个引用失效,计数器的值就减一。当计数器值为零时,这个对象被认为没有其他对象引用,…

解决ssh: connect to host 192.168.x.x port 22: Connection refused

我在使用scp命令向另一目标主机传输文件时提示ssh: connect to host 192.168.x.x port 22: Connection refused错误,总结出现的原因,及解决办法。 查看目标主机的ssh服务是否启动 service ssh status 如下图显示则启动状态 如果提示Unit ssh.service co…

python制作恶意软件删除工具

今天,来教大家用python制作一个恶意软件删除工具 查杀流程图 对,就这些,已经具备了杀毒软件的功能 判断文件是否为病毒 要查杀病毒,先要判断文件是不是病毒(不然删错了咋办),这里我们用获取文…

『运维备忘录』之 Vim 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

多彩贵州人文山水展风采,微环境监测智能调控护古韵

一、人文山水时光峰峦——多彩贵州历史文化展 2月3日,贵州省博物馆向公众开放《人文山水时光峰峦——多彩贵州历史文化展》。6000平方米展厅里,从石器时期开始,通过六个篇章,用3503件文物的回忆链,系统化的向观众揭开…

我要成为嵌入式高手之2月4、5日Linux高编第二天!!

读写函数接口 1、fgetc 语法&#xff1a; 功能&#xff1a;从流中获取一个字符 练习1&#xff1a;编写程序统计文件的行数 #include <stdio.h>int main(void) {FILE *fp NULL;char ch 0;int row 0;fp fopen("file.txt","r");if (NULL fp){pe…

C#验证字符串的长度,用正则表达式 vs 字符数组长度或字符串的长度

目录 一、使用的方法 1.使用正则表达式 2.通过计算字符串的长度验证 二、实例 1.源码 2.生成效果 一、使用的方法 1.使用正则表达式 使用正则表达式可以判断和限制用户输入的字符串长度。 比如验证用户密码不得少于8为&#xff0c;匹配的正则表达式"^.{8,}$"…

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

空气质量预测 | Matlab实现基于SVR支持向量机回归的空气质量预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 政府机构使用空气质量指数 (AQI) 向公众传达当前空气污染程度或预测空气污染程度。 随着 AQI 的上升,公共卫生风险也会增加。 不同国家有自己的空气质量指数,对应不同国家的空气质量标准。 基于支持向量机(Su…

高速接口PCB布局指南(一)高速信号接口概述

高速接口PCB布局指南&#xff08;一&#xff09;高速信号接口概述 1.什么是高速信号接口&#xff1f;2.高速信号PCB设计概述2.1 概述2.2 关键信号 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 1.什么是高速信号接口&#xff1f; 高速信号接口是指用于传输高…

jmeter-04创建请求

文章目录 一、发送请求-查看响应流程二、新建请求三、选择请求方式&#xff0c;填写url1.发送get请求当只有请求方式不一样的时候&#xff0c;参数都填写在参数栏里面&#xff0c;GET请求与POST请求的区别&#xff1f; 2.发送post请求2.1 application/x-www-form-urlencoded2.2…