系统架构图
必要条件
调度层
- 没有直接使用阿里云的开发框架与调度系统,而是利用BroadInstitute开发的Cromwell调度引擎来解决的多平台调度的问题,如单机、HPC、阿里云、AWS与Azure;
- 支持常用的HPC调度引擎,如Torque、SGE、Slurm、LSF等;
若用户有自研的调度系统,我们可能得相应在Cromwell原有的基础上增加模块来支持新的调度系统才行;
存储层
若用于本地或者HPC集群的话,需要借助于Minio来提供对象存储服务;
若用户有自研的对象存储服务,可以提供API,我们考虑集成接入;
Docker镜像
Docker镜像服务仓库只需要与Docker兼容即可,若采用Singularity的话,则需要考虑额外调试适配;
App & App Store
App Store采用常规的前后端分离框架开发(Golang + Vuejs),部署为单机服务即可;
本系统主要采用的是Docker & Docker Compose来运行
管理端与其他服务
常规前后端分离框架开发(Clojure + Vuejs),部署为单机服务即可;
- 本系统主要采用的是Docker & Docker Compose来运行
安装步骤
确认服务器配置并安装操作系统,配置网络、账户等
- 是否有HPC以及HPC的配置信息是什么样的?当前支持单机、HPC与云计算
- 存储系统与HPC的架构:存储系统是否已共享给HPC中所有节点?
- 计划使用什么调度系统?当前仅支持Slurm、Torque、SGE、LSF
- 集群是否是公用的?拟使用集群的用户数目?存储空间多大?节点有多少?
- 是否可以获得管理员权限?获得账户信息,例如账户名和密码
- 管理节点和登录节点是否连接了公网?
- 管理节点的CPU核数、内存大小、系统盘容量?
安装Docker、Docker Compose和Miniconda(或者Aconda)
依据操作系统选择合适的教程,安装Docker和Docker Compose。安装成功后界面如下图:
Miniconda/Conda安装目录最好在/opt/local/目录下,使用命令which conda 查看安装路径。部署Cromwell
- 创建一个java虚拟环境:conda create -n cromwell-35 java-jdk=8.0.112
- 将Cromwell-35的安装包解压至:/opt/local[Miniconda安装目录]/envs/cromwell-35/share/cromwell
- 运行命令创建新的文件夹:mkdir /opt/local/[Miniconda安装目录]/envs/cromwell-35/share/cromwell
- 解压文件压缩包到新创建的目录:tar xzvf cromwell-35.tar.gz -C /opt/local/[Miniconda安装目录]/envs/cromwell-35/share/cromwell
注意:请将[Miniconda安装目录]替换为conda的安装路径
[Unit]
Description=Cromwell server daemon
After=network.target
[Service]
Type=simple
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
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
将以上文件内容保存为/usr/lib/systemd/system/cromwell-35.service。
将Cromwell的配置文件保存为/etc/cromwell-35.conf,文件内的password替换为服务器登录密码。
克隆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地址
假设将这个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目录下相应的子目录,注意依据当前所在的目录调整命令。