Harbor高可用设计,使用外部数据库-详细到爆的操

哈喽!大家好,我是李大白!

本篇文章主要分享将Harbor的数据库组件放置到外部,在Harbor高可用中提供了良好的基础,实操性强,建议收藏~~~

前言

Harbor作为目前最受欢迎的镜像仓库,其Helm部署的方式因kubernetes的因素才可以实现高可用,其它的安装方式(在线安装、离线安装)官方并不提供高可用的服务,需要自行设计高可用方案。

而harbor高可用设计,其最重要的一环即是如何实现数据的共享。

本篇文章主要是讲Harbor的数据库组件(harbor-db)放到Harbor外面,即使用外部的PostgreSQL数据库存放Harbor的数据。


1-环境说明

本篇文章以Harbor 2.3.5版本为演示环境,对应的PostgreSQL版本为13.5,其它的版本对应关系需要注意,因为是演示环境,为减少操作,Harbor并没有使用HTTPS安全加密端口。

IP

端口

服务版本

Harbor服务器

192.168.2.250

80

2.3.5

PostgreSQL服务器

192.168.2.43

5432

13.5

2-创建外部数据库2.1 下载源码包[root@ceph3 postgresql]# wget https://ftp.postgresql.org/pub/source/v13.5/postgresql-13.5.tar.gz[root@ceph3 postgresql]# tar zxvf postgresql-13.5.tar.gz[root@ceph3 postgresql]# cd postgresql-13.5/[root@ceph3 postgresql-13.5]# pwd/app/postgresql/postgresql-13.5[root@ceph3 postgresql-13.5]# lsaclocal.m4 config configure configure.in contrib COPYRIGHT doc GNUmakefile.in HISTORY INSTALL Makefile README src2.2 安装依赖包yum -y install readline-devel zlib-devel gcc zlib2.3 编译安装[root@ceph3 postgresql-13.5]# ./configure –prefix=/usr/local/postgresql[root@ceph3 postgresql-13.5]# make && make install2.4 新建用户

默认超级用户(root)不能启动postgresql,需要手动建用户postgres。

[root@ceph3 postgresql-13.5]# useradd postgres2.5 创建数据目录mkdir -p /data/postgresql/datachown -R postgres:postgres /usr/local/postgresql/chown -R postgres:postgres /data/postgresql/data/

2.6 设置postgres环境变量| 切换用户[root@ceph3 postgresql-13.5]# su – postgres| .bash_profile添加环境变量[postgres@ceph3 ~]$ vim + .bash_profile 在末尾添加以下几行PGHOME=/usr/local/postgresql #psql安装目录export PGHOMEPGDATA=/data/postgresql/data #数据库目录export PGDATAPATH=$PATH:$HOME/bin:$HOME/.local/bin:$PGHOME/binexport PATHl使配置立即生效[postgres@ceph3 ~]$ source ./.bash_profilel查看安装路径[postgres@ceph3 ~]$ which psql/usr/local/postgresql/bin/psqll查看版本[postgres@ceph3 ~]$ psql -Vpsql (PostgreSQL) 13.5

2.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 –auth-host, the next time you run initdb.Success. You can now start the database server using: //表示初始化成功 pg_ctl -D /data/postgresql/data -l logfile start

2.8 启动PostgreSQL

启动命令即为刚才初始化成功后的提示!

[postgres@ceph3 ~]$ pg_ctl -D /data/postgresql/data -l logfile startwaiting for server to start…. doneserver started3-设置(修改)Postgresql密码

默认psql本地登录是不需要密码的,即使我们设置了密码,也不需要密码就能登录。应为配置文件pg_hba.conf中的local设置为trust , 为了安全我们修改为 password,就是使用密码才能登陆,(当我们忘记密码的时间,也可以使用这用方式,先设置为trust之后,修改密码,然后在设置为password。)

