Back-End

6 jul, 2018

Acesso SSH ao container: gerencie seu servidor remotamente

Publicidade

A Plataforma Jelastic permite estabelecer o acesso SSH a qualquer container em sua conta. Neste artigo, forneceremos alguns dos comandos mais comuns que podem ser úteis ao gerenciar seu servidor por meio do terminal SSH.

Existem duas maneiras de conectar seu servidor dentro do Jelastic PaaS ao SSH:

  • Web SSH: clique na opção com o mesmo nome ao lado da camada de ambiente requerida ou do container específico para acessar rapidamente e começar a gerenciá-lo online, diretamente do navegador, via aba do terminal, aberta automaticamente na parte inferior do painel do Jelastic.

  • SSH Gate: como alternativa, você pode se conectar ao seu servidor por meio de qualquer cliente SSH local da sua preferência, baseado no par de chaves SSH geradas preliminarmente (onde a chave pública deve ser adicionada às configurações da conta e a chave privada correspondente – sendo manipulada em sua máquina local).

Depois que todos os requisitos forem cumpridos, você poderá estabelecer uma conexão SSH por meio da linha de comando correspondente (circulada acima) na aba com o mesmo nome das configurações da sua conta.

Por uma questão de simplicidade e acesso rápido, neste artigo, aproveitaremos a ferramenta Web SSH incorporada; no entanto, os comandos abaixo descritos podem ser usados quando se trabalha via cliente local remoto de forma similar.

Dicas:

  • Na maioria dos servidores do Jelastic PaaS (incluindo containers Docker personalizados), você recebe automaticamente permissões de root completas enquanto está conectado via SSH. Para o resto – maioria dos nós legados – os quais foram criados em templates de pilha certificados gerenciados pelo Jelastic, o nível suficiente de controlabilidade é garantido com um conjunto de comandos permitidos intencionalmente adicionais.
  • A lista completa de comandos do terminal com todas as descrições de opções apropriadas você pode encontrar nos sites dedicados, semelhantes aos links acima. Neste artigo, consideraremos vários dos comandos mais comuns para fornecer informações sobre os conceitos básicos de operação com containers por meio do protocolo SSH.

Navegação pelo sistema de arquivos de container remoto

Esta seção é mais para novatos do que para um desenvolvedor médio, então a maioria de vocês provavelmente poderá ignorá-la e prosseguir para operações mais complexas – no entanto, acreditamos que isso ainda vale a pena mencionar antes de prosseguir.

Depois de inserir o container necessário por meio do console, você acessa o diretório inicial do servidor por padrão, que é normalmente dedicado para armazenar seus dados e configurações personalizados. Para navegação entre as pastas, o comando cd é usado, com os seguintes argumentos disponíveis:

  • {directory_path}: nome da pasta aninhada (em que vários níveis de aninhamento separados por barra podem ser especificados) ou um caminho completo para o diretório necessário em relação à raiz do container.
  • ..: para navegar um nível acima na árvore de arquivos.
  • ~: para mudar instantaneamente para o seu diretório de trabalho (servidor home) de qualquer local
  • /: para mudar instantaneamente para o diretório raiz do container.

Como resultado, a string violeta ao lado do nome do host do container será alterada, indicando sua localização atual.

Dica: se você é iniciante em tempo de execução de pilha que a sua instância executa, provavelmente você gostaria de explorar primeiro sua estrutura interna (ou seja, a árvore de arquivos e diretórios, os arquivos de configuração disponíveis, etc). A maneira mais conveniente de fazer isso é usar a GUI do Jelastic File Manager, disponível clicando no botão “Config” ao lado do servidor desejado no painel do desenvolvedor:

A árvore de arquivos apropriada será mostrada em uma aba dedicada abaixo.

1. Para criar um novo arquivo ou pasta, execute os comandos:

  • touch [path-to/]{file}: para criar um novo arquivo
  • mkdir [path-to/]{dir}: para criar uma nova pasta

