Centos7搭建高可用Harbor集群

在Centos7搭建高可用Harbor集群

一、主机清单

IP地址 主机名 描述
192.168.0.211 / 负载均衡VIP,5000端口
192.168.0.212 harbor01 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 Server服务器需要安装docker 、docker-compose

  • 二、系统升级

1、更新软件包列表

yum update -y

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

# yum list updates
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.aliyun.com

3、查看当前系统版本

# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

4、更新系统

# yum upgrade
# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

三、内核升级

1、查看当前内核版本

# uname -r
3.10.0-1160.71.1.el7.x86_64

2、查看可升级内核版本

# yum list kernel 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.aliyun.com
Installed Packages
kernel.x86_64                  3.10.0-1160.71.1.el7                                             @anaconda
kernel.x86_64                  3.10.0-1160.119.1.el7                                            @updates

可以看出只有一个内核版本3.10.0,而这次需要升级到内核6.9.7。不能直接使用yum update kernel-*打补丁升级了

3、查看是否安装ELRepo

[root@harbor01 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror


Error getting repository data for elrepo-kernel, repository not found

ELRepo源是国外的一个只对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 install kernel-ml -y

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

将配置文件中GRUB_DEFAULT参数saved改为0

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

8、更新配置文件

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.9.7-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-6.9.7-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.119.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-e227a3c248e94736968e30eee994bdb8
Found initrd image: /boot/initramfs-0-rescue-e227a3c248e94736968e30eee994bdb8.img
done

9、重启:reboot

# reboot

10、升级完成

# uname -r
6.9.7-1.el7.elrepo.x86_64

四、安装docker

1. 卸载旧版本(可选)

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、安装需要的[软件包

sudo yum install -y yum-utils device-mapper-persistent-data 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
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@harbor01 ~]# yum makecache fast
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.aliyun.com
base                                                                                                           | 3.6 kB  00:00:00     
docker-ce-stable                                                                                               | 3.5 kB  00:00:00     
elrepo                                                                                                         | 3.0 kB  00:00:00     
extras                                                                                                         | 2.9 kB  00:00:00     
updates                                                                                                        | 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                            
<think>好的,我需要帮助用户在三台服务器上部署Harbor集群。首先,我需要回忆Harbor的基本概念和集群部署的要求。Harbor是一个企业级的Docker镜像仓库,支持高可用集群部署。用户提到了三台服务器,所以应该考虑多节点的高可用架构。 根据引用[1]和[2],用户之前接触过Docker Swarm和RKE2集群的部署,可能对容器编排和集群管理有一定的了解。Harbor高可用部署通常需要共享存储、数据库集群、Redis集群和负载均衡等组件。需要确保用户的环境满足这些前提条件,比如安装DockerDocker Compose,以及配置共享存储如NFS或Ceph。 接下来,部署步骤可能包括配置数据库(如PostgreSQL集群)、配置Redis集群、部署Harbor服务到每个节点,并设置负载均衡器如Nginx或HAProxy。此外,还需要考虑证书配置,确保HTTPS访问,这对生产环境是必须的。用户可能需要生成自签名证书或使用Let's Encrypt。 在生成相关问题时,要围绕部署中的关键点,比如高可用架构设计、负载均衡配置、数据持久化方法、备份恢复策略以及监控日志方案。这些问题能帮助用户深入理解Harbor集群的各个方面,并解决可能遇到的挑战。 需要注意的是,用户提供的引用中提到了Docker Stack、Portainer、RKE2和Rancher,可能用户对容器编排工具比较熟悉,因此在回答中可以适当提及与这些工具的集成,但Harbor本身主要使用Docker Compose或Kubernetes进行部署。需要确保步骤清晰,命令准确,避免语法错误,同时符合用户的中文回答要求。 最后,确保所有数学表达式和代码块格式正确,独立公式用$$...$$,行内用$...$,但当前问题可能涉及较少数学内容,更多是部署命令和配置。检查是否有需要引用的地方,比如用户提供的引用[1]和[2]中的部分,但Harbor部署可能主要参考官方文档,需要确认是否有必要添加引用标识。</think>### 在三台服务器上部署Harbor集群的最佳实践 #### 一、部署前提 1. **服务器配置** - 三台CentOS 7.9/Ubuntu 20.04服务器(建议4核8GB以上配置) - 网络互通且开放以下端口:`80`、`443`、`4443`(Harbor核心服务)、`6379`(Redis)、`5432`(PostgreSQL) - 已安装Docker 20.10+和Docker Compose 2.0+[^1] 2. **共享存储** - 使用NFS、Ceph或MinIO搭建共享存储,确保镜像数据持久化[^2]。 --- #### 二、部署步骤 1. **配置数据库集群(PostgreSQL)** ```bash # 在三台服务器上部署PostgreSQL集群(示例使用Patroni+etcd) docker run -d --name postgres-node1 \ -e PATRONI_NAME=node1 \ -e PATRONI_POSTGRESQL_DATA_DIR=/var/lib/postgresql/data \ -v /data/postgres:/var/lib/postgresql/data \ patroni:latest ``` **关键点**:确保三节点形成高可用集群,配置同步复制。 2. **配置Redis集群(Sentinel模式)** ```bash # 主节点 docker run -d --name redis-master -p 6379:6379 redis:alpine # 从节点与Sentinel docker run -d --name redis-slave --link redis-master:master redis:alpine redis-server --slaveof master 6379 ``` 3. **部署Harbor服务** - 下载Harbor离线包并修改`harbor.yml`: ```yaml # 高可用配置示例 external_url: https://harbor.example.com database: password: "your_password" max_idle_conns: 50 redis: url: redis://redis-cluster:6379/0 data_volume: /nfs/harbor-data # 共享存储路径 ``` - 生成证书(自签名或Let's Encrypt): ```bash openssl req -x509 -newkey rsa:4096 -nodes -days 365 \ -keyout harbor.key -out harbor.crt -subj "/CN=harbor.example.com" ``` - 启动Harbor(每台服务器): ```bash ./install.sh --with-clair --with-chartmuseum # 按需添加组件 ``` 4. **配置负载均衡(Nginx示例)** ```nginx upstream harbor { server 192.168.1.10:443; server 192.168.1.11:443; server 192.168.1.12:443; } server { listen 443 ssl; ssl_certificate /path/to/harbor.crt; ssl_certificate_key /path/to/harbor.key; location / { proxy_pass https://harbor; } } ``` --- #### 三、验证与运维 1. **功能验证** ```bash docker login harbor.example.com # 输入用户名密码测试登录 ``` 2. **数据持久化检查** ```bash ls /nfs/harbor-data # 确认共享存储中有镜像数据 ``` 3. **高可用测试** 手动关闭一台Harbor节点,验证服务是否自动切换。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值