Skip to content

Latest commit

 

History

History
executable file
·
263 lines (193 loc) · 15.2 KB

README.adoc

File metadata and controls

executable file
·
263 lines (193 loc) · 15.2 KB

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