Onde:

  • {file} e {dir}: é o nome do arquivo ou pasta preferido (se estiver sendo criado no diretório atual)
  • [path-to/]: é parâmetro opcional para o caso de esse novo item ter que ser colocado em um local diferente.

2. Para ter certeza de que o arquivo e a pasta que especificamos acima foram realmente criados, vamos ver a lista de arquivos e diretórios incluídos no local atual com o comando:

ls

3. Entre os demais comandos mais comuns destinados ao gerenciamento de arquivos, estão:

  • cat: usado para operar com arquivos de texto; dependendo dos argumentos declarados, permite visualizar, mesclar e duplicar o conteúdo do arquivo.
  • cp: copiar arquivos e diretórios.
  • locate: localizar o arquivo ou diretório necessário em um servidor por seu nome (ou parte dele).
  • mv: mover e/ou renomear arquivos e diretórios.
  • pwd: mostrar o caminho completo para o diretório atual (relativo à raiz do container).
  • rm: remover o arquivo ou diretório especificado.

Agora, vamos considerar as possibilidades de Shell padrão para monitorar e gerenciar as métricas do seu nó, seu consumo de recursos, execução dentro de processos, etc.

Comandos para visualizar informações do sistema do servidor

1. Para obter um breve resumo sobre o estado atual do container e certificar-se de que, por exemplo, nenhum fator maléfico afeta seu desempenho e/ou operabilidade, use o comando w:

A saída recebida fornecerá algumas informações gerais do sistema em um cabeçalho (ou seja, data e hora atuais do sistema, tempo de atividade da instância, número de usuários registrados e quantidade média de processos ativos nos últimos 1/5/15 minutos) e detalhes sobre usuários conectados abaixo (seus nomes, tipo de terminal, IP de conexão de origem, tempo de login, estatísticas da última atividade e nome do(s) processo(s) atualmente ativo(s), executado(s) em nome do usuário).

Dica: Devido aos detalhes da implementação do shell nativo, a saída do comando w não inclui informações sobre usuários, conectados via emulador de terminal.

2. Todas as estatísticas sobre o uso da RAM do servidor são armazenadas no arquivo /proc/meminfo. Para revisar seu conteúdo, use o comando cat mencionado acima:

cat /proc/meminfo

Aqui, você pode verificar esses dados como memória total alocada (MemTotal), memória não utilizada (MemFree), memória usada como cache (Cached) e muito mais.

3. Para exibir os dados básicos do container de software e hardware, execute a seguinte linha:

uname -a

Aqui, você pode ver informações sobre um kernel do servidor (nome, versão, data de lançamento), nome do host do nó, tipo de CPU, sistema operacional, etc.

Como gerenciar processos de container remotamente via terminal

1. Enquanto conectado via SSH, você pode monitorar todos os processos rodando dentro de um container com o comando top:

Com isso, as informações são constantemente atualizadas em tempo real, exibindo informações sobre todos os processos do usuário (incluindo os do sistema).

Pressione “Ctrl + C” para finalizar a execução do comando e retornar ao modo de entrada do console.

2. Para exibir apenas os processos ativos do seu usuário, digite ps e execute este comando:

3. Outro comando útil é kill, que permite finalizar qualquer processo em execução, designado por seu {pid} como um argumento (o identificador de processo requerido pode ser encontrado na saída do comando anterior):

kill {pid}

Como você pode ver, o processo run, mostrado na tela na segunda etapa desta seção foi interrompido, pois não está listado entre os ativos por enquanto.

Arquivos de aplicativos operacionais via console SSH

Você pode buscar os arquivos necessários da Internet (por exemplo, o arquivo do seu aplicativo) diretamente pelo console, para armazená-los e/ou implementá-los subsequentemente em seu servidor.

1. O comando wget permite baixar arquivos pelo {link} especificado:

wget {link}

2. Depois, você pode descompactar o arquivo baixado com o mesmo comando:

unzip {archive}

Onde {archive} é um caminho para o seu pacote compactado.

Como resultado, todos os arquivos extraídos serão colocados em uma pasta com o mesmo nome (após o arquivamento) dentro do diretório atual.