3.1 设置密码[postgres@ceph3 ~]$ psqlpsql (13.5)Type “help” for help.postgres=# \passwordEnter new password: //密码(Sx703…Enter it again: //确认密码3.2设置可以远程登录[postgres@ceph3 ~]$ vim /data/postgresql/data/postgresql.conflisten_addresses = ‘*’ # what IP address(es) to listen on;[postgres@ceph3 data]$ vim /data/postgresql/data/pg_hba.conflocal all all password #默认trust,本地登录不要密码,设置为password使用密码登录。host all all ::1/128 passwordhost all all 0.0.0.0/0 password #ip地址修改为0.0.0.0/0,

3.3 重启PostgreSQL[postgres@ceph3 data]$ pg_ctl -D /data/postgresql/data -l /data/postgresql/data/postgres.log restartwaiting for server to shut down…. doneserver stoppedwaiting for server to start…. doneserver started4-创建数据库

Harbor 2.3.5需要创建的数据库:notaryserver、notarysigner、registry 目前Harbor仅支持PostgraSQL数据库,需要手动在外部的PostgreSQL上创建harbor、notary_signer、notary_servers三个数据库,Harbor启动时会自动在对应数据库下生成表。

因为本文主要是演示环境,PostgreSQL数据库的用户就以超级管理员- postgres为例,如果是生产环境,建议新建用户,并授予harbor、notary_signer、notary_servers三个数据库相对应的权限。

postgres=# create database registry;CREATE DATABASEpostgres=# create database notary_signer;CREATE DATABASEpostgres=# create database notary_servers;CREATE DATABASEpostgres=# \l

创建用户

postgres=# create user server with password ‘123456’;postgres=# create user signer with password ‘123456’postgres=# \du List of roles Role name | Attributes | Member of ———–+————————————————————+———– postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} server | | {} signer | | {}

5-停止Harbor服务

停止期间Harbor将无法提供服务,生产环境需要注意评估对业务的影响。

[root@Over harbor]# docker-compose down

如图表示停止Harbor服务成功,如果停止失败需要根据报错来排查了。

6-修改Harbor配置文件

Harbor默认使用本地数据库,要使用外部数据库,则需要对配置文件进行修改。在配置文件中启用外部数据库。

6.1 启用外部数据库[root@Over harbor]# vim harbor.yml…external_database: harbor: host: 192.168.2.43 # 数据库主机地址 port: 5432 # 数据库端口 db_name: registry # 数据库名称 username: postgres # 连接该数据库的用户名 password: Sx703826 # 连接数据库的密码 ssl_mode: disable max_idle_conns: 2 max_open_conns: 0 notary_signer: host: 192.168.2.43 port: 5432 db_name: notary_signer username: postgres password: Sx703826 ssl_mode: disable notary_server: host: 192.168.2.43 port: 5432 db_name: notary_server username: postgres password: Sx703826 ssl_mode: disable

????: external_database左边是没有空格的,其它行配置对其方式也得注意下。否则在执行./prepare会出现报错。

7-将配置文件注入到组件中

将harbor.yml配置文件的内容注入到各组件的配置文件中。

[root@Over harbor]# ./prepare prepare base dir is set to /app/harbor………Clean up the input dir

8-install Harbor安装前可以查看安装的参数[root@Over harbor]# ./install.sh –helpPlease set –with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https. Please set –with-trivy if needs enable Trivy in HarborPlease set –with-chartmuseum if needs enable Chartmuseum in Harbor执行./install.sh安装[root@Over harbor]# ./install.sh[Step 0]: checking if docker is installed …Note: docker version: 19.03.8[Step 1]: checking docker-compose is installed …Note: docker-compose version: 1.29.2查看组件状态[root@Over harbor]# docker-compose ps

登录Harbor UI

在浏览器输入harbor的IP地址即可访问。

用户名:admin密码: Harbor12345

然后点击【登录】

成功!

最后就可以从PosqlgreSQL数据库查看每个库下的表信息了。

爱的力量大到可以使人忘记一切,却又小到连一粒嫉妒的沙石也不能容纳

Harbor高可用设计,使用外部数据库-详细到爆的操

相关文章:

你感兴趣的文章:

标签云: