This is most likely becuase one node cannot communicate to the other node over whatever port you are using; sometimes a firewall issue; sometimes a DNS/name resolution issue. The clients can see the services, as you indicate, so noissue there. However, the way the SOA map works is, if logging into config service of a client (and not directly to config service of the backendclustered service itself); is that the client config service issues multiple async threads send out a quick ping to all known nodes of the backend service(s) it connects to. The first node to respond is then immediately sent the actual config service op to get the SOA map for that cluster; the node getting this request is then responsible for gathering up info on all its peer nodes (as well as its entire subtree if it also connect to backend services). Hence, you sometimes see one node, sometimes see one node, sometimes the other, depending on which is first to respond to the cross network ping, if you will. however, the two nodes do not know about eachother.
So, forget about the client for a awhile, and close out of all running nodes (stop IIS if you need to by issuing "IISReset" command from a cmd prompt). Make sure in the respository for the backend service, the three tables ActiveHosts; ActiveConfigHosts; and ActiveNodeHosts are now empty. If not, you can safely delete all rows from these tables, although this should not be necessary, and really never should be necessary---with no running hosts, these tables will be empty.
First, on both nodes delete all old messages in the app event log to clear them out.
Start up a single node. Login to config service for that node directly (not the client, the service config service endpoint itself). Bring up SOA map, all should look fine. If you are self-hosted in the windows self host console (provided as base class); you can switch to the config tab of the app. Next, startup the second node. This node will then know about the first node, since on startup it will get this info from the repository. However, it will attempt an online notifification to the first node started to tell it this new node has started; this is likely what is failing. Could be firewall issue blocking the port, for example; a misconfig of the http proxy; or a DNS name-resolution issue on the network. Other issue might be your node service is configured to use net.tcp in IIS7, but you have not enabled net.tcp in your IIS 7 app web site.
At any rate, you should look in the app event log for both nodes (assuming you have properly created event sources per tutorial, they only get auto-created from non-IIS hosted services, you must use the provided utility in \stocktrader\setup\util to create the event source initially-- very important because all exceptions/warnings are logged there for troubleshooting). So look in the app event log on both nodes, and look for any errors or warning icons; and let me know. Again, this is some sort of mis-config preventing communicationbetween nodes, I believe.
-Greg Greg Leake, Microsoft |