Configurando variáveis de servidor personalizadas via SSH

1. A lista de variáveis de ambiente padrão para qualquer container pode ser visualizada no arquivo .bash_profile, localizado no diretório inicial do container. Portanto, para verificá-los, confira se você acessou o diretório de container adequado e execute o comando:

cat .bash_profile

2. O arquivo .bash_profile não é editável, portanto, caso você precise configurar adicionalmente suas próprias variáveis, anote-as no arquivo .bashrc dentro da mesma pasta (basta criá-lo, se ausente). Para fazer isso, use qualquer editor de texto preferível (por exemplo, vi):

3. Aqui, novas variáveis devem ser definidas no seguinte formato:

export {VAR_NAME}={VAR_VALUE}

Onde:

  • {VAR_NAME}: o nome da variável que você gostaria de criar
  • {VAR_VALUE}: valor para a variável apropriada

Nota: o arquivo .bashrc é lido durante o início do bash, portanto, as alterações serão aplicadas automaticamente ao iniciar todas as sessões adicionais do usuário. Mas no caso de você precisar aplicar as alterações feitas imediatamente, execute o comando bash para reiniciar o shell.

4. Para verificar se sua variável personalizada foi aplicada com sucesso, execute o seguinte comando:

echo ${VAR_NAME}

Na resposta do console, você verá a string {VAR_VALUE} semelhante ao valor que você acabou de atribuir à variável ${VAR_NAME} no arquivo .bashrc.

Especificações do gerenciamento remoto de containers Jelastic certificados

No Jelastic PaaS, há dois tipos de templates de pilha de software, que são usados como base ao criar cada um dos containers:

  • dockerizado: modelo de template unificado com base no suporte padrão nativo do Docker com a generalidade dos princípios e funcionalidade de gerenciamento de containers para todos os tipos de servidor (isto é, independentemente de calcular nó, servidor de banco de dados ou instância de cache, etc). Ao se conectar a esse servidor via SSH, você obtém automaticamente o controle total sobre a instância com privilégios de root concedidos e pode realizar quaisquer operações necessárias dentro de um container.
  • certificado: os templates de software certificados são baseados na implementação de pilha nativa, adaptados por nossa equipe de acordo com as especificações da plataforma.

Ao entrar nesse servidor via SSH, você está logado como um usuário padrão do servidor. Para fornecer possibilidades suficientes para o gerenciamento efetivo de containers, disponibilizamos algumas opções adicionais para serem executadas em uma conta de usuário comum:

  • sudo sbin/service {service_name} {start|stop|restart|condrestart|status|reload|upgrade|help}: um conjunto de comandos para operar o processo principal do servidor, definido com o espaço reservado {service_name} (onde, dependendo do servidor utilizado, os valores possíveis são: jetty, mysql, tomcat, memcached, mongod, postgresql, couchdb, glassfish-domain1, nginx, php-fpm e httpd).
  • sudo usr/bin/jem firewall {fwstart|fwstop}: para executar/parar o firewall do container, respectivamente.
  • sudo usr/bin/jem nscd: para controlar o daemon name-service caching, que armazena registros para as solicitações mais comuns do servidor de nomes (como passwd, hosts, group etc).
  • sudo sbin/service rpcbind.service: operar com o serviço RPC bind, usado para mapear nomes legíveis pelo usuário para números de programa que lidam com chamadas RPC recebidas.

Qualquer um dos comandos acima, apesar de serem executados em um modo sudo, não requer a inserção da senha root do administrador do servidor. Isso permite que você aproveite toda a funcionalidade de container necessária, essencial para o trabalho adequado do aplicativo, mesmo com permissões de conta regulares.

Conclusão

Agora, como você conhece todos os fundamentos necessários para gerenciar seus containers via console, você pode aproveitar ainda mais a flexibilidade de PaaS ao rodar seus aplicativos. Comece a usar o Jelastic Multi-Cloud em um dos provedores de serviços certificados em todo o mundo.

***

Tetiana Markova faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://jelastic.com/blog/ssh-to-container/