Rodando Alluxio no EC2

Slack Docker Pulls GitHub edit source

Alluxio pode ser implementado no Amazon EC2 utilizando Vagrant scripts que vem junto com o Alluxio. Os scripts permitem criar, configurar e destruir clusters que podem ser configurados automaticamente com Amazon S3.

Pré-requisitos

Instale o Vagrant e os AWS plugins

Baixe o Vagrant

Instale o AWS Vagrant plugin:

vagrant plugin install vagrant-aws
vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

Instale o Alluxio

Baixe o Alluxio para sua máquina local e descompacte:

et http://alluxio.org/downloads/files/1.7.1/alluxio-1.7.1-bin.tar.gz
r xvfz alluxio-1.7.1-bin.tar.gz

Install python library dependencies

Instale o python>=2.7, não instale o python3.

Dentro do diret[orio deploy/vagrant em sua instalação local do Alluxio, execute:

sudo bash bin/install.sh

Alternativamente, você pode instalar manualmente o pip e então dentro de deploy/vagrant, execute:

sudo pip install -r pip-req.txt

Iniciando um Cluster

Parar rodar um Alluxio cluster no EC2, primeiro você deve possuir uma conta na Amazon Web Services site.

Se você não está habituado com o Amazon EC2, primeiro, você pode ser este tutorial.

Então crie as chaves de acesso e defina as variáveis de ambiente shell AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY:

export AWS_ACCESS_KEY_ID=<your access key>
export AWS_SECRET_ACCESS_KEY=<your secret access key>

Em seguida, gere suas EC2 Key Pairs. Tenha certeza de definir as permissões dos arquivos de chaves privadas que somente você pode ler:

chmod 400 <your key pair>.pem

Copie o arquivo deploy/vagrant/conf/ec2.yml.template para deploy/vagrant/conf/ec2.yml:

cp deploy/vagrant/conf/ec2.yml.template deploy/vagrant/conf/ec2.yml

No arquivo de configuração deploy/vagrant/conf/ec2.yml, defina o valor de Keypair para sua keypair e o caminho da chave pem para sua Key_Path.

Por padrão, o Vagrant script cria um Grupo de Segurança nomeado de alluxio-vagrant-test em Region(us-east-1) e Availability Zones(us-east-1b). O security group será criado automaticamente na região com todo os tráfegos abertos de inbound/outbound network. Você pode alterar o security group, region e availability zone no ec2.yml. A zona padrão pode estar indisponível por alguns instances. Nota: o keypair está associado a uma região específica. Por exemplo, se você criar um keypaur em us-east-1, esta está inválida em outras regiões (como us-west-1). Se você tiver erros de permissão ou conexão, por favor, primeiro cheque a região/zona.

Spot instances

Utilizando spot instances é uma formar de reduzir custo com EC2. Spot instances são intâncias não garantidas que são precificadas com ofertas. Atente que spot instances podem ser retirados de você se alguém efetuar uma oferta maior e não existirem outras spot instances disponíveis. Entretanto, por curto tempo de teste, spot instances são muito apropriadas devido ser muito raro que estas sejam retiradas de você.

Por padrão, o script de implementação NÃO USA spot instances. Sendo assim, você tem que habilitar o uso de spot instances no script de implementação.

Para habilitar spot instances, você deve modificar o arquivo deploy/vagrant/conf/ec2.yml:

Spot_Price: “X.XX”

Para AWS EC2, o underfs padrão é o S3. Você precisa logar em sua console Amazon S3, criar um S3 bucket e escrever o nome deste bucket no campo S3:Bucket em conf/ufs.yml. Para utilizar outro under storage system, configure o campo Type e as configurações correspondentes em conf/ufs.yml.

Agora você pode iniciar o Alluxio cluster com o seu under filesystem escolhido dentro availability zone através da execução do script em deploy/vagrant:

./create <number of machines> aws

Cado nó do cluster executa um Alluxio worker e o AlluxioMaster roda o Alluxio master.

Acessando o cluster

Acesso através da Web UI

Depois que o comando ./create <number of machines> aws tiver sucesso, você pode ver duas linhas verdes como as visualizadas abaixo no final do resultado do shell:

>>> AlluxioMaster public IP is xxx, visit xxx:19999 for Alluxio web UI<<<
>>> visit default port of the web UI of what you deployed <<<

A porta padrão para o Alluxio Web UI é 19999.

Acesse http://{MASTER_IP}:{PORT} no seu navegador para ter acesso a Web UI.

Você também pode monitorar a instância através do AWS web console. Tenha certeza que você está na console da região que você iniciou o cluster.

Estes são os cenários onde você pode querer checar o console:

  • Quando a criação do cluster falhar, cheque o status e os logs da instância EC2.
  • Depois que o cluster estiver destruído, confirme que as instâncias EC2 foram terminadas.
  • Quando você não precisar mais do cluster, tenha certeza que as instâncias EC2 não estão mais custando dinheiro.

Acessando com ssh

Os nós são configurados com nomes como AlluxioMaster, AlluxioWorker1, AlluxioWorker2 e assim por diante.

Para conectar via ssh em um nó, execute:

vagrant ssh <node name>

Por exemplo, você pode conectar via ssh para o AlluxioMaster com:

vagrant ssh AlluxioMaster

Todo o software está instalado sobre o diretório raiz, exemplo, o Alluxio está instalado em /alluxio.

No nó AlluxioMaster, você pode executar testes sobre o Alluxio para checar a saúde do ambiente:

/alluxio/bin/alluxio runTests

Depois que os testes terminarem, acesse novamente a interface web do Alluxio em http://{MASTER_IP}:19999. Clique em Browse File System na barra de navegação e você deverá ver arquivos escritos no Alluxio pelo teste acima.

Você pode logar no AWS web console, então ir até o S3 console e verificar os arquivos escritos no S3 bucket pelo teste acima.

A partir de um nó do cluster, você pode conectar via ssh com os outros nós do cluster sem precisar de senha:

ssh AlluxioWorker1

Destruindo o cluster

Sobre o diretório deploy/vagrant, você pode executar o comando abaixo para destruir o cluster que você criou:

./destroy

Somente um cluster pode ser criado por vez. depois que o comando obtiver sucesso, as instâncias EC2 estarão terminadas.