Harbor高可用集群设计及部署(实操+视频),基于离线安装方式
Posted 键客李大白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Harbor高可用集群设计及部署(实操+视频),基于离线安装方式相关的知识,希望对你有一定的参考价值。
【摘要】基于离线安装方式的Harbor高可用集群部署方案,从理论到实践,文档 + 视频结合的方式全面、详细的对部署过程进行解读。
1.环境说明
1.1 架构图
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 集群拓扑图
1.4 服务版本
相关服务的版本要求如表:
服务 | 版本要求 | 安装版本 |
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 |
2.主机初始化
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
3.使用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 #设置为开机自启
注意:正在将请求转发到“systemctl enable nfs.service”。
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
4.部署Redis缓存服务(源码)
在192.168.2.110部署Redis缓存服务,为harbor1和harbor2实例提供外部redis缓存服务。
Redis是一款高性能的key/value分布式内存数据库。
4.1 下载安装包
[root@harbor-data ~]# wget https://download.redis.io/releases/redis-6.2.7.tar.gz
4.2 安装依赖包
[root@harbor-data ~]# yum install -y gcc gcc-c++
4.3 源码编译
[root@harbor-data ~] mkdir -p /app/
[root@harbor-data ~] tar zxvf redis-6.2.7.tar.gz -C /app
[root@harbor-data ~] cd /app/redis-6.2.7/
[root@harbor-data redis-6.2.7]# make #编译
[root@harbor-data redis-6.2.7]# make install #安装
4.4 修改配置文件
redis默认只支持本地使用,本处需要修改为外部可连接;
redis启动方式;
redis远程连接密码;
[root@harbor-data ~]# 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服务。
[root@harbor-data redis-6.2.7]# pwd
/app/redis-6.2.7
[root@harbor-data redis-6.2.7]# redis-server redis.conf
4.6 查看Redis服务版本
[root@harbor-data redis-6.2.7]# redis-cli -v
redis-cli 6.2.7
4.7 查看端口
redis默认监听6379端口
[root@harbor-data redis-6.2.7]# 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
4.8 客户端连接Redis
harbor1和harbor2作为redis客户端
客户端使用redis-cli工具连接Redis服务器
[root@harbor-data redis-6.2.7]# 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/
[root@harbor1 ~]# redis-cli -h 192.168.2.110 -p 6379 -a lidabai666
-a参数指定redis连接密码
5.部署PostgreSQL外部数据库服务(源码)
在192.168.2.110主机以源码的方式安装PostgreSQL数据库服务,为harbor1和harbor2实例提供共享存储。
5.1 新建postgres用户
默认超级用户(root)不能启动postgresql,需要手动建用户postgres。
[root@harbor-data ~]# useradd postgres
[root@harbor-data ~]# id postgres
uid=1000(postgres) gid=1000(postgres) 组=1000(postgres)
5.2 安装依赖包
[root@harbor-data ~]# yum -y install readline-devel zlib-devel gcc zlib
5.3 下载解压源码包
$ wget https://ftp.postgresql.org/pub/source/v13.5/postgresql-13.5.tar.gz --no-check-certificate
$ tar zxvf postgresql-13.5.tar.gz -C /app/
5.4 编译安装
[root@harbor-data ~]# cd /app/postgresql-13.5/
[root@harbor-data postgresql-13.5]# ./configure --prefix=/usr/local/postgresql
[root@harbor-data postgresql-13.5]# make && make install
5.5 创建数据目录
$ mkdir -p /data/postgresql/data
$ chown -R postgres:postgres /usr/local/postgresql/
$ chown -R postgres:postgres /data/postgresql/data/
5.6 设置postgres环境变量
[root@harbor-data postgresql-13.5]# su - postgres
[postgres@harbor-data ~]$ vim + .bash_profile
PGHOME=/usr/local/postgresql #psql安装目录
export PGHOME
PGDATA=/data/postgresql/data #数据库目录
export PGDATA
PATH=$PATH:$HOME/bin:$HOME/.local/bin:$PGHOME/bin
export PATH
[postgres@harbor-data ~]$ source ./.bash_profile
[postgres@harbor-data ~]$ which psql
/usr/local/postgresql/bin/psql
- 查看版本
[postgres@harbor-data ~]$ psql -V
psql (PostgreSQL) 13.5
5.7 初始化数据库
由于 Red Hat 系列发行版的政策,PostgreSQL 安装不会启用自动启动或自动初始化数据库。要完成数据库安装,您需要根据您的发行版执行以下步骤:
[postgres@ceph3 ~]$ initdb
......
You can change this by editing pg_hba.conf or
using the option -A, or
--auth-local and 基于共享存储的Harbor高可用-Docker部署方案