SUP:ServidorJava

(Diferença entre revisões)
Ir para: navegação, pesquisa
(Endereço de Gerenciamento do Tomcat WS)
Linha 35: Linha 35:
 
(servidor físico 170 foi descontinuado)
 
(servidor físico 170 foi descontinuado)
  
== Passos para instalação de uma instância Tomcat (Ubuntu 16)
+
== Passos para instalação de uma instância Tomcat (Ubuntu 16) ==
 
* baixar a última versão do Tomcat disponível no site http://tomcat.apache.org/ (atualmente usamos a 8.5.15)
 
* baixar a última versão do Tomcat disponível no site http://tomcat.apache.org/ (atualmente usamos a 8.5.15)
 
* extrair para a pasta /usr/local/tomcat (ou para tomcat2 se for a segunda instância)
 
* extrair para a pasta /usr/local/tomcat (ou para tomcat2 se for a segunda instância)

Edição de 11h53min de 30 de maio de 2017

Tabela de conteúdo

Diagrama da Arquitetura Atual

Servidores Wildfly300517.png

Arquitetura Atual em texto

IP	ALIAS	ENDEREÇO			PORTA	SERVIÇO VERS   SO
--------------------------------------------------------------------------
171	java1	(server1.midas.unioeste.br)	8080	Tomcat  8.5.15 16
						8081	Tomcat  8.5.15
--------------------------------------------------------------------------
172	java2	(cdn.unioeste.br)		80	apache         12
--------------------------------------------------------------------------
174	java4	        			8080	Tomcat  8.5.15 16
						8081	Tomcat  8.5.15
--------------------------------------------------------------------------
175	java5					8080	Tomcat  8.5.15 16
						8081	Tomcat  8.5.15
--------------------------------------------------------------------------
182	java6	(server2.midas.unioeste.br)	8080	Tomcat  8.5.15 16 
		master				8081	Tomcat  8.5.15 16
--------------------------------------------------------------------------
183	java7					8080	Tomcat  8.5.15 16
						8081	Tomcat  8.5.15
--------------------------------------------------------------------------
184	java8	(ws.midas.unioeste.br)		8080	Tomcat  8.5.5  12
--------------------------------------------------------------------------

Endereços de Gereciamento dos balanceadores

https://server1.midas.unioeste.br/balancer-manager/
https://server2.midas.unioeste.br/balancer-manager/

Endereço de Gerenciamento do Tomcat WS

https://ws.midas.unioeste.br/manager (servidor físico 170 foi descontinuado)

Passos para instalação de uma instância Tomcat (Ubuntu 16)

  • baixar a última versão do Tomcat disponível no site http://tomcat.apache.org/ (atualmente usamos a 8.5.15)
  • extrair para a pasta /usr/local/tomcat (ou para tomcat2 se for a segunda instância)
  • acessar a pasta /usr/local/tomcat/conf e editar o arquivo server.conf
    • caso seja a primeira instância, deve-se apenas alterar a seguinte tag, incluindo o atribuido jvmRoute: <Engine name="Catalina" defaultHost="localhost" jvmRoute="netsr-java01:server1"> (alterar conforme o nome da máquina)
    • caso seja a segunda instância, deve-se incrementar o número das portas 8005, 8080, 8009, 8443, ficando 8006, 8081, 8010, 8444 e também alterar o atributo jvmRoute, para que seja "netsr-java01:server2"

Wildfly (descontinuado)

Instalação Master

  • copiar a pasta dezipada do Wildfly para /usr/local/wildfly
  • alterar o arquivo /usr/local/wildfly/domain/configuration/host.xml:
    • trocar o 127.0.0.1 para o IP do servidor, senão não será possível acessar o console de gerenciamento a partir de outra máquina:
<interface name="management">
   <inet-address value="${jboss.bind.address.management:200.201.88.174}"/>
</interface>
  • alterar o arquivo de configuração de inicialização /usr/local/wildfly/docs/contrib/scripts/init.d/wildfly.conf, setando as variáveis no início do arquivo, conforme segue:
 JBOSS_HOME="/usr/local/wildfly"  
 JBOSS_USER=root
 JBOSS_MODE=domain
  • subir o serviço domain, utilizando o comando:
/usr/local/wildfly/docs/contrib/scripts/init.d/wildfly-init-debian.sh start
  • adicionar novo usuário de gerenciamento, executando:
/usr/local/wildfly/bin/./add-user.sh
  • adicionar novo usuário de aplicação, para que os slaves possam conectar no master

Criando usuário para que o SLAVE se conecte no MASTER

  • para que um servidor SLAVE consiga conectar no master, ele precisar se autenticar, utilizando um usuário e senha; esse usuário e senha deve ser previamente criado no servidor MASTER
  • utilize o comando add-user.sh
    • escolha a opção a) management user:
    • lembrar de responder YES quando perguntado se o usuário é para conexão de outro AS neste master, pois será gerada uma chave criptografada, que deverá ser anotada para ser usada posteriormente na configuração do SLAVE
    • para cada novo servidor SLAVE, deve ser gerada uma nova chave de conexão, sendo que o identificador do usuário deverá ser igual ao nome do servidor; por exemplo, se o novo servidor slave, no arquivo host-slave.xml, for configurado o atributo "name" com o valor "netsr-java08", deve-se criar um usuário cujo login é "netsr-java-8"
    • é importante notar que este usuário identifica a máquina e não as instâncias slaves que rodam na máquina
      • p. ex., uma máquina cujo nome é "netsr-java08", pode ter duas instâncias slaves rodando, cujos nomes são server-one e server-two
      • neste caso, precisamos criar um único usuário no master, para que a máquina possa se conectar e registrar as suas duas instâncias

Instalação Slave

  • copiar a pasta dezipada do Wildfly para /usr/local/wildfly
  • alterar o arquivo de configuração de inicialização /usr/local/wildfly/docs/contrib/scripts/init.d/wildfly.conf, setando as variáveis no início do arquivo, conforme segue:
 JBOSS_HOME="/usr/local/wildfly"
 JBOSS_USER=root
 JBOSS_MODE=domain
 JBOSS_HOST_CONFIG="host-slave.xml"
  • abrir o arquivo /usr/local/wildfly/domain/configuration/host-slave.xml
    • alterar ou inserir o atributo name (<host name="slave1" ...), trocando o "slave1" pelo nome da máquina (p. ex, netsr-java07)
    • também neste arquivo, procurar pela tag <secret> (deve estar logo no início do arquivo) e substituir o valor do atribuito "value" pela chave gerada na instalação do master
    • substituir, logo no final do arquivo, as tags:
1. Tag que indica o IP do servidor master:
   <domain-controller>
       <remote security-realm="ManagementRealm">
           <discovery-options>
               <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="200.201.88.182" port="${jboss.domain.master.port:9999}"/>
           </discovery-options>
       </remote>
   </domain-controller>
2. Tag que indica o IP do próprio servidor:
   <interface name="public">
       <inet-address value="200.201.88.175" (substituir aqui pelo IP do próprio servidor)
   </interface>
