Skip to content

bionimbuz/Bionimbuz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bionimbuz

Build Status Coverage Status

BioNimbuz

Universidade de Brasília

Departamento de Ciência da Computação

Introdução

O software computacional BioNimbuZ é desenvolvido e mantido por alunos de Graduação e Mestrado da Universidade de Brasília. Seu objetivo é criar uma plataforma de execução de workflows em Bioinformática que utiliza a infraestrutura provida por uma Federação de Nuvens. Uma Federação de Nuvens Computacionais possibilita a utilização simultânea das diversas infraestruturas existentes nas várias instituições provedoras destes serviços (Microsoft Azure, Amazon EC2 entre outras), além de permitir a utilização dos recursos oferecidos pelas nuvens públicas. Este trabalho tem como objetivo propor uma arquitetura de federação de nuvens computacionais híbrida, denominada BioNimbuZ, capaz de executar aplicações e workflows de bioinformática de maneira transparente, flexível, eficiente e tolerante a falhas, com grande capacidade de processamento e de armazenamento.

Ambiente de Desenvolvimento

Para a preparação do ambiente e instalação de dependências, seguir o passo-a-passo descrito abaixo.

1. Script de preparação

O Script de preparação faz a instalação de bibliotecas e softwares necessários para a execução do sistema, que são eles:

- JDK 8: ambiente de desenvolvimento Java;
- Maven: software de gerenciamento de projetos;
- MySQL Server/Client: banco de dados para persistir dados da aplicação web;
- Open SSH Server/Client e SFTP: ferramentas para acesso remoto utilizando protocolo SSH;
- Dstat: possibilita a visualização de recursos utilizados do sistema instantaneamente;
- Nmap: uma ferramenta grátis e de código aberto para descoberta de rede e auditoria em segurança;
- Unzip: descompactador de arquivos;
- Bowtie: uma ferramenta de alinhamento de sequências curtas (short read aligner) com boa performance e boa eficiência na utilização de memória;
- Bedtools: conjunto de ferramentas para uma gama de tarefas de análises genôminas

Além disso, o script faz a instalação e configuração do software Apache ZooKeeper dentro da pasta do projeto. O ZooKeeper é um serviço centralizado para gerenciar e sincronizar informações de configuração em um ambiente computacional distribuído. Após a execução do script, o ZooKeeper estará localizado na pasta "<projeto>/system/zookeeper".

Para isso, execute o script "prepare.sh" encontrado na raiz do projeto:

./prepare.sh
2. IDE de desenvolvimento Java

Utilizamos para o desenvolvimento a IDE Eclipse para Java EE mais atual, que pode ser encontrado no seguinte link:

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/oxygen/R/eclipse-jee-oxygen-R-linux-gtk-x86_64.tar.gz

Outra IDE que também poderá ser utilizada sem prejuízo para a execução do sistema é o Netbeans, que pode ser encontrado no seguinte link:

http://download.netbeans.org/netbeans/8.1/final/bundles/netbeans-8.1-javaee-linux.sh

Configurações

1. MySQL

Após a execução do script de preparação, que realiza a instalação do MySQL, criar o banco de dados chamado "bionimbuz_db", fazendo o acesso da seguinte maneira, substituindo "<usuário>" e "<senha>" pelos usuário/senha do banco de dados:

mysql -u<usuário> -p<senha>

Após o acesso, criar o banco de dados com o seguinte comando:

create database bionimbuz_db;

Obs.: O banco de dados MySQL é um software independente que pode ser instalado sem a preparação do ambiente de desenvolvimento, e para acessá-lo, é necessário ter conhecimento do usuário/senha utilizados durante sua instalação.

Ainda dentro do banco de dados, execute o seguinte comando para permitir acesso de forma remota:

GRANT ALL PRIVILEGES ON bionimbuz_db.* TO 'user'@'%' IDENTIFIED BY 'password';

Execute o commando:

sudo nano "/etc/mysql/my.cnf"

