Suspeito que a rede entre seus servidores não seja confiável.
Se você quer um caminho seguro, precisa
- Habilite o acesso à rede no mysql (na autenticação baseada em host e na tabela de usuários)
- Faça o servidor mysql escutando na porta 3306 no seu
my.cnf
. - Habilite a porta
3306
no firewall da sua máquina mysql, mas somente para o seu servidor B. - Ative o suporte ssl no seu servidor mysql no servidor A.
- Se houver firewalls / roteadores / filtragem de pacotes intermediários, ative as conexões
B->A:3306
TCP, mas somente elas. - Gere uma senha longa e segura para seu usuário do tomcat, por exemplo, com o comando
pwgen
. Configure esta senha no seu mysql. - 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. - Implante o webapp no servidor B.
- Teste a possibilidade de nível de TCP no servidor B com um comando
telnet A 3306
. Se ok, vá mais longe. - 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. - 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
.