Compartilhar dados somente para o Apache Tomcat

1

Agora, há no servidor A (Windows Server 2012) em execução:
 - Apache Tomcat 7 (usado por um sistema de CRM)
 - banco de dados MySQL
 - dados locais para o Tomcat (anexos de e-mail desse CRM, etc.)

Gostaria de mover o Apache Tomcat para o servidor B (Windows Server 2012 no mesmo domínio), mas manter o banco de dados e os dados locais no servidor A.

Qual é a maneira correta e segura de compartilhar os dados locais do servidor A somente para o Tomcat em execução no servidor B?

    
por user681768917 05.09.2014 / 10:12

1 resposta

1

Suspeito que a rede entre seus servidores não seja confiável.

Se você quer um caminho seguro, precisa

  1. Habilite o acesso à rede no mysql (na autenticação baseada em host e na tabela de usuários)
  2. Faça o servidor mysql escutando na porta 3306 no seu my.cnf .
  3. Habilite a porta 3306 no firewall da sua máquina mysql, mas somente para o seu servidor B.
  4. Ative o suporte ssl no seu servidor mysql no servidor A.
  5. Se houver firewalls / roteadores / filtragem de pacotes intermediários, ative as conexões B->A:3306 TCP, mas somente elas.
  6. Gere uma senha longa e segura para seu usuário do tomcat, por exemplo, com o comando pwgen . Configure esta senha no seu mysql.
  7. Altere a configuração do seu aplicativo da web tomcat no servidor B para usar A:3306 com sua senha na configuração do mysql. Ele precisa de um pouco de experiência com java, provavelmente você precisará alterar alguns arquivos xml em algum lugar abaixo de um diretório WEB-INF do META-INF.
  8. Implante o webapp no servidor B.
  9. Teste a possibilidade de nível de TCP no servidor B com um comando telnet A 3306 . Se ok, vá mais longe.
  10. A conectividade Mysql no servidor B para o servidor A com o comando mysql --host=A --port=3306 --user=... --pass=... . Se funcionar, vá mais longe.
  11. Inicie o webapp e teste se ele também pode se conectar.

Estas não são instruções passo a passo, cada passo necessita, provavelmente, de uma investigação mais aprofundada da sua parte. Mas, na verdade, esses são os principais grandes saltos. Se algo não estiver claro, estamos aqui para sua próxima pergunta.

Extensão: Como você escreveu, a rede entre A e B pode ser considerada confiável. Nesse caso, você não precisa de nenhuma criptografia entre os servidores, embora eu considere necessário um firewall secundário. Porque você faz o seu servidor mysql conectável a partir da rede, era realmente útil se somente B fosse capaz de conectar seu banco de dados em A. Ele pode ser resolvido combinando filtragem de porta com autenticação mysql. Mas você não precisa se preocupar com a criptografia, o que torna as coisas muito melhores para você, se você não for um administrador.

Extensão # 2: Embora você não tenha escrito nada onde estão seus "dados locais", posso suspeitar que está em arquivos . Os arquivos podem ser compartilhados muito facilmente com o compartilhamento de rede SMB, e esse compartilhamento pode ser montado no servidor B apenas como um subdiretório ou como uma unidade separada. Seria melhor se tivesse algum tipo de independência da aplicação web original. Por exemplo, se estivesse em ...\webapps\yourappname\attachments , seria melhor se estivesse fora da pasta webapps no servidor B. Isso pode exigir um pouco da configuração do aplicativo da Web.

Extensão # 3: Apache, tomcat, cada servidor é executado como usuário, e você pode configurar facilmente, como usuário. Se eles estiverem instalados como Serviços, você poderá fazer isso nas Ferramentas Administrativas - > Serviços. E, no compartilhamento de arquivos do Windows, você pode definir as configurações de segurança do compartilhamento que somente esse usuário da rede conseguirá ler esse compartilhamento. Aviso: você precisa alterar as configurações em dois lugares. Primeiro, você precisa alterar a segurança do compartilhamento de rede e, segundo, os arquivos que estão sendo atendidos. Mas você pode fazer isso simplesmente clicando com o botão direito do mouse no diretório fornecido no Windows Explorer.

Extensão # 4: Eu considerei muito útil se você separasse a pasta compartilhada do seu aplicativo da web. Isso requer provavelmente um pouco de configuração disso. Talvez você deva estender sua pergunta, onde é seu aplicativo da web e onde são seus arquivos de dados locais em seu servidor A

.     
por 05.09.2014 / 10:22