Harbor高可用集群设计及部署(基于离线安装方式一)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 基于Harbor离线安装方式的高可用方案设计及部署。

一、环境说明

1.1 架构图

Harbor高可用架构图

【架构解析】:将Harbor的redis缓存组件、PostgreSQL数据库组件迁移到系统外部做高可用,使用外部共享存储实现多个Harbor实例的数据共享,Harbor实例可横向扩展。

1.2 主机清单

IP地址 主机名 描述
192.168.2.107 harbor1 Harbor实例1,8021端口
192.168.2.108 harbor2 Harbor实例2,8021端口
192.168.2.110 harbor-data 部署Harbor实例的共享存储、外部数据库、外部缓存服务
192.168.2.111 / 负载均衡VIP,8121端口

1.3 服务版本

服务 版本要求 安装版本
Harbor / 2.3.5
Docker 17.06.0+ 19.03.8
Docker-compose 1.18.0+ v2.2.3
Redis 6.0.16 6.2.7
PostgreSQL v13.2 13.5

二、主机初始化

Harbor实例进行初始化

  • 安装docker
  • 安装docker-compose
  • 配置内核参数

2.1 安装docker

$ wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum install -y docker-ce
$ systemctl enable  --now docker
$ systemctl status docker
$ cat <<EOF > /etc/docker/daemon.json
{
   "registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
   "exec-opts": ["native.cgroupdriver=systemd"],  
   "registry-mirrors": ["https://3hjcmqfe.mirror.aliyuncs.com"], 
   "log-driver": "json-file",
   "log-opts": {
           "max-size": "500m",
           "max-file": "2" 
        }
}
EOF 
$ systemctl daemon-reload
$ systemctl restart docker

exec-opts": ["native.cgroupdriver=systemd"],     #驱动器 registry-mirrors: 镜像加速地址,可多个 max-file: log最多保留数量 live-restore: 重启docker不重启容器,多用于k8s上

2.2 安装docker-compose

安装docker-compose 1.18.0以上的版本,本处安装v2.2.3版本。

$ wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
$ mv  docker-compose-linux-x86_64 /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose version
Docker Compose version v2.2.3

2.3 配置内核参数

$ modprobe br_netfilter
$ cat >> /etc/sysctl.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1      #路由转发
EOF
$ sysctl -p

三、使用NFS提供外部共享存储

192.168.2.110部署NFS服务提供共享存储给Harbor1实例、Harbor2实例使用。192.168.2.110作为NFS服务端,harbor实例为客户端。

3.1 部署NFS服务端

1)安装并启动nfs

$ yum  install -y  nfs-utils 
$ systemctl start nfs && systemctl enable nfs  && systemctl status nfs
$ chkconfig nfs on              #设置为开机自启

2)创建共享目录

客户端的数据将远程存入到共享目录下。

$ mkdir -p /data/harbor_data

3)修改配置

$ cat /etc/exports 
/data/harbor_data  192.168.2.0/24(rw,no_root_squash)  #允许哪个网段的客户端使用指定共享目录
$ exportfs -arv            #使配置文件生效
exporting 192.168.2.0/24:/data/harbor_data

4)重启nfs服务

$ systemctl restart nfs

5)检查共享目录信息

$ showmount  -e localhost                    
export list for localhost:
/data/harbor_data

3.2 部署客户端

在harbor1和harbor2上操作

$ yum -y install nfs-utils
$ systemctl start nfs-utils &&  systemctl enable nfs-utils && systemctl status  nfs-utils

3.3 客户端挂载NFS共享存储

在harbor1和harbor2节点操作,创建实例的存储目录,然后挂载到NFS。

$ mkdir -p /data/harbor_data 
$ cat <<EOF >> /etc/fstab
192.168.2.110:/data/harbor_data /data/harbor_data nfs  defaults  0 0
EOF 
$ mount -a

挂载格式:NFSIP:共享目录   本地目录  nfs defaults 0 0

  • 测试是否可以正常使用:
[root@harbor2 ~]# touch  /data/harbor_data/test.txt 
[root@harbor1 ~]# ls /data/harbor_data/
test.txt

四、部署Redis缓存服务(源码)

本处为演示环境,实际生产环境请对Redis服务做高可用数据备份

192.168.2.110部署Redis缓存服务,为harbor1harbor2实例提供外部redis缓存服务。

4.1 下载安装包

$ wget https://download.redis.io/releases/redis-6.2.7.tar.gz

4.2 安装依赖包

$ yum  install  -y  gcc  gcc-c++

4.3 源码编译

$ mkdir -p /app/
$ tar zxvf  redis-6.2.7.tar.gz  -C /app
$ cd /app/redis-6.2.7/
$ make   #编译
$ make  install   #安装

4.4 修改配置文件

redis默认只支持本地使用,本处需要修改几个参数:

  • 外部可连接;
  • redis启动方式;
  • redis远程连接密码;
$ vim  /app/redis-6.2.7/redis.conf 
#bind 127.0.0.1 -::1  #75行,注释掉bind的行,允许任何主机连接;
daemonize yes       #259行,将no修改为yes,使redis可以使用守护进程方式启动;
requirepass lidabai666   #903行,设置redis连接的auth密码(lidabai666)

4.5 启动Redis服务

前面配置了使用守护进程方式启动,所以直接使用systemctl则可以启动redis服务。

$ pwd
/app/redis-6.2.7
$ redis-server redis.conf

4.6 服务验证

1)查看Redis服务版本

$ redis-cli -v
redis-cli 6.2.7

2)查看端口

redis默认监听6379端口

$ ps aux | grep  6379
root  6200  0.1  0.2 162416 10020 ?  Ssl 17:59  0:00 redis-server *:6379
root  6231  0.0  0.0 112720  984 pts/0  R+  18:01  0:00 grep --color=auto 6379

3)客户端连接Redis

harbor1harbor2作为redis客户端

$ which redis-cli      #查看redis-cli工具位置
/usr/local/bin/redis-cli
[root@harbor-data redis-6.2.7]# scp /usr/local/bin/redis-cli  192.168.2.107:/usr/local/bin/
[root@harbor-data redis-6.2.7]# scp /usr/local/bin/redis-cli  192.168.2.108:/usr/local/bin/

客户端使用redis-cli工具连接Redis服务器

[root@harbor1 ~]# redis-cli  -h 192.168.2.110 -p 6379 -a lidabai666

-a 参数指定redis连接密码

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
存储 运维 Kubernetes
服务搭建篇(十二) Kubernetes集群的安装及部署
在所有k8s node机器执行上图第三个红框里的命令 将node节点加入进master节点的集群里,复制上图第三个红框里的命令执行(执行自己的命令)
313 0
|
2月前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
123 15
Docker自建仓库之Harbor高可用部署实战篇
|
1月前
|
弹性计算 Kubernetes Linux
如何使用minikube搭建k8s集群
如何使用minikube搭建k8s集群
|
关系型数据库 MySQL Nacos
生产环境下的终极指南:在生产环境部署 Nacos 集群和高可用 MySQL 使用 Docker
生产环境下的终极指南:在生产环境部署 Nacos 集群和高可用 MySQL 使用 Docker
812 0
|
6月前
|
数据安全/隐私保护 Docker 容器
离线方式部署harbor
离线方式部署harbor
95 2
|
6月前
|
负载均衡 容灾 安全
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/5)
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/5)
258 2
|
6月前
|
存储 Kubernetes 监控
K8S集群上安装KubeSphere的详细过程
K8S集群上安装KubeSphere的详细过程
131 0
|
Kubernetes 调度 容器
kubeadm方式搭建的k8s集群升级——2023.05
kubeadm方式搭建的k8s集群升级——2023.05
194 1
|
关系型数据库 应用服务中间件 数据库
Harbor高可用集群设计及部署(基于离线安装方式二)
基于Harbor离线安装方式的高可用方案设计及部署。
418 0
|
缓存 Kubernetes Linux
安装kubernetes集群-灵活安装k8s各个版本高可用集群(上)
安装kubernetes集群-灵活安装k8s各个版本高可用集群