当前位置 : 主页 > 操作系统 > centos >

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

来源:互联网 收集:自由互联 发布时间:2022-06-20
哈喽!大家好,我是李大白! 本篇文章主要分享将Harbor的数据库组件放置到外部,在Harbor高可用中提供了良好的基础,实操性强,建议收藏~~~ 前言 Harbor作为目前最受欢迎的镜像仓库,

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]# ls
aclocal.m4 config configure configure.in contrib COPYRIGHT doc GNUmakefile.in
HISTORY INSTALL Makefile README src

2.2 安装依赖包

yum -y install readline-devel zlib-devel gcc zlib

2.3 编译安装

[root@ceph3 postgresql-13.5]# ./configure --prefix=/usr/local/postgresql
[root@ceph3 postgresql-13.5]# make && make install

2.4 新建用户

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

[root@ceph3 postgresql-13.5]# useradd postgres

2.5 创建数据目录

mkdir -p /data/postgresql/data
chown -R postgres:postgres /usr/local/postgresql/
chown -R postgres:postgres /data/postgresql/data/

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


2.6 设置postgres环境变量

  • | 切换用户
[root@ceph3 postgresql-13.5]# su - postgres
  • |  .bash_profile添加环境变量
[postgres@ceph3 ~]$ 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
  • l使配置立即生效
[postgres@ceph3 ~]$ source ./.bash_profile
  • l查看安装路径
[postgres@ceph3 ~]$ which psql
/usr/local/postgresql/bin/psql
  • l查看版本
[postgres@ceph3 ~]$ psql -V
psql (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

Harbor高可用设计,使用外部数据库-详细到爆的操作步骤_云原生_03


2.8 启动PostgreSQL

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

[postgres@ceph3 ~]$ pg_ctl -D /data/postgresql/data -l logfile start
waiting for server to start.... done
server started

3-设置(修改)Postgresql密码

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

3.1 设置密码

[postgres@ceph3 ~]$ psql
psql (13.5)
Type "help" for help.
postgres=# \password

Enter new password: //密码(Sx703…
Enter it again: //确认密码

3.2设置可以远程登录

[postgres@ceph3 ~]$ vim /data/postgresql/data/postgresql.conf
listen_addresses = '*' # what IP address(es) to listen on;

[postgres@ceph3 data]$ vim /data/postgresql/data/pg_hba.conf
local all all password #默认trust,本地登录不要密码,设置为password使用密码登录。
host all all ::1/128 password
host all all 0.0.0.0/0 password #ip地址修改为0.0.0.0/0,

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

3.3 重启PostgreSQL

[postgres@ceph3 data]$ pg_ctl -D /data/postgresql/data -l /data/postgresql/data/postgres.log restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started

4-创建数据库

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 DATABASE
postgres=# create database notary_signer;
CREATE DATABASE
postgres=# create database notary_servers;
CREATE DATABASE
postgres=# \l

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

创建用户

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 | | {}

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


5-停止Harbor服务

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

[root@Over harbor]# docker-compose down

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

如图表示停止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

上一篇:基于VMware Workstation构建Vagrant base box
下一篇:没有了
网友评论