3. Tag que indica os parâmetros padrão da JVM (mudar limite máximo do Metaspace para 512m:
   <jvms>
       <jvm name="default">
           <heap size="64m" max-size="256m"/>
           <jvm-options>
               <option value="-server"/>
               <option value="-XX:MetaspaceSize=96m"/>
               <option value="-XX:MaxMetaspaceSize=512m"/>
           </jvm-options>
       </jvm>
   </jvms>
4. Editar o arquivo /usr/local/wildfly/bin/domain.conf, e alterar os parâmetros padrão da jvm para os processos de host controller e process controller:
   JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true"
  • subir o serviço domain, utilizando o comando /usr/local/wildfly/bin/init.d/wildfly-init-debian.sh start

Administração dos Servidores

  • Após ter iniciado os servidores, eles podem ser configurados pela interface de administração do WildFly (http://200.201.88.174:9990/)
  • Configurações básicas que devem ser feitas
  1. deixar todos os hosts no mesmo grupo (main-server-group), com profile HA, através do menu
    • acesse a guia Domain -> Server Groups
    • no grid, selecione o grupo de servidores que deseja alterar
    • logo abaixo, na guia Attributes, clique em Edit e altere o atributo Profile para ha, e o atributo Socket Binding para ha-sockets
  2. alterar as configurações padrão de JVM para o grupo main-server-group, através do menu
    • Domain -> Server Groups, selecionando no grid o item "main-server-group", e então acessando a guia JVM Configuration
    • modifique os atributos de quantidade de memória e coloque no atributo "JVM Options": -server -Duser.language=pt -Duser.region=BR
  3. alterar as configurações para liberar o acesso público aos hosts, através do menu
    • Domain-> Host Configuration -> Host (master e depois os slaves) -> Interfaces
    • selecione no grid a interface public, edite e então altere a configuração da propriedade "Inet Address" para ${jboss.bind.address:200.201.88.174} (trocar o IP 174 pelo correto para cada servidor)
  4. no profile HA, não é necessário habilitar o protocolo AJP, mas, caso seja necessário, para que o balanceamento de carga possa funcionar, habilite, através do menu
    • Configuration -> selecione o profile HA -> expanda na esquerda o item WEB -> selecione HTTP -> no grid, selecione default-server e clique em VIEW
    • logo acima, nas abas, selecione AJP Listener
    • clique em ADD para adicionar um novo listener e configure da seguinte forma:

Parar o gerenciador de hosts (controller)

  1. acesse o host que deseja parar, vá na pasta /usr/local/wildfly/bin
  2. execute o comando para conectar no gerenciador: ./jboss-cli.sh
  3. vai mostrar uma mensagem dizendo para digitar "connect", então digite (sem aspas) "connect 200.201.88.174:9999"; caso queira conectar em outro servidor, troque o IP deste comando
  4. após conectar, digite "shutdown --host=slave1" ou, se quiser parar o master, troque "slave1" por "master"; todas as instâncias do host serão paradas, inclusive o master e host controller
  5. pode-se dar TAB para completar os comandos

Rodar Wildfly como um serviço (colocar no init.d)

  1. alterar o arquivo /usr/local/wildfly/docs/contrib/scripts/init.d/wildfly.conf, alterando as variáveis desejadas (conforme descrito acima)
  2. criar um link simbólico para o arquivo de configuração: ln -s /usr/local/wildfly/docs/contrib/scripts/init.d/wildfly.conf /etc/default/wildfly
  3. criar um link simbólico para o script de inicialização: ln -s /usr/local/wildfly/docs/contrib/scripts/init.d/wildfly-init-debian.sh wildfly
  4. fazer o comando para registrar como serviço, ainda estando na pasta /usr/local/wildfly/bin/init.d/: update-rc.d wildfly defaults

Instalação do Modcluster

No servidor que será o balancer (p. ex. o 200.201.88.171):

1. instale o apache2:
apt-get install apache2
2. baixe a extensão do mod_cluster no link http://mod-cluster.jboss.org/
3. dezipe o arquivo e coloque o conteúdo na pasta /usr/lib/apache2/modules
4. crie os arquivos mod_cluster.conf e mod_cluster.load dentro da pasta /etc/apache2/mods-available

altere o conteúdo do arquivo mod_cluster.load:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule slotmem_module /usr/lib/apache2/modules/mod_slotmem.so
LoadModule manager_module /usr/lib/apache2/modules/mod_manager.so
LoadModule proxy_cluster_module /usr/lib/apache2/modules/mod_proxy_cluster.so
LoadModule advertise_module /usr/lib/apache2/modules/mod_advertise.so

altere o conteúdo do arquivo mod_cluster.conf (trocar os IPs pelos da máquina onde se está configurando o mod_cluster):

Maxcontext 100
Maxnode 100
Maxhost 100

Listen 200.201.88.175:6666
<VirtualHost 200.201.88.175:6666>
  	ServerName localhost
  	<Location />
  		Order deny,allow
 		Deny from all
 		Allow from all 
	</Location> 
	KeepAliveTimeout 300
	MaxKeepAliveRequests 0
	KeepAlive On
 	ManagerBalancerName wildflycluster
 	ServerAdvertise On
 	EnableMCPMReceive
</VirtualHost>

<VirtualHost *:80>
 
	<Directory />
		Order deny,allow
		Allow from all
	</Directory>
	
	<Location /mod_cluster_manager>
		SetHandler mod_cluster-manager
		#Order deny,allow
		#Deny from all
		#Allow from all
		AuthType Basic
		AuthName "MCM"
		AuthUserFile /etc/modclusterpassword
		Require user admin
	</Location>
</VirtualHost>
5. crie um usuário, que será utilizado para acessar a página de administração do balancer
htpasswd -c /etc/modclusterpassword admin
6. crie uma pasta "logs" dentro do diretório /etc/apache2
mkdir /etc/apache2/logs
7. reinicie o Apache
/etc/init.d/apache2 restart
8. habilite o módulo mod_cluster no Apache
a2enmod mod_cluster
9. reinicie novamente o Apache e faça um teste, acessando a página de gerenciamento do mod_cluster, no link http://200.201.88.171/mod_cluster_manager (utilize o usuário e senha criados anteriormente);

Configurar um socket binding para utilização no mod_cluster

  1. este socket é um alias para o balanceador, ao qual as instâncias de um grupo irão se conectar
  2. acesse a guia Home
  3. acesse o item socket-binding-group que se quer alterar (ha-sockets, p. ex.)
  4. expanda o item remote-destination-outbound-socket-binding
  5. clique no botão ADD para adicionar um novo item
  6. preenche com um nome (p. ex., server1), host e porta
  7. este item (server1) será utilizado para configurar o item mod_cluster

Configurar o mod_cluster

  1. acesse a guia Home
  2. acesse o item profile e selecione o item que se quer alterar (ha, p. ex.)
  3. expanda o item subsystem -> modcluster -> mod-cluster-config -> configuration
  4. clique em Edit e altere os itens:
    • Balancer para wildflycluster
    • Adversite para false
    • Sticky session para true
    • Sticky Session Force para false
    • Sticky Session Remove para false
    • Proxy Url para /
    • Proxies para server1 (nome do socket definido no passo anterior)
  • Feitas estas configurações, todo o grupo de servidores deverá aparecer na página de gerenciamento do mod_cluster automaticamente (http://200.201.88.171/mod_cluster_manager)
  • O endereço desta página de administração é definido no arquivo mod_cluster.conf, na tag <Location>

Compilar módulos do mod_cluster

http://www.symbiotics.co.za/blog/knowledge-share-2/post/configure-apache-with-mod-cluster-load-balancer-on-ubuntu-2

Métricas de balanceamento disponíveis no mod_cluster

http://docs.jboss.org/mod_cluster/1.2.0/html_single/#LoadMetric

Configuração para conexão com o AD usando SSL

  • Os passos abaixo podem ser feitos na máquina local e o arquivo resultante utilizado servidor
  • gerar certificado do servidor que é a Autoridade Certificadora (CA), no caso o NETSR-DMC01, com tipo 64; pode-se usar o próprio certificado que existe no navegador; gravar em uma pasta qualquer (p. ex. D:\\cert\\keystore.jks)
  • gerar a keystore, importando o certificado recém gerado
    • keytool -importcert -file D:\\cert\\certificado.cer -keystore D:\\cert\\keystore.jks
  • gerar path completo da cadeia de CAs existente no certificado
    • openssl s_client -host netsr-dmc02.unioeste.br -port 636 -prexit -showcerts
    • copiar e colar o resultado (a partir do ---) em D:\\cert\\unioeste.pem
  • importar este path completo para a keystore
    • keytool -import -alias gca -file D:\\cert\\unioeste.pem -keystore D:\\cert\\keystore.jks
  • copiar o arquivo keystore.jks para o servidor e utilizá-lo na conexão com o LDAP

Resolver problema de "Muitos arquivos abertos" (Too many open files)

Gerenciamento dos servidores Linux

  • descobrir os maiores arquivos do servidor: du -h /var | sort -n -r | head -n 10
  • verificar as portas que estão escutando no servidor:
netstat -atn # For tcp
netstat -aun # For udp
netstat -atun # For both
  • nos servidores que utilizam autenticação pelo AD, os usuários permitidos estão em um grupo; para saber qual o grupo, deve-se executar o comando:
root@netsr-linuxweb10:/etc/pam.d# vi login.group.allowed

Configuração de SSL no Apache

  • Adicionar regra no /etc/apache2/sites-enabled/000-default, na seção do VirtualHost *.80, para redirecionar do http para https
Redirecionar quando vier uma url específica:
RedirectMatch ^/pwmunioeste/(.*) https://midas.unioeste.br/pwmunioeste/$1
Página para testar site https: https://www.ssllabs.com


Adicionar certificado SSL no Java (Para servidor fazer requisições HTTPS)

O exemplo abaixo foi feito no servidor midas (170), adicionando o certificado dos correios para utilizar o serviço WSDL deles.

Entre na pasta que contém o arquivo de certificados cacerts

 cd /usr/lib/jvm/java-8-oracle/jre/lib/security

Gere o arquivo de certificado .cer referente ao domínio que deseja incluir

 echo -n | openssl s_client -connect apps.correios.com.br:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > correios.crt

Adicione o certificado gerado ao cacerts

 keytool -import -v -trustcacerts -alias apps.correios.com.br -file correios.crt -keystore cacerts -keypass changeit -storepass changeit -noprompt

Remova o arquivo temporário do certificado que já foi incluído

 rm correios.crt

Fonte: http://stackoverflow.com/questions/9619030/resolving-javax-net-ssl-sslhandshakeexception-sun-security-validator-validatore


Links úteis

https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04 https://devops.profitbricks.com/tutorials/how-to-install-and-configure-tomcat-8-on-ubuntu-1604/

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas