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.
Para a preparação do ambiente e instalação de dependências, seguir o passo-a-passo descrito abaixo.
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
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
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.
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>
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:
Na configuração do provedor de serviço, liberar as portas: 2181, 9999, 80, 8080, 9191 e 22.
Compacte os arquivos do projeto e os envie utilizando "scp" para máquina do provedor
scp localfile zoonimbus@<ip_nuvem>:/path/to/file
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)
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
Site do s3fs-fuse: https://github.com/s3fs-fuse/s3fs-fuse
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
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
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".
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