系统架构图

未命名文件.jpg

必要条件

调度层

  1. 没有直接使用阿里云的开发框架与调度系统,而是利用BroadInstitute开发的Cromwell调度引擎来解决的多平台调度的问题,如单机、HPC、阿里云、AWS与Azure;
  2. 支持常用的HPC调度引擎,如Torque、SGE、Slurm、LSF等;
  3. 若用户有自研的调度系统,我们可能得相应在Cromwell原有的基础上增加模块来支持新的调度系统才行;

    存储层

  4. 若用于本地或者HPC集群的话,需要借助于Minio来提供对象存储服务;

  5. 若用户有自研的对象存储服务,可以提供API,我们考虑集成接入;

    Docker镜像

    Docker镜像服务仓库只需要与Docker兼容即可,若采用Singularity的话,则需要考虑额外调试适配;

    App & App Store

  6. App Store采用常规的前后端分离框架开发(Golang + Vuejs),部署为单机服务即可;

  7. 本系统主要采用的是Docker & Docker Compose来运行

    管理端与其他服务

  8. 常规前后端分离框架开发(Clojure + Vuejs),部署为单机服务即可;

  9. 本系统主要采用的是Docker & Docker Compose来运行

    安装步骤

    确认服务器配置并安装操作系统,配置网络、账户等

  • 是否有HPC以及HPC的配置信息是什么样的?当前支持单机、HPC与云计算
  • 存储系统与HPC的架构:存储系统是否已共享给HPC中所有节点?
  • 计划使用什么调度系统?当前仅支持Slurm、Torque、SGE、LSF
  • 集群是否是公用的?拟使用集群的用户数目?存储空间多大?节点有多少?
  • 是否可以获得管理员权限?获得账户信息,例如账户名和密码
  • 管理节点和登录节点是否连接了公网?
  • 管理节点的CPU核数、内存大小、系统盘容量?

    安装Docker、Docker Compose和Miniconda(或者Aconda)

    依据操作系统选择合适的教程,安装Docker和Docker Compose。安装成功后界面如下图:图片1.png
    图片2.png
    Miniconda/Conda安装目录最好在/opt/local/目录下,使用命令which conda 查看安装路径。图片3.png

    部署Cromwell

  1. 创建一个java虚拟环境:conda create -n cromwell-35 java-jdk=8.0.112
  2. 将Cromwell-35的安装包解压至:/opt/local[Miniconda安装目录]/envs/cromwell-35/share/cromwell
  3. 运行命令创建新的文件夹:mkdir /opt/local/[Miniconda安装目录]/envs/cromwell-35/share/cromwell
  4. 解压文件压缩包到新创建的目录:tar xzvf cromwell-35.tar.gz -C /opt/local/[Miniconda安装目录]/envs/cromwell-35/share/cromwell

注意:请将[Miniconda安装目录]替换为conda的安装路径
图片4.png

  1. [Unit]
  2. Description=Cromwell server daemon
  3. After=network.target
  4. [Service]
  5. Type=simple
  6. ExecStart=/opt/local/envs/cromwell-35/bin/java -Xms512m -Xmx1g -Dconfig.file=/etc/cromwell-35.conf -jar /opt/local/envs/cromwell-35/share/cromwell/cromwell.jar server
  7. ExecReload=/bin/kill -HUP $MAINPID
  8. KillMode=process
  9. Restart=on-failure
  10. RestartSec=42s
  11. [Install]
  12. WantedBy=multi-user.target

将以上文件内容保存为/usr/lib/systemd/system/cromwell-35.service。
将Cromwell的配置文件保存为/etc/cromwell-35.conf,文件内的password替换为服务器登录密码。
图片5.png

克隆Compose Services

运行如下命令:

git clone https://github.com/clinico-omics/compose-services
cd compose-services
virtualenv -p python3 .env
source .env/bin/activate
pip3 install poetry setuptools_rust poetry click jinja2 pyyaml

compose-services文件夹出现一个config.yml文件,按照机器的实际情况修改相应的配置,启动相应的服务。主要修改部分包括:
your-custom-data-dir:数据目录、
your-password:密码、
your-ip-address:服务器的外网IP地址
24.png
假设将这个config.yml放到了compose-services/custom目录下,执行以下命令即可生成适配于服务器的配置:python3 deployer init -c custom/config.yml

启动系统服务

完成上述步骤后执行一下命令:

cd compose-services/database
docker-compose up -d

cd compose-services/clinico-omics-core
docker-compose up -d

cd compose-services/clinico-omics-auth
docker-compose up -d

注意:上面所有的的cd命令,指的都是要进入compose-services目录下相应的子目录,注意依据当前所在的目录调整命令。