SUP:ServidorJava

De Wiki Unioeste NTI
(Diferença entre revisões)
Ir para: navegação, pesquisa
(Passos para configuração do balanceador Apache)
(Servidores Tomcat reiniciando sozinhos)
 
(59 edições intermediárias de 2 usuários não apresentadas)
Linha 1: Linha 1:
 +
[[image:Voltar.jpg |Voltar]][[P%C3%A1gina_principal|Voltar a Página Inicial]]<br>
 +
 
== Diagrama da Arquitetura Atual ==
 
== Diagrama da Arquitetura Atual ==
 
[[Arquivo:Servidores Wildfly300517.png]]
 
[[Arquivo:Servidores Wildfly300517.png]]
Linha 36: Linha 38:
  
 
== Passos para instalação de uma instância Tomcat (Ubuntu 16) ==
 
== Passos para instalação de uma instância Tomcat (Ubuntu 16) ==
 +
* jdk 8 da Oracle está em D:\UNIOESTE\NTI - Documents\DDes\Desenvolvimento\Arquivos DDes\Desenvolvimento JAVA+EXTJS\jdk-8u202-linux-x64.tar.gz. Seguir os passos de instalação descritos no seguinte link: https://docs.datastax.com/en/jdk-install/doc/jdk-install/installOracleJdkDeb.html
 
* 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)
 
* alterar o dono da pasta para ROOT (chown root /usr/local/tomcat)
 
* alterar o dono da pasta para ROOT (chown root /usr/local/tomcat)
* acessar a pasta /usr/local/tomcat/conf e editar o arquivo server.conf
+
* acessar a pasta /usr/local/tomcat/conf e editar o arquivo server.xml
 
** 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 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"
 
** 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"
Linha 46: Linha 49:
 
<pre>
 
<pre>
 
[Unit]
 
[Unit]
Description=Apache Tomcat Web Application Container
+
Description=Apache Tomcat Web Application Container                                            
After=network.target
+
After=network.target                                                                          
 +
                                                                                               
 +
[Service]                                                                                     
 +
Type=forking                                                                                   
 +
                                                                                               
 +
Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre                                           
 +
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid                                     
 +
Environment=CATALINA_HOME=/usr/local/tomcat                                                   
 +
Environment=CATALINA_BASE=/usr/local/tomcat                                                   
  
[Service]
+
Environment='CATALINA_OPTS=-Xss2M -Xms3072M -Xmx3072M -XX:MaxPermSize=1024M -server -d64'
Type=forking
+
Environment='JAVA_OPTS=-Djava.net.preferIPv4Stack=true -Duser.language=pt -Duser.region=BR -Duser.Timezone=GMT-3
 
+
-Djavax.net.ssl.trustStore=/usr/local/sistemas/cert/cacerts -Djavax.net.ssl.trustStorePassword=changeit
Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
+
-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true'
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid
+
                                                                                               
Environment=CATALINA_HOME=/usr/local/tomcat
+
ExecStart=/usr/local/tomcat/bin/startup.sh                                                    
Environment=CATALINA_BASE=/usr/local/tomcat
+
ExecStop=/usr/local/tomcat/bin/shutdown.sh                                                    
Environment="$JAVA_OPTS -Xms512m -Xmx2500m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSInitiatingOccupancyFraction=60 -Djava.net.preferIPv4Stack=true -Duser.language=pt -Duser.region=BR"
+
                                                                                               
 
+
User=root                                                                                      
ExecStart=/usr/local/tomcat/bin/startup.sh
+
Group=root                                                                                    
ExecStop=/usr/local/tomcat/bin/shutdown.sh
+
UMask=0007                                                                                    
 
+
RestartSec=10                                                                                  
User=root
+
Restart=always                                                                                
Group=root
+
UMask=0007
+
RestartSec=10
+
Restart=always
+
  
 
[Install]
 
[Install]
Linha 74: Linha 81:
 
* por último, deve-se executar o seguinte comando para que o Tomcat seja iniciado na inicialização da máquina: sytemctl enable tomcat
 
* por último, deve-se executar o seguinte comando para que o Tomcat seja iniciado na inicialização da máquina: sytemctl enable tomcat
 
* para a segunda instância, deve-se seguir os mesmos passos, criando o arquivo /etc/systemd/system/tomcat2.service, não esquecendo de trocar os caminhos (trocar tomcat por tomcat2); o nome do serviço será tomcat2
 
* para a segunda instância, deve-se seguir os mesmos passos, criando o arquivo /etc/systemd/system/tomcat2.service, não esquecendo de trocar os caminhos (trocar tomcat por tomcat2); o nome do serviço será tomcat2
 +
 +
* para acessar o manager do Tomcat, deve:
 +
** editar o arquivo /usr/local/tomcat/conf/tomcat-users.xml e adicionar:
 +
<pre>
 +
<role rolename="manager-gui"/>
 +
<user username="umUsuario" password="umaSenha" roles="manager-gui,manager-status" />
 +
</pre>
 +
*editar o arquivo /usr/local/tomcat/webapps/manager/META-INF/context.xml e deixá-lo assim:
 +
<pre>
 +
<Context antiResourceLocking="false" privileged="true" >
 +
<!--
 +
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
 +
-->
 +
</Context>
 +
</pre>
 +
* Criar mapeamento /usr/local/sistemas apontando para o cdn.unioeste.br
 +
**instalar pacote necessário: apt install nfs-common
 +
**criar pasta para montagem do diretório remoto: mkdir /media/sistemas_remoto
 +
** vi /etc/fstab e inserir: cdn.unioeste.br:/usr/local/sistemas    /media/sistemas_remoto  nfs    rsize=8192,wsize=8192,timeo=14,intr
 +
**para testar o acesso:  mount -t nfs -o rw cdn.unioeste.br:/usr/local/sistemas /media/sistemas_remoto/
 +
** criar link simbólico para poder acessar no caminho /usr/local/sistemas: ln -s /media/sistemas_remoto/ /usr/local/sistemas
  
 
== Passos para configuração do balanceador Apache ==
 
== Passos para configuração do balanceador Apache ==
Linha 106: Linha 134:
 
                 ProxyPassReverse / balancer://server/                                               
 
                 ProxyPassReverse / balancer://server/                                               
 
                 <Proxy balancer://server>                                                           
 
                 <Proxy balancer://server>                                                           
                 BalancerMember ajp://200.201.88.175:8009 loadfactor=1 route=netsr-java05:server1   
+
                 BalancerMember ajp://200.201.88.175:8009 loadfactor=1 route=netsr-java05:server1 TimeOut=3600    
                 BalancerMember ajp://200.201.88.175:8010 loadfactor=1 route=netsr-java05:server2   
+
                 BalancerMember ajp://200.201.88.175:8010 loadfactor=1 route=netsr-java05:server2 TimeOut=3600    
                 BalancerMember ajp://200.201.88.174:8009 loadfactor=1 route=netsr-java04:server1   
+
                 BalancerMember ajp://200.201.88.174:8009 loadfactor=1 route=netsr-java04:server1 TimeOut=3600    
                 BalancerMember ajp://200.201.88.174:8010 loadfactor=1 route=netsr-java04:server2   
+
                 BalancerMember ajp://200.201.88.174:8010 loadfactor=1 route=netsr-java04:server2 TimeOut=3600    
                 BalancerMember ajp://200.201.88.182:8009 loadfactor=1 route=netsr-java06:server1   
+
                 BalancerMember ajp://200.201.88.182:8009 loadfactor=1 route=netsr-java06:server1 TimeOut=3600    
                 BalancerMember ajp://200.201.88.182:8010 loadfactor=1 route=netsr-java06:server2   
+
                 BalancerMember ajp://200.201.88.182:8010 loadfactor=1 route=netsr-java06:server2 TimeOut=3600    
 
                 </proxy>                                                                           
 
                 </proxy>                                                                           
 
                                                                                                    
 
                                                                                                    
Linha 141: Linha 169:
 
</pre>
 
</pre>
  
==Wildfly (descontinuado) ==
+
== Inclusão de novo servidor no sistema Deployer e no Balanceador ==
=== Instalação Master ===
+
:1. adicionar o servidor ao grupo de servidores REPORT no Deployer
* copiar a pasta dezipada do Wildfly para /usr/local/wildfly
+
::- logar no servidor netsr-java01 (ou qualquer outro servidor, pois os arquivos são compartilhados)
* alterar o arquivo /usr/local/wildfly/domain/configuration/host.xml:  
+
::- editar o arquivo /usr/local/sistemas/deployer/servers.txt
** 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:
+
::- adicionar uma linha para o novo servidor, no formato NOMEDOSERVER:PORTA;GRUPO (p. ex. netsr-java20.unioeste.br:8080;report
<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:
+
:2. logar no sistema Deployer
/usr/local/wildfly/docs/contrib/scripts/init.d/wildfly-init-debian.sh start
+
::- verificar se o novo servidor já está aparecendo no grupo de servidores correto
* adicionar novo usuário de gerenciamento, executando:
+
::- clicar no botão DIF para listar as diferenças de apps deployados no servidor novo
/usr/local/wildfly/bin/./add-user.sh
+
::- clicar no botão SYNC para sincronizar as diferenças e deixar fazer com que o server novo tenha os mesmos apps
* adicionar novo usuário de aplicação, para que os slaves possam conectar no master
+
::- clicar no botão DIF para ver se ainda tem diferenças
  
=== Criando usuário para que o SLAVE se conecte no MASTER ===
+
:3. adicionar o servidor ao grupo de servidores que faz parte do balanceador
* 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
+
::- logar no servidor balanceador (p. ex., se for no balanceador de REPORT, logar no server1.midas.unioeste.br)
* utilize o comando add-user.sh
+
::- editar o arquivo /etc/apache2/mods-enabled/proxy_balancer.conf
** escolha a opção a) management user:
+
::- adicionar uma linha para o novo servidor na seção <Proxy> (p. ex. BalancerMember ajp://netsr-java20.unioeste.br:8009 loadfactor=1)
** 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
+
::- reiniciar o apache
** 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"
+
::- logar no manager do balanceador e verificar se o novo servidor está sendo listado (p. ex. https://server1.midas.unioeste.br/balancer-manager)
** é 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
 
# 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'''
 
# 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'''
 
# 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)
 
# 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:
 
#** campo '''Name''', preencha com '''default.ajp'''
 
#** campo '''Socket binding''', preencha com '''ajp'''
 
#** clique em Finish
 
#** mais informações em http://www.mastertheboss.com/jboss-server/jboss-cluster/configuring-modjk-with-wildflyjboss-as-7
 
 
==== Parar o gerenciador de hosts (controller) ====
 
# acesse o host que deseja parar, vá na pasta /usr/local/wildfly/bin
 
# execute o comando para conectar no gerenciador: ./jboss-cli.sh
 
# 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
 
# 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
 
# pode-se dar TAB para completar os comandos
 
 
=== Rodar Wildfly como um serviço (colocar no init.d) ===
 
# alterar o arquivo /usr/local/wildfly/docs/contrib/scripts/init.d/wildfly.conf, alterando as variáveis desejadas (conforme descrito acima)
 
# 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
 
# 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
 
# 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 ====
 
# este socket é um alias para o balanceador, ao qual as instâncias de um grupo irão se conectar
 
# acesse a guia Home
 
# acesse o item socket-binding-group que se quer alterar (ha-sockets, p. ex.)
 
# expanda o item remote-destination-outbound-socket-binding
 
# clique no botão ADD para adicionar um novo item
 
# preenche com um nome (p. ex., server1), host e porta
 
# este item (server1) será utilizado para configurar o item mod_cluster
 
 
==== Configurar o mod_cluster ====
 
# acesse a guia Home
 
# acesse o item profile e selecione o item que se quer alterar (ha, p. ex.)
 
# expanda o item subsystem -> modcluster -> mod-cluster-config -> configuration
 
# 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 ==
 
== 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
 
* Os passos abaixo podem ser feitos na máquina local e o arquivo resultante utilizado servidor
Linha 349: Linha 199:
 
** keytool -import -alias gca -file D:\\cert\\unioeste.pem -keystore D:\\cert\\keystore.jks
 
** 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
 
* copiar o arquivo keystore.jks para o servidor e utilizá-lo na conexão com o LDAP
 +
* reiniciar o serviço do Tomcat
  
 
== Resolver problema de "Muitos arquivos abertos" (Too many open files) ==
 
== Resolver problema de "Muitos arquivos abertos" (Too many open files) ==
Linha 386: Linha 237:
 
Fonte: http://stackoverflow.com/questions/9619030/resolving-javax-net-ssl-sslhandshakeexception-sun-security-validator-validatore
 
Fonte: http://stackoverflow.com/questions/9619030/resolving-javax-net-ssl-sslhandshakeexception-sun-security-validator-validatore
  
 +
== Adicionar certificado P12 do PagSeguro) ==
 +
Importar o certificado no formato P12 para o cacerts que está em /usr/local/sistemas/cert/
 +
 +
Entre na pasta que contém o arquivo de certificados '''cacerts'''
 +
  cd /usr/local/sistemas/cert/
 +
 +
Importe o certificado
 +
  keytool -v -importkeystore -srckeystore UnioestePixSandbox.p12 -srcstoretype PKCS12 -destkeystore cacerts -deststoretype JKS
 +
 +
Caso não funcione, pode ser que já existe algum outro certificado semelhante. Nesse caso, deve-se excluí-lo antes de importar.
 +
Para isso, pode-se listar os certificados já existentes, identificar o alias do certificado a ser removido e dar o comando para excluir.
 +
 +
Salva a lista para um arquivo temp.txt
 +
  keytool -list -keystore cacerts > /home/administrator/temp.txt
 +
 +
Localize o certificado que deve ser excluído e faça o comando:
 +
  keytool -delete -alias ALIAS -keystore cacerts
 +
 +
Como o certificado é carregado na pasta compartilhada pelos servidores, não é necessário instalar o certificado em cada servidor, pois todos usam o mesmo cacerts.
  
 
= Links úteis=  
 
= Links úteis=  
Linha 393: Linha 263:
 
* Configurar Tomcat para inicializar no boot: http://blogasisco.wordpress.com/2012/10/08/tomcat-no-linuxdebian-com-inicializacao-no-boot-do-sistema/
 
* Configurar Tomcat para inicializar no boot: http://blogasisco.wordpress.com/2012/10/08/tomcat-no-linuxdebian-com-inicializacao-no-boot-do-sistema/
 
* Rotacionar log do Tomcat: http://java.dzone.com/articles/how-rotate-tomcat-catalinaout
 
* Rotacionar log do Tomcat: http://java.dzone.com/articles/how-rotate-tomcat-catalinaout
* Instalar o Java no Ubuntu manualmente: http://www.wikihow.com/Install-Oracle-Java-JDK-on-Ubuntu-Linux
+
* Instalar o Java no Ubuntu manualmente: https://docs.datastax.com/en/jdk-install/doc/jdk-install/installOracleJdkDeb.html
 +
* Setar Timezone do Linux: https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-20-04
 
* Inicializar Tomcat como serviço no Ubuntu 16:  
 
* Inicializar Tomcat como serviço no Ubuntu 16:  
 
https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04
 
https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04
Linha 401: Linha 272:
 
* criar o arquivo /etc/logrotate.d/tomcat e inserir o seguinte conteúdo:
 
* criar o arquivo /etc/logrotate.d/tomcat e inserir o seguinte conteúdo:
 
<pre>
 
<pre>
/usr/local/tomcat/logs/catalina.out {
+
/opt/tomcat/apache-tomcat-8.5.81/logs/catalina.out {
 
         copytruncate
 
         copytruncate
 
         daily
 
         daily
Linha 411: Linha 282:
 
</pre>
 
</pre>
 
* observar o caminho do log, para ter certeza de que está correto
 
* observar o caminho do log, para ter certeza de que está correto
* para testar, execute o seguinte comando: /usr/sbin/logrotate /etc/logrotate.conf
+
* para testar, execute o seguinte comando: logrotate --force --verbose /etc/logrotate.conf
 
* se o servidor tiver outra instância de Tomcat, crie um novo arquivo com o nome tomcat2 e altere o caminho do log
 
* se o servidor tiver outra instância de Tomcat, crie um novo arquivo com o nome tomcat2 e altere o caminho do log
 +
* referência: https://www.dicas-l.com.br/arquivo/utilizando_logrotate.php
 +
 +
= Ajustes para rodar SADAU no servidor ws.midas.unioeste.br =
 +
*instalar o JBoss 4.3.2, fazendo rodar como um serviço que inicia automaticamente
 +
*instalar as fontes para que os relatórios em Jasper funcionem:
 +
<pre>
 +
sudo apt-get update
 +
sudo apt-get install ttf-mscorefonts-installer
 +
</pre>
 +
*Fazer deploy do projeto sadauplugin.war
 +
**rodar projeto no Eclipse
 +
**será gerado uma pasta com o nome do projeto
 +
**compacte o conteúdo dessa pasta para um arquivo sadauplugin.war
 +
**copie esse arquivo para a pasta \usr\local\jboss-4.2.3.GA\server\default\deploy
 +
**o JBoss fará o autodeploy do projeto
 +
**não esquecer de copiar o arquivo que possui as configurações de conexão com o banco
 +
***o arquivo sadauplugin-ds.xml deve ser copiado para a pasta deploy citadada acima
 +
* Atualmente é utilizado o mod_proxy para redirecionamento para as aplicações que rodam no Tomcat. O SADAU roda em Jboss 4.2.3.
 +
* Deve-se alterar o arquivo proxy.conf e deixá-lo encaminhando as requisições do sadauplugin para o servidor JBoss:
 +
<pre>
 +
ProxyPass /sadauplugin http://localhost:8090/sadauplugin
 +
ProxyPassReverse /sadauplugin http://localhost:8090/sadauplugin
 +
 +
ProxyPass / ajp://localhost:8009/
 +
ProxyPassReverse / ajp://localhost:8009/
 +
</pre>
 +
* As demais requisições são encaminhadas normalmente para o Tomcat
 +
* Deve-se também habilitar o módulo do mod_proxy que reencaminha para servidores http:
 +
<pre>
 +
a2enmod proxy_http
 +
</pre>
 +
 +
= Exportação de certificado e utilização dele no servidor web php =
 +
* Tivemos problema ao colocar um novo certificado nos servidores midas (midas.unioeste.br, server1.midas.unioeste.br, server3.midas.unioeste.br)
 +
* Nas chamadas das APIs de listagem de equipe e de cursos que o servidor php faz para os servidores midas, é utilizado https
 +
* Para que o servidor php confie no certificado dos servidores midas, é necessário exportar cada um dos certificados da cadeia dos servidores midas no formato X.509 na base 64
 +
[[Arquivo:exporta-certificado.png]]
 +
* Serão gerados arquivos com extensão .cer
 +
* Abra cada arquivo e coloque o conteúdo (que está na base 64) em um novo arquivo chamado cert.pem
 +
* Copie esse arquivo para a pasta /usr/lib/ssl/ do servidor php
 +
* Reinicie o serviço do Apache
 +
* Esse procedimento faz com que o Apache confie nos servidores que possuem os certificados públicos incluídos no arquivo cert.pem
 +
* Maiores detalhes em [https://pt.stackoverflow.com/questions/136998/erro-de-ssl-com-file-get-contents]
 +
 +
= Corrigir timezone do Java =
 +
https://www.guiadojava.com.br/2019/11/nao-horario-de-verao.html
 +
 +
* Logar no servidor que vai ser corrigido
 +
 +
* Copiar de outro servidor o arquivo tzupdater.jar, ou então copiar da máquina local para o seu home no servidor
 +
* Se for copiar de outra máquina, o comando é o seguinte: scp administrator@netsr-java05:/home/local/UNIOESTENET/marcio.veronez/tzupdater.jar /home/administrator/
 +
 +
* Executar o tzupdater, passando como parâmetro o endereço do pacote de timezones mais atual: java -jar tzupdater.jar -l https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
 +
 +
= Aumentar o tempo de timeout do servidor Apache balanceador, para evitar que operações demoradas retornem erro =
 +
* Editar o arquivo de configuração do Apache: vi /etc/apache2/apache2.conf
 +
* Editar a linha de configuração escrito Timeout=300 e inserir o valor desejado (p. ex. 900 segundos = 15 minutos)
 +
* Salvar e reiniciar o Apache
 +
 +
= Configuração no resolv.conf dos servidores de aplicação  =
 +
* Configuração para que os servidores de aplicação se enxerguem somente pelo nome de máquina (necessário para o Deployer)
 +
* configurar o arquivo /etc/resolvconf/resolv.conf.d/base da seguinte forma:
 +
<pre>
 +
nameserver 127.0.0.53
 +
options edns0 trust-ad
 +
#search .
 +
domain unioeste.br
 +
search unioeste.br
 +
</pre>
 +
* regerar o /etc/resolv.conf usando o comando resolvconf -u
 +
= Procedimentos para funcionar conexões TLS nos servidores =
 +
* Liberar os servidores de aplicação para que possam fazer qualquer tipo de conexão, pois em 27/09/2023 descobrimos que nossos servidores não estavam conseguindo conectar no PagSeguro devido a uma regra no firewall Fortinet, que identificava as requisições como "shopping" e as bloqueava. *
 +
* Em 26/01/2024 alguns servidores não estavam com a conexão TLS funcionando. Tivemos que reiniciar eles para que voltassem a funcionar.
 +
= Configuração para CORS no servidor Apache (balanceador) server1.midas.unioeste.br =
 +
* Essa configuração foi necessária para que o server1 pudesse aceitar requisições cross site vindas do servidor midas.unioeste.br
 +
* Deve-se instalar o módulo do Apache para lidar com cabeçalhos de requisição, através do comando: a2enmod headers
 +
* Deve-se editar o arquivo /etc/apache2/mods-enabled/proxy_balancer.conf e inserir as seguintes configurações:
 +
<pre>
 +
# Set CORS headers
 +
<IfModule mod_headers.c>
 +
SetEnvIf Origin "https://midas.unioeste.br$" AccessControlAllowOrigin=$0
 +
#SetEnvIf Origin "https://subpage\.allowed-origin\.com$" AccessControlAllowOrigin=$0
 +
 +
Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
 +
Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
 +
Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
 +
Header always set Access-Control-Allow-Credentials "true"
 +
 +
# Handle preflight requests
 +
SetEnvIf Request_Method OPTIONS OPTIONS_REQUEST
 +
Header always set Access-Control-Max-Age "86400" env=OPTIONS_REQUEST
 +
Header always set Content-Length "0" env=OPTIONS_REQUEST
 +
Header always set Content-Type "text/plain charset=UTF-8" env=OPTIONS_REQUEST
 +
</IfModule>
 +
</pre>
 +
*Após fazer as alterações, reiniciar o serviço do Apache
 +
= Servidores Tomcat reiniciando sozinhos =
 +
* Foi percebido, através da coluna status do sistema Deployer, que alguns servidores Tomcat estavam reiniciando sozinhos
 +
* Reinicializações vinha ocorrendo já a algum tempo, sendo que a investigação aconteceu em 25/06/2024
 +
* Possibilidades seriam de que a máquina virtual que hospeda o Tomcat tenha reiniciado, o que foi descartado ao fazer o comando uptime, que mostrou que o servidor estava ligado a vários dias
 +
* Outra possibilidade seria o Tomcat ter estourado memória e reiniciado, no entanto, ao investigar o catalina.out, não aparece nenhum erro
 +
* Investigando mais um pouco, descobriu-se que no arquivo de configuração do serviço /etc/systemd/tomcat.service existe uma propriedade chamada "Restart" que indica que o serviço deve ser reiniciado após parar
 +
* Através do comando journalctl -u tomcat -f pode-se verificar que realmente o serviço parou e foi reiniciado
 +
<pre>
 +
root@netsr-midasha08:/home/administrator# journalctl -u tomcat -f
 +
Jun 25 06:36:04 netsr-midasha08 systemd[1]: tomcat.service: Main process exited, code=killed, status=9/KILL
 +
Jun 25 06:36:05 netsr-midasha08 shutdown.sh[878325]: Tomcat stopped.
 +
Jun 25 06:36:05 netsr-midasha08 systemd[1]: tomcat.service: Failed with result 'oom-kill'.
 +
Jun 25 06:36:05 netsr-midasha08 systemd[1]: tomcat.service: Consumed 19h 19min 2.274s CPU time.
 +
Jun 25 06:36:15 netsr-midasha08 systemd[1]: tomcat.service: Scheduled restart job, restart counter is at 1.
 +
Jun 25 06:36:15 netsr-midasha08 systemd[1]: Stopped Tomcat.
 +
Jun 25 06:36:15 netsr-midasha08 systemd[1]: tomcat.service: Consumed 19h 19min 2.274s CPU time.
 +
Jun 25 06:36:15 netsr-midasha08 systemd[1]: Starting Tomcat...
 +
Jun 25 06:36:15 netsr-midasha08 startup.sh[878373]: Tomcat started.
 +
Jun 25 06:36:15 netsr-midasha08 systemd[1]: Started Tomcat.
 +
</pre>
 +
* Através do comando journalctl -xe foi possível verificar que o Ubuntu matou o processo do Tomcat, devido a falta de memória
 +
<pre>unattended-upgr invoked oom-killer: gfp_mask=0x1100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
 +
</pre>
 +
* Fizemos a alteração do arquivo de inicialização do Tomcat, diminuindo o valor da memória máxima que pode ser alocada

Edição atual tal como 15h23min de 25 de junho de 2024

VoltarVoltar a Página Inicial

Tabela de conteúdo

[editar] Diagrama da Arquitetura Atual

Servidores Wildfly300517.png

[editar] 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
--------------------------------------------------------------------------

[editar] Endereços de Gereciamento dos balanceadores

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

[editar] Endereço de Gerenciamento do Tomcat WS

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

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

  • jdk 8 da Oracle está em D:\UNIOESTE\NTI - Documents\DDes\Desenvolvimento\Arquivos DDes\Desenvolvimento JAVA+EXTJS\jdk-8u202-linux-x64.tar.gz. Seguir os passos de instalação descritos no seguinte link: https://docs.datastax.com/en/jdk-install/doc/jdk-install/installOracleJdkDeb.html
  • 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)
  • alterar o dono da pasta para ROOT (chown root /usr/local/tomcat)
  • acessar a pasta /usr/local/tomcat/conf e editar o arquivo server.xml
    • 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"
  • configurar no Ubuntu para que a instância possa ser iniciada ou parada com o comando systemctl
    • criar o arquivo /etc/systemd/system/tomcat.service com o seguinte conteúdo:
[Unit]
Description=Apache Tomcat Web Application Container                                             
After=network.target                                                                            
                                                                                                
[Service]                                                                                       
Type=forking                                                                                    
                                                                                                
Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre                                            
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid                                      
Environment=CATALINA_HOME=/usr/local/tomcat                                                     
Environment=CATALINA_BASE=/usr/local/tomcat                                                     

Environment='CATALINA_OPTS=-Xss2M -Xms3072M -Xmx3072M -XX:MaxPermSize=1024M -server -d64'
Environment='JAVA_OPTS=-Djava.net.preferIPv4Stack=true -Duser.language=pt -Duser.region=BR -Duser.Timezone=GMT-3 
-Djavax.net.ssl.trustStore=/usr/local/sistemas/cert/cacerts -Djavax.net.ssl.trustStorePassword=changeit 
-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true'
                                                                                                
ExecStart=/usr/local/tomcat/bin/startup.sh                                                      
ExecStop=/usr/local/tomcat/bin/shutdown.sh                                                      
                                                                                                
User=root                                                                                       
Group=root                                                                                      
UMask=0007                                                                                      
RestartSec=10                                                                                   
Restart=always                                                                                  

[Install]
WantedBy=multi-user.target
  • execute o comando para atualizar a lista de serviços no Ubuntu: systemctl daemon-reload
  • feito isso, o serviço do Tomcat poderá ser iniciado ou parado através dos comandos: systemctl start/stop/restart tomcat
  • por último, deve-se executar o seguinte comando para que o Tomcat seja iniciado na inicialização da máquina: sytemctl enable tomcat
  • para a segunda instância, deve-se seguir os mesmos passos, criando o arquivo /etc/systemd/system/tomcat2.service, não esquecendo de trocar os caminhos (trocar tomcat por tomcat2); o nome do serviço será tomcat2
  • para acessar o manager do Tomcat, deve:
    • editar o arquivo /usr/local/tomcat/conf/tomcat-users.xml e adicionar:
<role rolename="manager-gui"/>
<user username="umUsuario" password="umaSenha" roles="manager-gui,manager-status" />
  • editar o arquivo /usr/local/tomcat/webapps/manager/META-INF/context.xml e deixá-lo assim:
<Context antiResourceLocking="false" privileged="true" >
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
  • Criar mapeamento /usr/local/sistemas apontando para o cdn.unioeste.br
    • instalar pacote necessário: apt install nfs-common
    • criar pasta para montagem do diretório remoto: mkdir /media/sistemas_remoto
    • vi /etc/fstab e inserir: cdn.unioeste.br:/usr/local/sistemas /media/sistemas_remoto nfs rsize=8192,wsize=8192,timeo=14,intr
    • para testar o acesso: mount -t nfs -o rw cdn.unioeste.br:/usr/local/sistemas /media/sistemas_remoto/
    • criar link simbólico para poder acessar no caminho /usr/local/sistemas: ln -s /media/sistemas_remoto/ /usr/local/sistemas

[editar] Passos para configuração do balanceador Apache

  • instale o Apache (versão 2.4)
  • instale os módulos proxy_balancer e proxy_ajp (comando a2enmod nome_do_modulo)
  • edite o arquivo /etc/apache2/mods-enabled/proxy_balancer.conf e altere conforme segue, lembrando de colocar somente os servidores que farão parte deste balanceador:
<IfModule mod_proxy_balancer.c>                                                                    
                                                                                                   
        # Balancer manager enables dynamic update of balancer members                              
        # (needs mod_status). Uncomment to enable.                                                 
        #                                                                                          
        <IfModule mod_status.c>                                                                    
           <Location /balancer-manager>                                                            
                SetHandler balancer-manager                                                        
                Order Deny,Allow                                                                   
                Deny from all                                                                      
                Allow from all                                                                     
                AuthType basic                                                                     
                AuthName "My_auth_name"                                                            
                AuthUserFile "/etc/apache2/passwd/passwords"                                       
                # Anonymous *                                                                      
                Require valid-user                                                                 
           </Location>                                                                             
        </IfModule>                                                                                
                                                                                                   
                                                                                                   
        <ifmodule mod_proxy_balancer.c>                                                            
                                                                                                   
                ProxyPass /balancer-manager !                                                      
                ProxyPass / balancer://server/ stickysession=JSESSIONID|jsessionid                 
                ProxyPassReverse / balancer://server/                                              
                <Proxy balancer://server>                                                          
                BalancerMember ajp://200.201.88.175:8009 loadfactor=1 route=netsr-java05:server1 TimeOut=3600   
                BalancerMember ajp://200.201.88.175:8010 loadfactor=1 route=netsr-java05:server2 TimeOut=3600   
                BalancerMember ajp://200.201.88.174:8009 loadfactor=1 route=netsr-java04:server1 TimeOut=3600   
                BalancerMember ajp://200.201.88.174:8010 loadfactor=1 route=netsr-java04:server2 TimeOut=3600   
                BalancerMember ajp://200.201.88.182:8009 loadfactor=1 route=netsr-java06:server1 TimeOut=3600   
                BalancerMember ajp://200.201.88.182:8010 loadfactor=1 route=netsr-java06:server2 TimeOut=3600   
                </proxy>                                                                           
                                                                                                   
        </ifmodule>                                                                                
                                                                                                   
                                                                                                   
</IfModule>                                                                                        
  • para que a url de status do balanceador funcione (/balancer-manager), deve-se criar um usuário, conforme segue:
mkdir /etc/apache2/passwd
/etc/apache2/passwd/passwords
htpasswd -c /etc/apache2/passwd/passwords admin
--insira a senha para o usuário admin, a qual será utilizada para acessar a url de gerenciamento
  • após estas configurações, reinicie o apache com o comando systemctl restart apache2
  • acesse a url de gerenciamento e verifique se os servidores balanceados estão listados (ex. de url: https://server1.midas.unioeste.br/balancer-manager)
  • altere o arquivo /etc/apache2/mods-enabled/mpm_worker.conf para permitir que o Apache receba um grande número de conexões simultâneas:
<IfModule mpm_worker_module>
        StartServers             8
        MinSpareThreads          256
        MaxSpareThreads          512
        ThreadLimit              1024
        ThreadsPerChild          256
        MaxRequestWorkers        4096
        MaxConnectionsPerChild   256
</IfModule>

[editar] Inclusão de novo servidor no sistema Deployer e no Balanceador

1. adicionar o servidor ao grupo de servidores REPORT no Deployer
- logar no servidor netsr-java01 (ou qualquer outro servidor, pois os arquivos são compartilhados)
- editar o arquivo /usr/local/sistemas/deployer/servers.txt
- adicionar uma linha para o novo servidor, no formato NOMEDOSERVER:PORTA;GRUPO (p. ex. netsr-java20.unioeste.br:8080;report
2. logar no sistema Deployer
- verificar se o novo servidor já está aparecendo no grupo de servidores correto
- clicar no botão DIF para listar as diferenças de apps deployados no servidor novo
- clicar no botão SYNC para sincronizar as diferenças e deixar fazer com que o server novo tenha os mesmos apps
- clicar no botão DIF para ver se ainda tem diferenças
3. adicionar o servidor ao grupo de servidores que faz parte do balanceador
- logar no servidor balanceador (p. ex., se for no balanceador de REPORT, logar no server1.midas.unioeste.br)
- editar o arquivo /etc/apache2/mods-enabled/proxy_balancer.conf
- adicionar uma linha para o novo servidor na seção <Proxy> (p. ex. BalancerMember ajp://netsr-java20.unioeste.br:8009 loadfactor=1)
- reiniciar o apache
- logar no manager do balanceador e verificar se o novo servidor está sendo listado (p. ex. https://server1.midas.unioeste.br/balancer-manager)

[editar] 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
  • reiniciar o serviço do Tomcat

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

[editar] 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

[editar] 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


[editar] 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

[editar] Adicionar certificado P12 do PagSeguro)

Importar o certificado no formato P12 para o cacerts que está em /usr/local/sistemas/cert/

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

 cd /usr/local/sistemas/cert/

Importe o certificado

 keytool -v -importkeystore -srckeystore UnioestePixSandbox.p12 -srcstoretype PKCS12 -destkeystore cacerts -deststoretype JKS

Caso não funcione, pode ser que já existe algum outro certificado semelhante. Nesse caso, deve-se excluí-lo antes de importar. Para isso, pode-se listar os certificados já existentes, identificar o alias do certificado a ser removido e dar o comando para excluir.

Salva a lista para um arquivo temp.txt

  keytool -list -keystore cacerts > /home/administrator/temp.txt

Localize o certificado que deve ser excluído e faça o comando:

  keytool -delete -alias ALIAS -keystore cacerts

Como o certificado é carregado na pasta compartilhada pelos servidores, não é necessário instalar o certificado em cada servidor, pois todos usam o mesmo cacerts.

[editar] 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/

[editar] Rotacionar logs do Tomcat

  • criar o arquivo /etc/logrotate.d/tomcat e inserir o seguinte conteúdo:
/opt/tomcat/apache-tomcat-8.5.81/logs/catalina.out {
        copytruncate
        daily
        rotate 7
        compress
        missingok
        size 10M
}
  • observar o caminho do log, para ter certeza de que está correto
  • para testar, execute o seguinte comando: logrotate --force --verbose /etc/logrotate.conf
  • se o servidor tiver outra instância de Tomcat, crie um novo arquivo com o nome tomcat2 e altere o caminho do log
  • referência: https://www.dicas-l.com.br/arquivo/utilizando_logrotate.php

[editar] Ajustes para rodar SADAU no servidor ws.midas.unioeste.br

  • instalar o JBoss 4.3.2, fazendo rodar como um serviço que inicia automaticamente
  • instalar as fontes para que os relatórios em Jasper funcionem:
sudo apt-get update
sudo apt-get install ttf-mscorefonts-installer
  • Fazer deploy do projeto sadauplugin.war
    • rodar projeto no Eclipse
    • será gerado uma pasta com o nome do projeto
    • compacte o conteúdo dessa pasta para um arquivo sadauplugin.war
    • copie esse arquivo para a pasta \usr\local\jboss-4.2.3.GA\server\default\deploy
    • o JBoss fará o autodeploy do projeto
    • não esquecer de copiar o arquivo que possui as configurações de conexão com o banco
      • o arquivo sadauplugin-ds.xml deve ser copiado para a pasta deploy citadada acima
  • Atualmente é utilizado o mod_proxy para redirecionamento para as aplicações que rodam no Tomcat. O SADAU roda em Jboss 4.2.3.
  • Deve-se alterar o arquivo proxy.conf e deixá-lo encaminhando as requisições do sadauplugin para o servidor JBoss:
ProxyPass /sadauplugin http://localhost:8090/sadauplugin
ProxyPassReverse /sadauplugin http://localhost:8090/sadauplugin

ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
  • As demais requisições são encaminhadas normalmente para o Tomcat
  • Deve-se também habilitar o módulo do mod_proxy que reencaminha para servidores http:
a2enmod proxy_http

[editar] Exportação de certificado e utilização dele no servidor web php

  • Tivemos problema ao colocar um novo certificado nos servidores midas (midas.unioeste.br, server1.midas.unioeste.br, server3.midas.unioeste.br)
  • Nas chamadas das APIs de listagem de equipe e de cursos que o servidor php faz para os servidores midas, é utilizado https
  • Para que o servidor php confie no certificado dos servidores midas, é necessário exportar cada um dos certificados da cadeia dos servidores midas no formato X.509 na base 64

Exporta-certificado.png

  • Serão gerados arquivos com extensão .cer
  • Abra cada arquivo e coloque o conteúdo (que está na base 64) em um novo arquivo chamado cert.pem
  • Copie esse arquivo para a pasta /usr/lib/ssl/ do servidor php
  • Reinicie o serviço do Apache
  • Esse procedimento faz com que o Apache confie nos servidores que possuem os certificados públicos incluídos no arquivo cert.pem
  • Maiores detalhes em [3]

[editar] Corrigir timezone do Java

https://www.guiadojava.com.br/2019/11/nao-horario-de-verao.html

  • Logar no servidor que vai ser corrigido
  • Copiar de outro servidor o arquivo tzupdater.jar, ou então copiar da máquina local para o seu home no servidor
  • Se for copiar de outra máquina, o comando é o seguinte: scp administrator@netsr-java05:/home/local/UNIOESTENET/marcio.veronez/tzupdater.jar /home/administrator/

[editar] Aumentar o tempo de timeout do servidor Apache balanceador, para evitar que operações demoradas retornem erro

  • Editar o arquivo de configuração do Apache: vi /etc/apache2/apache2.conf
  • Editar a linha de configuração escrito Timeout=300 e inserir o valor desejado (p. ex. 900 segundos = 15 minutos)
  • Salvar e reiniciar o Apache

[editar] Configuração no resolv.conf dos servidores de aplicação

  • Configuração para que os servidores de aplicação se enxerguem somente pelo nome de máquina (necessário para o Deployer)
  • configurar o arquivo /etc/resolvconf/resolv.conf.d/base da seguinte forma:
nameserver 127.0.0.53
options edns0 trust-ad
#search .
domain unioeste.br
search unioeste.br
  • regerar o /etc/resolv.conf usando o comando resolvconf -u

[editar] Procedimentos para funcionar conexões TLS nos servidores

  • Liberar os servidores de aplicação para que possam fazer qualquer tipo de conexão, pois em 27/09/2023 descobrimos que nossos servidores não estavam conseguindo conectar no PagSeguro devido a uma regra no firewall Fortinet, que identificava as requisições como "shopping" e as bloqueava. *
  • Em 26/01/2024 alguns servidores não estavam com a conexão TLS funcionando. Tivemos que reiniciar eles para que voltassem a funcionar.

[editar] Configuração para CORS no servidor Apache (balanceador) server1.midas.unioeste.br

  • Essa configuração foi necessária para que o server1 pudesse aceitar requisições cross site vindas do servidor midas.unioeste.br
  • Deve-se instalar o módulo do Apache para lidar com cabeçalhos de requisição, através do comando: a2enmod headers
  • Deve-se editar o arquivo /etc/apache2/mods-enabled/proxy_balancer.conf e inserir as seguintes configurações:
# Set CORS headers
<IfModule mod_headers.c>
	SetEnvIf Origin "https://midas.unioeste.br$" AccessControlAllowOrigin=$0
	#SetEnvIf Origin "https://subpage\.allowed-origin\.com$" AccessControlAllowOrigin=$0

	Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
	Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
	Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
	Header always set Access-Control-Allow-Credentials "true"

	# Handle preflight requests
	SetEnvIf Request_Method OPTIONS OPTIONS_REQUEST
	Header always set Access-Control-Max-Age "86400" env=OPTIONS_REQUEST
	Header always set Content-Length "0" env=OPTIONS_REQUEST
	Header always set Content-Type "text/plain charset=UTF-8" env=OPTIONS_REQUEST
</IfModule>
  • Após fazer as alterações, reiniciar o serviço do Apache

[editar] Servidores Tomcat reiniciando sozinhos

  • Foi percebido, através da coluna status do sistema Deployer, que alguns servidores Tomcat estavam reiniciando sozinhos
  • Reinicializações vinha ocorrendo já a algum tempo, sendo que a investigação aconteceu em 25/06/2024
  • Possibilidades seriam de que a máquina virtual que hospeda o Tomcat tenha reiniciado, o que foi descartado ao fazer o comando uptime, que mostrou que o servidor estava ligado a vários dias
  • Outra possibilidade seria o Tomcat ter estourado memória e reiniciado, no entanto, ao investigar o catalina.out, não aparece nenhum erro
  • Investigando mais um pouco, descobriu-se que no arquivo de configuração do serviço /etc/systemd/tomcat.service existe uma propriedade chamada "Restart" que indica que o serviço deve ser reiniciado após parar
  • Através do comando journalctl -u tomcat -f pode-se verificar que realmente o serviço parou e foi reiniciado
root@netsr-midasha08:/home/administrator# journalctl -u tomcat -f
Jun 25 06:36:04 netsr-midasha08 systemd[1]: tomcat.service: Main process exited, code=killed, status=9/KILL
Jun 25 06:36:05 netsr-midasha08 shutdown.sh[878325]: Tomcat stopped.
Jun 25 06:36:05 netsr-midasha08 systemd[1]: tomcat.service: Failed with result 'oom-kill'.
Jun 25 06:36:05 netsr-midasha08 systemd[1]: tomcat.service: Consumed 19h 19min 2.274s CPU time.
Jun 25 06:36:15 netsr-midasha08 systemd[1]: tomcat.service: Scheduled restart job, restart counter is at 1.
Jun 25 06:36:15 netsr-midasha08 systemd[1]: Stopped Tomcat.
Jun 25 06:36:15 netsr-midasha08 systemd[1]: tomcat.service: Consumed 19h 19min 2.274s CPU time.
Jun 25 06:36:15 netsr-midasha08 systemd[1]: Starting Tomcat...
Jun 25 06:36:15 netsr-midasha08 startup.sh[878373]: Tomcat started.
Jun 25 06:36:15 netsr-midasha08 systemd[1]: Started Tomcat.
  • Através do comando journalctl -xe foi possível verificar que o Ubuntu matou o processo do Tomcat, devido a falta de memória
unattended-upgr invoked oom-killer: gfp_mask=0x1100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
  • Fizemos a alteração do arquivo de inicialização do Tomcat, diminuindo o valor da memória máxima que pode ser alocada
Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas