在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