Centos7搭建高可用Harbor集群

Centos7搭建高可用Harbor集群在Centos7搭建高可用Harbor集群
一、主机清单
IP地址主机名描述192.168.0.211/负载均衡VIP,5000端口192.168.0.212harbor01Harb

在Centos7搭建高可用Harbor集群

一、主机清单

IP 地址主机名描述192.168.0.211/负载均衡VIP,5000 端口192.168.0.212harbor01 Harbor 实例1,5000 端口192.168.0.213 Harbor02 Harbor 实例2,5000 端口192.168.0.214 为Docker Server 打包并上传Docker 镜像

Harbor01和Harbor02需要安装docker、docker-compose、harbor、keepalived

Docker 服务器需要安装docker 和docker-compose

二、系统升级

1、更新软件包列表

百胜更新-y

2、列出可用的 更新软件包

# 更新yum 列表

加载插件: 最快镜像

从缓存的主机文件加载镜像速度

*base:mirrors.aliyun.com

* extras: 镜像.ustc.edu.cn

* 更新: Mirrors.aliyun.com

3、查看当前系统版本

# cat /etc/centos-release

CentOS Linux 版本7.9.2009(核心)

4、更新系统

# 美味升级

# cat /etc/centos-release

CentOS Linux 版本7.9.2009(核心)

三、内核升级

1、查看当前内核版本

# uname -r

3.10.0-1160.71.1.el7.x86_64

2、查看可升级内核版本

# yum 列出内核

加载插件: 最快镜像

从缓存的主机文件加载镜像速度

*base:mirrors.aliyun.com

* extras: 镜像.ustc.edu.cn

* 更新: Mirrors.aliyun.com

已安装的软件包

内核.x86_64 3.10.0-1160.71.1.el7 @anaconda

kernel.x86_64 3.10.0-1160.119.1.el7 @更新

可以看到只有一个内核版本3.10.0,现在需要升级到内核6.9.7。您无法直接使用yum update kernel-* 进行修补和升级。

3、查看是否安装ELRepo

[root@harbor01 ~]# yum –disablerepo=\’*\’ –enablerepo=\’elrepo-kernel\’ 可用列表

加载插件: 最快镜像

检索elrepo-kernel 的存储库数据时发生错误。未找到存储库

ELRepo Source是国外专门针对Linux操作系统的第三方免费软件资源库,支持Linux和CentOS操作系统的软件安装和升级。

4、导入一个公钥

# rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

5、安装一下ELRepo源

# yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

6、安装新内核

# yum –enablerepo=elrepo-kernel 安装内核ml -y

7、设置新安装的内核成为默认启动选项

将配置文件中存储的GRUB_DEFAULT参数更改为0。

# sed -i s/saved/0/g /etc/default/grub

8、更新配置文件

# grub2-mkconfig -o /boot/grub2/grub.cfg

正在生成grub 配置文件.

找到Linux image: /boot/vmlinuz-6.9.7-1.el7.elrepo.x86_64

找到initrd image: /boot/initramfs-6.9.7-1.el7.elrepo.x86_64.img

找到Linux image: /boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64

找到initrd image: /boot/initramfs-3.10.0-1160.119.1.el7.x86_64.img

找到Linux image: /boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64

找到initrd image: /boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img

找到Linux image: /boot/vmlinuz-0-rescue-e227a3c248e94736968e30eee994bdb8

找到initrd image: /boot/initramfs-0-rescue-e227a3c248e94736968e30eee994bdb8.img

结尾

9、重启:reboot

重启

10、升级完成

# uname -r

6.9.7-1.el7.elrepo.x86_64

四、安装docker

1. 卸载旧版本(可选)

sudo yum 删除docker \\

码头工人客户端\\

docker-客户端-最新\\

Docker常见\\

码头工人最新\\

docker-最新-logrotate \\

docker-logrotate \\

码头引擎

2、安装需要的[软件包

sudo yum install -y yum-utils 设备映射器持久数据lvm2

3 、设置yum安装源

默认是外部yum源,一般用不到。已更改为阿里巴巴源。

//中央仓库

# yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

//我们建议在中国设立阿里巴巴仓库

# yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

加载插件: 最快镜像

从: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo添加存储库

获取文件http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 到/etc/yum.repos.d/docker-ce.repo

存储库已保存到/etc/yum.repos.d/docker-ce.repo

[root@harbor01 ~]# yum makecache fast

加载插件: 最快镜像

从缓存的主机文件加载镜像速度

*base:mirrors.aliyun.com

*elrepo: 镜像.tuna.tsinghua.edu.cn

* extras: 镜像.ustc.edu.cn

* 更新: Mirrors.aliyun.com

基础| 3.6 KB 00:00:00

docker-ce-稳定| 3.5 KB 00:00:00

电子仓库| 3.0 KB 00:00:00

额外| 2.9 KB 00:00:00

更新| 2.9 KB 00:00:00

(1/2): docker-ce-stable/7/x86_64/updateinfo 55 B 00:00:00

(2/2): docker-ce-stable/7/x86_64/primary_db 152 KB 00:00:00

元数据缓存已创建

4、查看docker可用版本

# yum list docker-ce –showduplicates sort -r

* 更新: Mirrors.aliyun.com

从缓存的主机文件加载镜像速度

加载插件: 最快镜像

* extras: 镜像.ustc.edu.cn

*elrepo: 镜像.tuna.tsinghua.edu.cn

docker-ce.x86_64 3:26.1.4-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.1.3-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.1.2-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.1.1-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.1.0-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.0.2-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.0.1-1.el7 docker-ce-稳定

docker-ce.x86_64 3:26.0.0-1.el7 docker-ce-稳定

docker-ce.x86_64 3:25.0.5-1.el7 docker-ce-稳定

docker-ce.x86_64 3:25.0.4-1.el7 docker-ce-稳定

docker-ce.x86_64 3:25.0.3-1.el7 docker-ce-稳定

docker-ce.x86_64 3:25.0.2-1.el7 docker-ce-稳定

docker-ce.x86_64 3:25.0.1-1.el7 docker-ce-稳定

docker-ce.x86_64 3:25.0.0-1.el7 docker-ce-稳定

5、安装docker

# 安装最新版本

百胜安装docker-ce docker-ce-clicontainerd.io docker-buildx-plugin docker-compose-plugin -y

#安装指定版本

百胜安装docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRINGcontainerd.io docker-buildx-plugin docker-compose-plugin -y

6、 开启docker服务

# systemctl 启动docker

# systemctl 状态泊坞窗

docker.service – Docker 应用容器引擎

Loaded: 已加载(/usr/lib/systemd/system/docker.service;已禁用;供应商预设:已禁用)

Active: 2024 年6 月29 日星期六00:23:30 自33 秒CST 起处于活动状态(正在运行)

Docs: https://docs.docker.com

主PID: 1692 (dockerd)

任务: 10

内存: 32.2M

CGroup:/system.slice/docker.service

1692 /usr/bin/dockerd -H fd://–containerd=/run/containerd/containerd.sock

6 月29 日00:23:28 Harbor01 systemd[1]: 启动Docker 应用程序容器引擎.

6月29日00:23:28 Harbor01 dockerd[1692]:时间=\’2024-06-29T00:23:28.660489449+08:00\’level=info msg=\’开始\’

6 月29 日00:23:28 Harbor01 dockerd[1692]: time=\’2024-06-29T00:23:28.900546935+08:00\’ level=info msg=\’开始加载容器: \’

6 月29 日00:23:30 Harbor01 dockerd[1692]: time=\’2024-06-29T00:23:30.264744262+08:00\’ level=info msg=\’Firewalld: Interface Dock.urning\’

6月29日00:23:30 Harbor01 dockerd[1692]: time=\’2024-06-29T00:23:30.532756602+08:00\’ level=info msg=\’Container :已完成加载。 \’

6月29日00:23:30 Harbor01 dockerd[1692]:时间=\’2024-06-29T00:23:30.606393989+08:00\’level=info msg=\’Docker daemon\’commit=de5.=26.1.4

6月29日00:23:30 Harbor01 dockerd[1692]: time=\’2024-06-29T00:23:30.606732113+08:00\’ level=info msg=\’守护进程已完成初始化\’

6 月29 日00:23:30 Harbor01 dockerd[1692]: time=\’2024-06-29T00:23:30.863205537+08:00\’ level=info msg=\’API 监听/run/docker.sock\’

6 月29 日00:23:30 Harbor01 systemd[1]: 启动Docker 应用容器引擎。

提示: 省略了一些行。使用-l 进行完整显示。

7、安装阿里云镜像加速器

tee /etc/docker/daemon.json -\’EOF\’

{

\’registry-mirrors\’: [\’https://复制自己的加速器地址。镜像.aliyuncs.com\’]

}

结束后

重新加载systemctl 守护进程

systemctl 重新启动docker

8、设置docker开机自启

# 启用systemctl docker

我创建了从/etc/systemd/system/multi-user.target.wants/docker.service 到/usr/lib/systemd/system/docker.service 的符号链接。

五、安装docker-compose(通过python的pip安装)

# 安装epel-release

yum install -y epel-release

# 安装Python-pip

yum 安装-y python-pip

# 安装python3-pip

百胜安装-y python3-pip

# 更新点

pip3安装–升级pip

# 安装docker-compose

pip3 安装docker-compose

# 查看docker-compose的版本号

docker-compose-版本

六、安装harbor

1、下载并解压harbor安装包

cd /usr/local

wget https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz

tar -zxvf Harbor离线安装程序v2.11.0.tgz

2、拷贝并编辑yml文件

CD港

cp 港口.yml.tmpl 港口.yml

vimharbor.yml

修改主机名、端口、注释https相关参数。

3、执行./install.sh

。 /安装

4、执行./prepare.sh

。 /准备

docker-compose down -v

docker-compose up -d

#开放防火墙端口

防火墙cmd –zone=public –add-port=5000/tcp –permanent

防火墙-cmd –重新加载

5、登录

6、设置Harbor开机自启

vim /usr/lib/systemd/system/harbor.service

[单元]

描述=端口

After=docker.service systemd-networkd.service systemd-resolved.service

需要=docker.service

文档=http://github.com/vmware/harbor

[服务]

类型=简单

重新启动=失败时

重启秒=5

ExecStart=/usr/local/bin/docker-compose -f /usr/local/harbor/docker-compose.yml up

ExecStop=/usr/local/bin/docker-compose -f /usr/local/harbor/docker-compose.yml down

[安装]

WantedBy=多用户.Target

7、服务启动

使用systemctl 启用港口

systemctl 启动港口

8. 数据变更

mon.json

分别在harbor01、harbor02、Docker Server三台主机添加 insecure-registries

# vim /etc/docker/daemon.json
{
\”registry-mirrors\”: [\”https://复制自己的加速器地址.aliyuncs.com\”],
\”insecure-registries\”:[\”192.168.0.211:5000\”,\”192.168.0.212:5000\”,\”192.168.0.213:5000\”]
}
# systemctl daemon-reload
# systemctl restart docker

在harbor01、harbor02主机执行以下命令

docker-compose down -v
docker-compose up -d

9、分别在3台主机验证登录harbor服务器

# docker login 192.168.0.212:5000
# docker login 192.168.0.213:5000

显示Login Succeeded代表登录成功

七、实现Harbor仓库双向同步

1、新建目标

2、创建复制规则

八、实现高可用

1、安装keepalived

选择指定版本下载的地址

#分别在harbor01、harbor02主机安装
yum -y install make gcc openssl-devel libnfnetlink-devel libnl3-devel net-snmp-devel
yum install -y keepalived
cd /usr/local/
#安装最新版本的keepalived
wget https://keepalived.org/software/keepalived-2.3.1.tar.gz
tar vxf keepalived-2.3.1.tar.gz -C /usr/local/src
cd src/keepalived-2.3.1/
./configure –prefix=/usr/local/keepalived
make -j 4 && make install

cd /usr/local/keepalived/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

2、编写harbor健康检查脚本

# vim /usr/local/check_harbor.sh

脚本的具体内容

#!/bin/sh
# Harbor的健康检查URL
HARBOR_HEALTH_URL=\”http://localhost:5000/api/v2.0/health\”

# 发送请求并检查状态码
if curl -s –output /dev/null –write-out \”%{http_code}\” \”$HARBOR_HEALTH_URL\” | grep -q \’^200$\’; then
exit 0 # Harbor健康
else
exit 1 # Harbor不健康
fi

修改sh文件为可以执行状态

chmod +x /usr/local/check_harbor.sh

3、修改keepalived配置

vim /etc/keepalived/keepalived.conf

主节点harbor01

! Configuration File for keepalived
global_defs {
notification_email {
111111111@qq.com
}
router_id harbor_master
}
vrrp_script check_harbor {
script \”/usr/local/check_harbor.sh\”
interval 10 # 每10秒检查一次
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens3
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass harbor1111
}
unicast_src_ip 192.168.0.212
unicast_peer {
192.168.0.213
}
virtual_ipaddress {
192.168.0.211
}
track_script {
check_harbor
}
}

备节点harbor02

! Configuration File for keepalived
global_defs {
notification_email {
111111111@qq.com
}
router_id harbor_backup
}
vrrp_script check_harbor {
script \”/usr/local/check_harbor.sh\”
interval 10 # 每10秒检查一次
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface ens3
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass harbor1111
}
unicast_src_ip 192.168.0.213
unicast_peer {
192.168.0.212
}
virtual_ipaddress {
192.168.0.211
}
track_script {
check_harbor
}
}

启动keepalived

systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived

检测vip是否正常启用

检查在Docker Server使用vip登录是否正常

[root@dockerserver214 ~]# docker login 192.168.0.211:5000
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

4、向Harbor推送镜像

[root@dockerserver214 ~]# docker pull nginx
[root@dockerserver214 ~]# docker tag nginx:latest 192.168.0.211:5000/library/nginx:latest
[root@dockerserver214 ~]# docker push 192.168.0.211:5000/library/nginx

5、在harbor拉取镜像

[root@dockerserver214 ~]# docker pull 192.168.0.211:5000/library/nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3
Status: Downloaded newer image for 192.168.0.211:5000/library/nginx:latest
192.168.0.211:5000/library/nginx:latest

九、配置https

1、创建ssl证书

#创建目录
mkdir -p /usr/local/cret
cd /usr/local/cret/
#安装所需工具
yum -y install openssl
#创建ca密钥
openssl genrsa -out ca.key 4096
#创建ca证书,前提是已经创建了ca密钥
openssl req -x509 -new -nodes -sha512 -days 3650 -subj \”/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.0.211\” -key ca.key -out ca.crt
#在创建已宿主机IP地址为名称的私钥
openssl genrsa -out 192.168.0.211.key 4096
openssl req -sha512 -new -subj \”/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.0.211\” -key 192.168.0.211.key -out 192.168.0.211.csr
cat > v3.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=192.168.1.11
EOF

openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in 192.168.0.211.csr -out 192.168.0.211.crt

所有ssl正式已经创建完成

2、 修改Harbor文件

3、启动harbor

docker-compose down -v
docker-compose up -d

4、修改harbor健康检查脚本

#!/bin/sh
# Harbor的健康检查URL
HARBOR_HEALTH_URL=\”https://localhost/api/v2.0/health\”

# 发送请求并检查状态码
if curl -s –insecure –output /dev/null –write-out \”%{http_code}\” \”$HARBOR_HEALTH_URL\” | grep -q \’^200$\’; then
exit 0 # Harbor健康
else
exit 1 # Harbor不健康
fi

5、修改daemon.json

分别在harbor01、harbor02、Docker Server三台主机添加 insecure-registries

# vim /etc/docker/daemon.json
{
\”registry-mirrors\”: [\”https://复制自己的加速器地址.aliyuncs.com\”],
\”insecure-registries\”:[\”192.168.0.211\”,\”192.168.0.212\”,\”192.168.0.213\”]
}
# systemctl daemon-reload
# systemctl restart docker

6、重新新建目标

7、创建复制规则

8、向Harbor推送镜像

[root@dockerserver214 ~]# docker pull nginx
[root@dockerserver214 ~]# docker tag nginx:latest 192.168.0.211/library/nginx:latest
[root@dockerserver214 ~]# docker push 192.168.0.211/library/nginx:latest

#以上关于Centos7搭建高可用Harbor集群的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92824.html

Like (0)
CSDN的头像CSDN
Previous 2024年7月4日
Next 2024年7月4日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注