Comente a linha que contém a seguinte informação (comentários feitos com o caractere # no início da linha):

bind-address = 127.0.0.1 using the # symbol

Se não achar essa informação no arquivo "/etc/mysql/my.cnf" file, olhe em "/etc/mysql/mysql.conf.d/mysqld.cnf".

Reinicie a máquina ou execute o comando:

sudo service mysql restart.
2. Acesso do BioNimbuZ ao Banco de Dados

Dentro da pasta do projeto, altere as informações de conexão com o banco de dados no arquivo "conf/database.yaml":

databaseUrl: jdbc:mysql://<ip>:<porta>/bionimbuz_db?useSSL=false
databaseUser: <usuário>
databasePass: <senha>
3. Arquivo de Credenciais do Usuário

Criar uma cópia do arquivo "conf/credentials_sample.yaml" com o nome "conf/credentials.yaml", e altere suas informações com as informações do usuário local da máquina:

user: "<login-usuário>"
password: "<senha-usuário>"
ssh-port: "22"

Execução em Instâncias na Nuvem (Amazon, Azure, Google, …​)

Primeiramente é necessário configurar a máquina conforme os passos acima, não sendo necessária a instalação da IDE, pois não haverá desenvolvimento nas instâncias na nuvem.

Com tudo instalado, realizar os seguintes passos:

1. Liberação de portas

Na configuração do provedor de serviço, liberar as portas: 2181, 9999, 80, 8080, 9191 e 22.

2. Envio do pacote

Compacte os arquivos do projeto e os envie utilizando "scp" para máquina do provedor

scp localfile zoonimbus@<ip_nuvem>:/path/to/file
3. Arquivos à serem enviados:
enviar as pastas exported-folders
enviar as pastas data-folder
enviar as pastas pipeline
enviar as pastas services
enviar as pastas programs
enviar as pastas conf
enviar bionimbus-1.0-SNAPSHOT-bundle.jar gerado na target

Executando o BioNimbuZ na nuvem

Para iniciar a execução o servidor zookeeper deve ser iniciado.

1 - Alterar "conf/node.yaml" com as configurações de ip do servidor zookeeper, ip e os caminhos das pastas
    necessárias para a execução, etc..
2 - Entrar na pasta zoonimbusProject/
3 - Servidor: executar o comando "sh exported-folders/bin/server.sh"
4 - Cliente: executar o comando "sh exported-folders/bin/client.sh" (** migrando para aplicação Web)
5 - Pipeline: executar o comando "sh exported-folders/bin/client-pipeline.sh" (** migrando para aplicação Web)

Configurar a amazon para acessar ssh sem a o arquivo de chaves privadas (pem)

1. Acessar a maquina na amazon
ssh -i zoonimbuskey.pem ubuntu@<ip_nuvem>:~/
2. Alterar arquivo sshd_conf

Acesse o arquivo:

sudo nano /etc/ssh/sshd_config

Adicione a linha na parte de Authentification

PasswordAuthentication yes
comentar as linhas
#RSAAuthentication yes
#PubkeyAuthentication yes

ctrl+o, enter, ctrl+x
3. Reinicie o serviço SSH
sudo /etc/init.d/ssh restart

Configurações para executar o novo serviço de armazenamento (buckets)

1. Dependências

Instale o s3fs-fuse:

sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool
sudo apt-get install pkg-config libssl-dev
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl
make
sudo make install

Instale o gcs-fuse e o gcloud:

export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install gcsfuse

# Create an environment variable for the correct distribution
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

# Add the Cloud SDK distribution URI as a package source
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk
2. Arquivos de credenciais
2.1. Amazon

Acesse o AWS, clique sobre o nome do usuário e vá em "Security Credentials". Em seguida vá em "Access Keys (Access Key ID and Secret Access Key)" e depois "Create New Access Key". Veja o conteúdo da nova key em "Show Access Key".

No diretório do projeto, crie um novo arquivo (conf/resources/credentials/amazon.properties) com o seguinte conteúdo:

accessKeyId:secretAccessKey

Altere as permissões para esse arquivo:

chmod 600 conf/resources/credentials/amazon.properties
2.2. Google

Acesse a página de credenciais (https://console.developers.google.com/project/_/apis/credentials) e selecione o projeto. Clique em "Create credentials" e selecione "Service account key". Selecione a Service account "Compute Engine default service account" e crie um JSON.

Salve esse JSON em "conf/resources/credentials/google.json".

3. Arquivos de configuração

Ajuste os arquivos de configuração do BioNimbuz Core "conf/node.yaml" e BioNimbuZ Client (conf/conf.yaml):

 # Path to the folder where the Buckets will be mounted
buckets-folder: data/buckets

 # Path containing the files used to authenticate the Storage Services (Bucket)
buckets-auth-folder: cont/

 # Path to de binary of gcloud/gsutil line-command ($ which gcloud)
gcloud-folder: /*/*/bin/

 # Coloque 1 para o novo serviço
storage-mode: 1

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages