-
1. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
mauriciomag Apr 23, 2013 10:18 AM (in response to adrianoschmidt)Oi Adriano Bom dia,
Acho que vou parar de escrever no blog hein to deixando muitas dúvidas acho que to mais atrapalhando do que ajudando hahahaha... brincadeiras a parte é o seguinte:
Se as 3 pastas (Domain Contoller (master), Hostr Controller 01 (slave01) e Hostr Controller 02 (slave02)) estão na mesma máquina, como podem ter IPs diferentes? Ou eu devo ter um JBoss em cada máquina e pra cada máquina copiar apenas a sua pasta. Na 192.168.0.140 por exemplo eu faço unzip do jboss e colo a pasta slave01... é isso?
[pobreza on] Eu utilizei o mesmo S.O. CentoOS na máquina virtual para simular 3 servidores. Eu simulei isso utilizando 3 interfaces de rede cada uma com um IP diferente. [pobreza off]
Então se voce for configurar em máquinas diferentes basta criar um perfil para cada maquina, por exemplo:
Servidor / Host 1 ----> $ cp -Rap /usr/local/jboss/7.1.3/jboss-eap-6.0/domain /usr/local/jboss/7.1.3/jboss-eap-6.0/master
Servidor / Host 2 ----> $ cp -Rap /usr/local/jboss/7.1.3/jboss-eap-6.0/domain /usr/local/jboss/7.1.3/jboss-eap-6.0/slave01
Servidor / Host 3 ----> $ cp -Rap /usr/local/jboss/7.1.3/jboss-eap-6.0/domain /usr/local/jboss/7.1.3/jboss-eap-6.0/slave02
Outra dúvida, no meu ambiente, o Apache não fica na mesma máquina que o Domain Controller.. onde eu digo o IP do Apache? Ou é no Apache q eu digo IP do JBoss?
Aqui voce vai ter que decidir se vai utilizar TCP ou UDP.
No tutorial estou utilizando UDP pela facilidade porque quando utilizamos UDP as instâncias JBoss fica fazendo algo parecido com um "ping" (MCPM) em busca do proxy "Apache". No arquivo de configuração do Apache nós dizemos para aceitar esse ping com "EnableMCPMReceive on".
Já que estamos utilizando UDP então é necessário que o ambiente esteja preparada para multicast. Para testes, basta adicionar uma nova rota:
route add -net 224.0.0.0 netmask 224.0.0.0 dev ethXYZ
Na inicialização basta fazer o binding com a opção -b IP ou -Djboss.bind.address=IP. Sendo assim os nós vão "encontrar" por MCPM o servidor Web configurado para isso com "EnableMCPMReceive on". Não sei se falei besteira mas eu aprendi lendo a doc e consegui entender isso.
Já que citou o cluster um ponto importante é o "ServerAdvertise on" que permite a "comunicação" entre os nós do cluster.
Se for por TCP voce teria que configurar no JBoss, especificamente no subsystem do mod_cluster um atributo chamado "proxyList" ou ainda passar com parametro:
-Djboss.mod_cluster.proxyList="192.168.0.110:80"
Também teria que colocar "ServerAdvertise off"e "EnableMCPMReceive off". Seria interessante utilizar o TCP ping algo como:
<subsystem xmlns="urn:jboss:domain:jgroups:1.1" default-stack="tcp">
<stack name="udp">
.
.
.
</stack>
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp" diagnostics-socket-binding="jgroups-diagnostics"/>
<protocol type="TCPPING">
<property name="initial_hosts">192.168.0.120[7600],192.168.0.130[7600]</property>
<property name="num_initial_members">2</property>
<property name="port_range">0</property>
<property name="timeout">2000</property>
</protocol>
<protocol type="MERGE2"/>
<protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
<protocol type="FD"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="BARRIER"/>
<protocol type="pbcast.NAKACK"/>
<protocol type="UNICAST2"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="UFC"/>
<protocol type="MFC"/>
<protocol type="FRAG2"/>
</stack>
</subsystem>
Na inicialização teria que passar também o nome do node:
-Djboss.node.name=node1
Lembre-se também de alterar o transporte do infinispan para TCP:
<cache-container name="web" default-cache="repl">
<transport stack="tcp"/>
</cache-container>
Última dúvida.. Vou utilizar os JBoss em cluster.. minha ideia é ter um apache na frente com mod_cluster distribuindo as requisições para dois jboss (em máquinas distintas e em cluster).. porém, se eu tiver um Domain Controller em uma máquina, e esse servidor cair, vai parar tudo? quero utilizar cluster justamente para não ter um ponto na arquitetura que se cair pare tudo..
Podemos fazer as seguintes afirmações:
Se um Domain Controller cair as instâncias continuam respondendo, voce só perde o ponto de gerenciamento, deploy e configuração. Basta iniciar o Domain Controller com o mesmo IP utilizado inicialmente que os Host Controllers vão se conectar automaticamente. Nesse caso teriar que existir um balanceamento de Hardware e deixar os dois domains configurados caso um caia o outro assume mas se não tiver esses recursos basta inciar manualmente mesmo como disse anteriormente.
Existe uma maneira de criar um BKP do domain controller que não achei nem um pouco interessante podemos ver isso uma outra hora.
Aconselho fortemente a leitura da documentação pois é bem importante ter um conceito do que realmente está sendo configurado.
Lembrando que esse é um produto Enterprise e voce seria melhor auxiliado pelo suporte da propria Red Hat.
Grande Abraço,
Mauricio Magnani
-
2. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
adrianoschmidt Apr 23, 2013 9:08 PM (in response to mauriciomag)Show!
Vamos lá!!
Estou agora com o seguinte ambiente:
Uma vm com CentOS com apache (IP 192.168.16.131)
Uma vm com RHEL com o jboss para ser domain controller (IP 192.168.16.133)
Uma vm com RHEL com o jboss para ser host controller (slave01) (IP 192.168.16.134)
Nos 3 servidores eu executei o comando: route add -net 224.0.0.0 netmask 224.0.0.0 dev eth0
E no meu RHEL domain controller eu rodei:
jboss-eap-6
.0
/bin/domain
.sh
-Djboss.domain.base.
dir
=
/usr/local/jboss/7
.1.3
/jboss-eap-6
.0
/master
-Djboss.host.default.config=host-master.xml
-Djboss.bind.address=192.168.16.133
-Djboss.bind.address.management=192.168.16.133
Ele subiu perfeitamente...
No meu RHEL host controller eu rodei:
jboss-eap-6
.0
/bin/domain
.sh
-Djboss.domain.base.
dir
=
/usr/local/jboss/7
.1.3
/jboss-eap-6
.0
/slave01
-Djboss.host.default.config=host-slave.xml
-Djboss.domain.master.address=192.168.16.133
-Djboss.bind.address.management=192.168.16.134
-Djboss.bind.address=192.168.16.134
-Djboss.server.name=server-one
ele deu uma patinada mas iniciou:
[Host Controller] 21:53:12,358 INFO [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.0.7.GA-redhat-1
[Host Controller] 21:53:12,365 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 3.2.14.GA-redhat-1
[Host Controller] 21:53:12,565 INFO [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on 192.168.16.134:9999
[Host Controller] 21:53:17,748 WARN [org.jboss.as.host.controller] (Controller Boot Thread) JBAS010900: Could not connect to remote domain controller 192.168.16.133:9999: java.net.ConnectException: JBAS012144: Could not connect to remote://192.168.16.133:9999. The connection timed out
[Host Controller] 21:53:23,762 WARN [org.jboss.as.host.controller] (Controller Boot Thread) JBAS010900: Could not connect to remote domain controller 192.168.16.133:9999: java.net.ConnectException: JBAS012144: Could not connect to remote://192.168.16.133:9999. The connection timed out
[Host Controller] 21:53:29,770 WARN [org.jboss.as.host.controller] (Controller Boot Thread) JBAS010900: Could not connect to remote domain controller 192.168.16.133:9999: java.net.ConnectException: JBAS012144: Could not connect to remote://192.168.16.133:9999. The connection timed out
[Host Controller] 21:53:35,153 INFO [org.jboss.as.host.controller] (Controller Boot Thread) JBAS010922: Starting server server-one
[Host Controller] 21:53:35,161 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.0.1.GA (AS 7.1.3.Final-redhat-4) (Host Controller) started in 24390ms - Started 11 of 11 services (0 services are passive or on-demand)
21:53:35,204 INFO [org.jboss.as.process.Server:server-one.status] (ProcessController-threads - 3) JBAS012017: Starting process 'Server:server-one'
[Server:server-one] 21:53:35,947 INFO [org.jboss.modules] (main) JBoss Modules version 1.1.3.GA-redhat-1
no meu domain controller apareceu isso:
[Host Controller] 21:52:40,360 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://192.168.16.133:9990
[Host Controller] 21:52:40,360 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.0.1.GA (AS 7.1.3.Final-redhat-4) (Host Controller) started in 3485ms - Started 11 of 11 services (0 services are passive or on-demand)
[Host Controller] 21:53:35,024 INFO [org.jboss.as.domain] (slave-request-threads - 1) JBAS010918: Registered remote slave host "slave01", JBoss EAP 6.0.1.GA (AS 7.1.3.Final-redhat-4)
mas o host controller continuou rodando o log e estourou esse erro:
[Server:server-one] 21:53:57,772 INFO [org.jboss.modcluster.ModClusterService] (ServerService Thread Pool -- 52) Initializing mod_cluster 1.2.3.Final-redhat-1
[Server:server-one] 21:53:57,787 INFO [org.jboss.modcluster.advertise.impl.AdvertiseListenerImpl] (ServerService Thread Pool -- 52) Listening to proxy advertisements on 225.0.1.106:23,364
[Server:server-one] 21:54:06,944 WARN [com.arjuna.ats.arjuna] (MSC service thread 1-2) ARJUNA012210: Unable to use InetAddress.getLocalHost() to resolve address.
[Server:server-one] 21:54:07,117 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
[Server:server-one] 21:54:07,161 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.0.1.GA (AS 7.1.3.Final-redhat-4) started in 31794ms - Started 134 of 277 services (142 services are passive or on-demand)
[Host Controller] 21:54:07,165 INFO [org.jboss.as.host.controller] (proxy-threads - 1) JBAS010919: Registering server server-one
[Server:server-one] 21:54:11,130 INFO [org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) IO error sending command INFO to proxy 192.168.16.131/192.168.16.131:80: java.net.NoRouteToHostException: No route to host
[Server:server-one] at java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.6.0_33]
[Server:server-one] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) [rt.jar:1.6.0_33]
[Server:server-one] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) [rt.jar:1.6.0_33]
[Server:server-one] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) [rt.jar:1.6.0_33]
[Server:server-one] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) [rt.jar:1.6.0_33]
[Server:server-one] at java.net.Socket.connect(Socket.java:529) [rt.jar:1.6.0_33]
[Server:server-one] at org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy.getConnection(DefaultMCMPHandler.java:821)
[Server:server-one] at org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy.getConnectionWriter(DefaultMCMPHandler.java:844)
[Server:server-one] at org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.sendRequest(DefaultMCMPHandler.java:481)
[Server:server-one] at org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.sendRequest(DefaultMCMPHandler.java:582)
[Server:server-one] at org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.status(DefaultMCMPHandler.java:369)
[Server:server-one] at org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.status(DefaultMCMPHandler.java:349)
[Server:server-one] at org.jboss.modcluster.ModClusterService.status(ModClusterService.java:468)
[Server:server-one] at org.jboss.modcluster.container.catalina.CatalinaEventHandlerAdapter.lifecycleEvent(CatalinaEventHandlerAdapter.java:244)
[Server:server-one] at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:115) [jbossweb-7.0.17.Final-redhat-1.jar:]
[Server:server-one] at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1338) [jbossweb-7.0.17.Final-redhat-1.jar:]
[Server:server-one] at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1605) [jbossweb-7.0.17.Final-redhat-1.jar:]
[Server:server-one] at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1591) [jbossweb-7.0.17.Final-redhat-1.jar:]
[Server:server-one] at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33]
[Server:server-one]
Estou pesquisando por esse erro mas não encontro nada.. acredito que seja alguma configuração de rede no linux.. ou não?
Abraço!
Adriano Schmidt
-
3. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
mauriciomag Apr 24, 2013 8:53 AM (in response to adrianoschmidt)1 of 1 people found this helpfulOi Adriano,
Bacana é isso mesmo... vejo que vc conseguiu compreender bem e está indo no caminha certo.
O erro java.net.NoRouteToHostException: No route to host ocorreu pois o nós tentou "pingar" o Proxy via MCPM e não conseguiu encontrar... pode ser um Firewall ou uma má configuração de rede.
Te aconselho 2 testes:
Test com Telnet
telnet 192.168.16.131 80
Verificar se o status foi OK se consegui conectar certinho!
Test com JGroups para Multicast
No servidor onde está o Apache execute:
java -cp jgroups.jar org.jgroups.tests.McastReceiverTest -mcast_addr 233.3.4.5 -port 1110
No servidor onde está o Host Controller execute:
java -cp jgroups.jar org.jgroups.tests.McastSenderTest -mcast_addr 233.3.4.5 -port 1110
O jgroups.jar está nesse link: https://www.dropbox.com/s/7irakj8vx0mphlc/jgroups.jar
Verifique se ocorreu a comunicação. Lembrando que o multicast deve estar configurado.
Abs
-
4. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
adrianoschmidt Apr 23, 2013 9:41 PM (in response to adrianoschmidt)deeeeeeeeeeeu certooooooo
tive que desabilitar o iptables...
iptables -F nos 3 servidores...
aí funcionou..
vou deixar assim por agora e depois vejo certinho como funciona o iptables pra fazer as regras certinhas...
Obrigadão!!
Adriano Schmidt
-
5. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
mauriciomag Apr 23, 2013 9:44 PM (in response to adrianoschmidt)Hahaha Bacana....
Aqui tem um post que eu fiz sobre regras de firewall ---> https://jbossdivers.wordpress.com/2013/03/06/regras-de-firewall-no-linux/
Se a questão foi resolvida marque como Correct Answer.
Abs
-
6. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
rimolive Apr 24, 2013 8:44 AM (in response to adrianoschmidt)O ideal teria sido criar uma discussion para cada problema encontrado, pois assim a gente marcava uma Correct Answer para cada problema... =)
No entanto, acredito ser possível marcar mais de uma Helpful Answer, portanto se puder também marcar as outras dessa forma ajuda outras pessoas a encontrarem as soluções mais fácil.
A propósito: Já falei pra vocês o quanto eu gosto dessa coisa de "comunidade"? Continuem contribuindo pessoal, fico muito grato por encontrar uma discussão como essa aqui.
-
7. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
mauriciomag Apr 24, 2013 8:50 AM (in response to rimolive)Boa idéia Martina
Fica bem mais fácil encontrar as soluções... como dica também tentar utilizar titulos mais sugestivos na discussion.
Abs
-
8. Re: configurando-ambiente-de-producao-no-jboss-as-7-1-2-jboss-eap-6-parte-2
adrianoschmidt Apr 24, 2013 1:06 PM (in response to mauriciomag)podem deixar, nas próximas discussões abrirei um tópico para cada dúvida e com títulos mais claros : )