搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 沃云 > 【大咖秀】基于Ceph分布式存储的Harbor部署方案

【大咖秀】基于Ceph分布式存储的Harbor部署方案

沃云 2019-02-11
举报

点击关注了解更多精彩内容!!


◆◆
基于Ceph分布式存储的Harbor部署方案
◆◆


作者简介
【大咖秀】基于Ceph分布式存储的Harbor部署方案

李铭轩:


中国联通云数据有限公司技术工程师,牛人实验室包容万象小组组长,电子学会会员,美国IEEE会员,美国ACM会员,长期关注云计算和大数据开源技术以及社区动态,主要从事技术研发,标准研究等工作。



1总体技术架构


接着笔者上次基于单节点部署Harbor的经验分享,也稳定运行一段时间了。最近笔者发现随着存储内容和运行日志的增加,系统的存储空间已经趋紧饱和。因此笔者最近有着手研究和部署了基于Ceph的分布式harbor部署方案。


根据参考文献【1】,在前期部署基于Ceph的分部署Harbor集群时需要准备五台物理服务器,并且统一软件安装如下:

·      Dockerversion 1.12.6

·      Docker-compose: version 1.23.2

·      Cephversion 10.2.11

·      Mysql: version 10.2.14(MariaDB)


针对上述相关必备软件的安装可以参考笔者之前的文章进行部署和安装。在资源划分上harbor分部署集群和ceph集群进行了复用。其中一台服务器作为Nginx负载均衡,另外Harbor节点和Ceph节点进行了一定的服用。其中一台服务器作为共享数据库。其资源分配如下所示:

·      Nginx ——10.10.13.1

·      Admin——10.10.13.21

·      Node0——10.10.13.22

·      Node1——10.10.13.30

·      Mysql ——10.10.13.31


需要说明一下,Ceph存储集群搭建,admin作为ceph-deploymonNode0作为OSD0Node1作为OSD1(根据参考文献【1】建议多配置几个mon,组成HA高可用),并且将创建的cephfs mount到这三个节点上,同事在这三个节点上部署Harbor服务组成一个镜像仓库集群(这样Harbor就可以直接挂载本地cephfs路径上了)。此外,再提供一个节点Nginx作为负载均衡将请求均衡到这三个节点,最后再提供一个节点Mysql作为外部数据库存储,建议做成HA高可用,鉴于目前资源有限,暂时选用一台服务器作为数据库服务器,后续可以采用容器服务来进行替代。


其总体技术架构如下图所示:

【大咖秀】基于Ceph分布式存储的Harbor部署方案

1 总体技术架构


这里需要说明的是,由于目前资源有限,上述总体技术架构只能保证数据安全,既不会因为Harbor节点本身出现故障,从而导致数据丢失的问题。并且harbor多节点能够共享数据。解决目前现有的单节点harbor系统数据冗余的情况出现数据丢失和存储空间无法扩展的问题。真正在生产系统上应用,还需要注意Harbor集群节点的数据快速同步等问题。真正做到数据实时性访问等。而针对镜像数据共享,我们参考文献【1】实现了多Harbor服务共享后端存储的方式,即通过Ceph分布式存储方案来解决。

【大咖秀】基于Ceph分布式存储的Harbor部署方案

2 技术实现图


结合上图,每一个Harbor节点上都mount配置好的cephfs,然后配置每一个Harbor服务的各个组件volume都挂载cephfs路径,最后通过统一的入口Nginx负载均衡将流量负载到各个Harbor服务上,来实现整体Harbor集群的高可用


但是还需要注意的是,在本方案中将默认harbor-db数据库组件拆出来,让其连接外部Mysql数据库(默认Harbor会在每个节点上都启动Mysql服务进行数据存储,这样数据就无法实现统一,即使我们将Mysql数据库存储在cephfs上,三个节点共用同一份数据,但是依然不可行,因为Mysql多个实例之间无法共享一份Mysql数据文件。


2Ceph介绍及部署


Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。


Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedhatOpen Stack都可与Ceph整合以支持虚拟机镜像的后端存储【2】。

2.1 Ceph架构

Ceph主要基于RADOS对象存储系统来实现可靠的、自动修复、自我管理的分布式对象存储系统。上层通过librados封装了一层接口,支持C/C++/Java/Python/Ruby/PHP等。支持三种接口:

·      Object:有原生的API,而且也兼容SwiftS3API

·      Block:支持精简配置、快照、克隆;

·      FilePosix接口,支持快照。

【大咖秀】基于Ceph分布式存储的Harbor部署方案

3 Ceph架构图

2.2 Ceph核心组件及概念介绍

·      Monitor

一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。


·      OSD

OSD全程Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有多个OSD


·      MDS

MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。


·      Object

Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。


·      PG

PG全称Placement Groups,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。


·      RADOS

RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。


·      Librados

LibradosRados提供库,因为RADOS是协议很难直接访问,因此上层额RBDRGWCephFS都是通过librados访问的,目前提供PHPRubyJavaPythonCC++支持。


·             CRUSH

CRUSHCeph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。


·             RBD

RBD全称RADOS block device,是Ceph对外提供的块设备服务。


·             RGW

RGW全称RADOS Gateway,是Ceph对外提供的对象存储服务,接口与S3Swift兼容。


·             CephFS

CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。


2.3 Ceph IO流程及数据分布

【大咖秀】基于Ceph分布式存储的Harbor部署方案

4 Ceph IO流程图

 【大咖秀】基于Ceph分布式存储的Harbor部署方案

5 正常Ceph IO流程图


依据上述流程图所示,其正常IO流程如下

1client创建cluster handle;

2client读取配置文件;

3client连接上monitor,获取集群map信息;

4client读取IO,根据crush map算法请求对应的主OSD数据节点;

5)主OSD数据节点同时写入另外两个副本节点数据;

6)等待主节点以及另外两个副本节点写完数据状态;

7)主节点及副本节点写入状态都成功后,返回给clientIO写入完成。


上述描述属于正常Ceph IO流程。针对新主IO流程、算法流程以及PoolPG分布等流程具体可以参考文献【2】等。


2.4 Ceph集群部署

介绍完Ceph相关概念和实现流程,在本次Ceph部署采用四台物理服务器作为Ceph集群节点进行部署。根据参考文献【3】的描述,在部署Ceph集群时,需要安装相关的软件及版本如下:

·             Centosrelease 7.4.1708(Core)

·             Ceph: jewel-10.2.11

·             Openssh-server: version 7.4

·             NTP


根据Ceph 官方文档中建议安装一个ceph-deploy管理节点和一个三节点的Ceph存储集群来研究Ceph的基本特性,结构图如下:

【大咖秀】基于Ceph分布式存储的Harbor部署方案

6 Ceph部署结构图


不过由于资源有限,所以笔者在解决方案中少用了一个节点,将mon.node1节点的Monitor功能迁移到admin-node节点上,所以集群结构图如下图所示:【大咖秀】基于Ceph分布式存储的Harbor部署方案7 Ceph实际部署结构图


Ceph分布式存储集群有三大 组件组成,分为:Ceph MointorCeph OSDCeph MDSMDS非必须安装,只有当使用CephFS文件存储时才需要安装。因此暂时不安装MDS.


2.4.1 配置节点

为了方便后续安装,以及ssh方式连接各个节点,首先修改各个节点的Hostname以及配置Hosts如下:

【大咖秀】基于Ceph分布式存储的Harbor部署方案

8 配置节点


需要在所有节点上都需要进行上述的配置。在配置完成以后,需要ping一下是否可以互相访问。如下图所示:

【大咖秀】基于Ceph分布式存储的Harbor部署方案

9 检测ping各节点


2.4.2 安装部署工具ceph-deploy

Ceph提供部署工具ceph-deploy来方便安装Ceph集群,我们只需要在ceph-deploy节点上安装即可,这里对应的就是admin-node节点。把Ceph仓库添加到ceph-deploy管理节点,然后安装ceph-deploy。根据centos7版本,安装相关依赖库,执行如下命令:

$ sudo yum install -y yum-utils && sudo yum-config-manager --add-repo po https://dl.fedoraproject.org/pub/epel/7/x86_64/ &&/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/tc/yum.repos.d/d.d/.d/dl.fedoraproject.org*


#添加Ceph源:

$ sudo vim /etc/tc/yum.repos.d/c.d/.d/ceph.repo
[Ceph-noarch]
name=Ceph noarch packages
baseurl=rl=http://download.ceph.com/rpm-jewel/el7/noarch
ena
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=ey=https://download.ceph.com/keys/release.asc
pri
priority=1


#安装ceph-deploy

$ sudo yum update && sudo yum install ceph-deploy

【大咖秀】基于Ceph分布式存储的Harbor部署方案

【大咖秀】基于Ceph分布式存储的Harbor部署方案


2.4.3 安装NTPOpenSSH

根据官方建议,在所有Ceph节点上安装NTP服务(特别时Ceph Monitor节点),以免因时钟漂移导致故障。


#yum安装ntp

sudo yum install ntp ntpdate ntp-doc


#校对系统时钟

ntpdate 0.cn.pool.ntp.org

【大咖秀】基于Ceph分布式存储的Harbor部署方案

后续操作,ceph-deploy节点需要使用ssh方式登录各个节点完成ceph安装配置工作,所以要确保各个节点上有可用的SSH服务。


# yum 安装 openssh

$ sudo yum install openssh-server


# 查看ssh版本

$ ssh -V

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017


2.4.4 创建Ceph用户

ceph-deploy工具必须以普通用户登录Ceph节点,且此用户拥有无密码使用sudo的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。官方建议所有Ceph节点上给ceph-deploy创建一个特定的用户,为了方便起见,笔者使用cephd这个账户作为特定的用户,而且每个节点上(admin-nodenode0node1)上都需要创建该账户,并且拥有sudo权限。


# Ceph集群各节点进行如下操作

# 创建ceph特定用户

$ sudo useradd -d /home/cephd -m cephd

$ sudo passwd cephd


# 添加sudo 权限

$ echo "cephd ALL = (root)NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd

$ sudo chmod 0440 /etc/sudoers.d/cephd


接下来在ceph-deploy节点(admin-node)上,切换到cephd用户,生成SSH密钥并把其公钥分发到各Ceph节点上,注意使用cephd账户生成,且提示输入密码时,直接回车,因为它需要免密码登录到各个节点。


# ceph-deployadmin-node)上执行

# 生成ssh密钥

$ ssh-keygen

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# 将公钥复制到node0节点

$ ssh-copy-id cephd@node0


# 将公钥复制到node1节点

$ ssh-copy-id cephd@node1


复制完毕,测试一下在ceph-deploy管理节点免密码登录各个节点

$ ssh node0

Last login: Fri Dec    8 15:50:08 2018 from admin


$ ssh node1

Last login: Fri Dec    8 15:49:27 2018 from admin


测试没问题,接下来,修改ceph-deploy管理节点上的~/.ssh/config文件,这样无需每次执行ceph-deploy都要指定-usename cephd.这样做同时也简化了sshscp的用法。

$ vim ~/.ssh/config

Host node0

    Hostname  node0

    User  cephd


Host node1

    Hostname  node1

    User  cephd


注意为了方便安装,建议将SELinux设置为Permissive或者disabled.

# 永久生效配置

$ sudo vim /etc/selinux/config

SELINUX=disabled   #这里设置为disabled

SELINUXTYPE=targeted

【大咖秀】基于Ceph分布式存储的Harbor部署方案


2.5 Ceph存储集群搭建

经过上述一系列的预检设置后,笔者就可以开始Ceph存储集群的搭建了。集群结构为admin-node(ceph-deployMonitor)、node0(osd.0)node1(osd.1)。首先要提一下的是,如果再安装过程中出现了问题,需要重新操作的时候,需要清理搭建的这个集群的话,可以使用以下命令:


# ceph-deployadmin-node)上执行


# 清理配置

ceph-deploy purgedata admin node0 node1

ceph-deploy forgetkeys


# 清理Ceph安装包

ceph-deploy purge admin node0 node1


好了,现在开始搭建。首先Cephd用户创建一个目录ceph-cluster并进入到该目录执行如下操作。


#创建执行目录

$ mkdir ~/ceph-cluster  &&  cd ~/ceph-cluster


#创建集群

$ ceph-deploy  new admin

【大咖秀】基于Ceph分布式存储的Harbor部署方案

此时,我们会发现ceph-deploy会在ceph-cluster目录下生成几个文件,ceph.confceph配置文件,ceph-deploy-ceph.logceph-deploy日志文件,ceph.mon.keyringceph monitor的密钥环。


接下来,我们需要修改ceph.conf配置文件,增加副本数为2,因为我们有两个OSD节点。

【大咖秀】基于Ceph分布式存储的Harbor部署方案


然后,我们需要通过ceph-deploy在各个节点安装ceph


$ ceph-deploy install admin node0 node1

【大咖秀】基于Ceph分布式存储的Harbor部署方案

【大咖秀】基于Ceph分布式存储的Harbor部署方案

此过程需要等待一段时间,因为ceph-deploySSH登录到各node上去,依次执行安装ceph依赖的组件包。


在等待安装完毕之后,接下来需要初始化monitor节点并手机所有密钥。

$ ceph-deploy mon create-initial

执行完毕后,会在当前目录下生成一系列的密钥环,应该是各组件之间访问所需要的认证信息。

【大咖秀】基于Ceph分布式存储的Harbor部署方案

至此,ceph monitor已经成功启动了。接下来需要创建OSD了,OSD是最终数据存储的地方,这里笔者准备了两个OSD节点,分别是osd.0osd.1。官方建议为OSD及其日志使用独立硬盘或者分区作为存储空间,不过由于条件不具备,笔者在本地磁盘上创建目录,来作为OSD的存储空间。


# ceph-deploy(admin-node)上执行

$ ssh node0

$ sudo mkdir /var/local/osd0

$ sudo chown -R ceph:ceph  /var/local/osd0

$ exit


$ ssh node1

$ sudo mkdir /var/local/osd1

$ sudo chown -R ceph:ceph /var/local/osd1

$ exit


注意:执行chown -R ceph:ceph操作,是将osd0osd1目录的权限赋予ceph:ceph,否则,接下来执行ceph-deploy osd activate时会出现权限报错。


接下来,笔者需要ceph-deploy节点执行prepare OSD操作,目的时分别在各个OSD节点上创建一些后边激活OSD需要的信息。

$ ceph-deploy osd prepare node0:/var/local/osd0

node1:/var/local/osd1

【大咖秀】基于Ceph分布式存储的Harbor部署方案


接下来需要激活 activate OSD.

$ ceph-deploy osd activate node0:/var/local/osd0

node1:/var/local/osd1

【大咖秀】基于Ceph分布式存储的Harbor部署方案


$ ceph-deploy admin admin node0 node1

【大咖秀】基于Ceph分布式存储的Harbor部署方案


至此,Ceph存储集群已经搭建完毕了。可以查看以下集群是否启动成功。

# 查看集群状态

$ ceph -s

【大咖秀】基于Ceph分布式存储的Harbor部署方案

# 查看集群健康状况

$ ceph health

【大咖秀】基于Ceph分布式存储的Harbor部署方案

# 查看集群OSD信息

$ ceph osd tree

【大咖秀】基于Ceph分布式存储的Harbor部署方案

通过上述的检查,笔者发现目前ceph集群已经安装部署完成,并且能够正常运行。


2.6 CephFS文件系统创建

在部署完成ceph集群以后,需要创建CephFS文件系统。具体执行如下:

# admin-node(ceph-deploy) 节点操作


# 创建MDS元数据服务器

$ ceph-deploy mds create admin node0 node1

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# 查看MDS状态

$ ceph mds stat

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# 创建cephFS

$ ceph osd pool create cephfs_data 128

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# 挂载cephFS

$ sudo mount -t ceph 10.10.13.21:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret

$ df -h

【大咖秀】基于Ceph分布式存储的Harbor部署方案


至此接下来,将开始后续的Harbor部署已经相关数据库的迁移等。


3数据库迁移


根据总体技术架构,单独设置一台服务器作为Mysql数据库进行独立提供数据库服务。由于Harbor本身提供数据库服务,尤其采用高可用的话,多实例Harbor之间无法实现数据共享,因此需要独立部署一个数据库服务器,让所有Harbor实例都统一指定访问这一个数据库系统,维护同一套数据,从而保证了数据的一致性。


3.1 Mariadb数据库部署

根据文献【4】通过yum方式直接在线部署Mariadb,由于MySQL已经被Mairadb所取代,所以笔者直接安装的Mariadb,具体安装过程笔者在此不再赘述,只是针对版本问题尤其需要提醒各位。由于后期数据库迁移过程中,Harbor的数据库采用的是10.2的版本,而系统默认安装Mariadb版本是5.5。因此两者相差较大,在直接进行数据库迁移时会出现很多字段对不上,从而导致数据库迁移失败。因此还是需要保证软件版本的一致性。


根据参考文献【4】,数据库成功部署,如下图所示:

【大咖秀】基于Ceph分布式存储的Harbor部署方案


在成功部署数据库以后,需要启动Mysql服务,执行如下执行:

$ sudo systemctl start mariadb

【大咖秀】基于Ceph分布式存储的Harbor部署方案


3.2 迁移db数据

在迁移Harbordb数据需要按照单节点的方式首先启动Harbor,具体的过程笔者在此就不再赘述了,各位可以参考我之前发的文章进行阅读。


经过启动单节点Harbor服务时,已经有一部分数据存储到harbor-db数据里面去了,而且Harbor启动时也会创建好所需要的数据库、表和数据等。这里我们只需要进入Harbor-db容器中,将registry数据库dump一份,然后Copy到当前节点机器上。


# 进入harbor-db容器

$ docker exec -it <harbor-db容器ID> bash


# 备份数据到默认目录/tmp/registry.dump

$ mysqldump -u -root -p registry > registry.dump

Enter password: XXXXX

$ exit


# 退出容器,copy备份数据到当前节点机器

$ docker cp <harbor-db容器ID>:/tmp/registry.dump /home/cephd/harbor/


挑选一台安装好mysql-client,直接连接外部数据库操作。执行以下指令:

$ mysql -h 10.10.13.31 -P 3306 -u root -p <db_password>


通过root用户方式访问数据库,为了方便后续操作,笔者创建一个专门的账户harbor,并赋予所有操作权限。执行以下Mysql指令:

mysql> CREATE USER 'harbor'@'%' IDENTIFIED BY 'XXXXXX';

mysql> GRANT ALL ON *.* TO 'harbor'@'%';

mysql> FLUSH PRIVILEGES;


接下来便是通过harbor账户登录到数据库,创建数据库registry,并导入dump数据。

$ mysql -h 10.10.13.31 -P 3306 -u harbor -pXXXXX

mysql> CREATE DATABASE IF NOT EXISTS registry default charset utf8 COLLATE utf8_general_ci;

mysql> USE registry;

Database changed

mysql> source /home/cephd/harbor/registry.dump;


经过上述指令执行,就已经成功将外部数据库搞定了。剩下的工作就是对Harbor组件进行配置,从而使得Harbor在访问数据库时自动连接外部数据库。


3.3 修改配置使用外部db


首先,既然我们已经有外部数据库了,那么就不需要Harbor再启动harbor-db服务了,只需要配置连接外部数据即可。因此就需要删除docker-compose.ymlmysql相关配置。如下图所示:

# 删除以下mysql配置

mysql:

    image: vmware/harbor-db:v1.5.3
    container_name: harbor-db
    restart: always
    volumes:
      - /data/database:/var/lib/mysql:z
    networks:
      - harbor
    env_file:
      - ./common/config/db/env
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "mysql"

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# 删除depends_onmysql部分

depends_on:

      # - mysql # 此处删除

      - registry

      - ui

      - log

【大咖秀】基于Ceph分布式存储的Harbor部署方案


其次,还需要修改./common/config/adminserver/env配置,这里面主要存放的是一些配置信息,里面就有配置Mysql的连接信息。因为该文件是执行install.sh的时候根据./common/templates/adminserver/env配置生成的,所以即使我们修改了,也是一次性的,重新install又会覆盖掉,所以可以直接修改./common/templates/adminserver/env该文件就一劳永逸了。

修改 ./common/templates/adminserver/env文件

……

MYSQL_HOST=10.10.13.31

MYSQL_PORT=3306

MYSQL_USR=harbor

MYSQL_PWD=XXXXXX

MYSQL_DATABASE=registry

……

RESET=true


注意:这里一定要设置RESET=true因为只有设置了该开关,Harbor才会在启动时覆盖默认配置,启用我们配置的信息。


再次启动Harbor服务,看一下能否启动成功,能否正常连接配置的外部数据库。

# 重启 Harbor 服务

$ ./install.sh


# 查看 Harbor 各组件容器启动状态,harbor-db服务已经删除

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# 查看UIjobservice日志,是否连接上Mysql

$ cat /mnt/cephfs/harbor/log/ui.log | grep database

【大咖秀】基于Ceph分布式存储的Harbor部署方案


通过日志发现,Harbor已经成功启动了,并且harbor-db服务组件按照设计也没有启动,日志显示连接外部数据库也没有问题,通过浏览http://10.10.13.21(harbor部署节点)看一下之前操作的数据是否能够正常显示出来。http://10.10.13.21(harbor部署节点)看一下之前操作的数据是否能够正常显示出来。

【大咖秀】基于Ceph分布式存储的Harbor部署方案



4Nginx负载均衡



为了快速安装Nginx,我们根据参考文献【2】采用Docker方式启动Nginx服务。首先创建配置文件,当Nginx服务启动时,就可以根据配置文件进行负载均衡。


# 创建 default.conf 配置文件

$ mkdir /root/nginx

$ vim default.conf

upstream service_harbor {

    server 10.10.13.21;

    server 10.10.13.22;

    server 10.10.13.30;

    ip_hash;

}


server {

    listen                 80;

    server_name     10.10.13.1;

    index    index.html    index.htm;


    #access_log    /var/log/nginx/host.acces.log   main;


    location  /  {

       add_header   Access-Control-Allow-Orgin  *;

       proxy_next_upstream  http_502   http_504   error timeout invalid_header;

       proxy_set_header   Host   $host;

       proxy_set_header   X-Real-IP   $remote_addr;

       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

       proxy_pass http://10.10.13.1;

       client_max_body_size     1024m   #设置接口客户端body最大长度为1024M

     } 


     access_log /var/log/harbor.access.log;

     error_log /var/harbor.error.log;


     error_page     404         /404.html;


     error_page      500   502   503    504     /50x.html;

     location = /50x.html {

             root      /usr/share/nginx/html;

     }

}

【大咖秀】基于Ceph分布式存储的Harbor部署方案


# Docker 启动 Nginx服务, 挂载上边配置文件覆盖默认配置,并开放80端口

$ docker run --name nginx-harbor -p 80:80 -v /root/nginx/default.conf:ro -d nginx



尤其笔者已经创建完成了基于Ceph的高可用Harbor部署。目前的基础资源可以供笔者用一段时间了。不过还需要有几点还需要继续改进的地方。

·      Mysql数据库可以通过分部署方式提供服务。比如可以通过基于容器平台的Mysql主从、PXE等方式部署Mysql分布式集群,由底层容器平台提供数据库服务;

·      HA高可用部署还可以参数调优的方式,可以进一步提高负载均衡性能;

·      底层CephFS文件系统还可以持续进行HA高可用。从现有的Ceph进行承载发现在数据访问等方便确实比原先的单节点Harbor要慢一些。


4.1 基于容器平台提供Mysql服务

由于目前主流的容器平台包括:DC/OSKubernetes等都可以提供Mysql分部署服务能力,包括PXE、主从服务等都具备高可用的解决方案。具体解决方案已经开源。具体可以参考一下链接:

·      Mysql的多主模式(PXE

https://github.com/limx59/percona-xtradb-cluster

·             Mysql的主从模式

https://github.com/limx59/mysql


其技术架构可以参考如下:


剩下来研究Rancher平台(容器云平台)直接挂载Cephfs实现底层存储,对上提供Mysql服务,以便供Harbor进行独立数据库的访问。


§     上述代码笔者已经上传到Github上,各位看官可以根据自己需要自行下载,具体链接如下:


https://github.com/limx59?tab=repositories


END


5参考文献


1】基于HarborCephfs搭建高可用Docker镜像仓库集群:

https://blog.csdn.net/aixiaoyang168/article/details/78909038

2Ceph介绍及原理架构分享:

https://www.jianshu.com/p/cc3ece850433

3】初试Centos7Ceph存储集群搭建:

https://blog.csdn.net/aixiaoyang168/article/details/78788703

4Mariadb数据库的部署及管理:

https://blog.csdn.net/weixin_40658000/article/details/78595631




版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《【大咖秀】基于Ceph分布式存储的Harbor部署方案》的版权归原作者「沃云」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注沃云微信公众号

沃云微信公众号:gh_8d3cebe306e8

沃云

手机扫描上方二维码即可关注沃云微信公众号

沃云最新文章

精品公众号随机推荐

举报