LifeKeeper uses Java RMI (Remote Method Invocation) for communications between GUI clients and servers. Some potential problems may be related to RMI, and others are general network configuration problems.
Long Connection Delays on Windows Platforms
From Sun FAQ:
Most likely, your host’s networking setup is incorrect. RMI uses the Java API networking classes, in particular java.net.InetAddress, which will cause TCP/IP host name lookups for both host to address mapping and address to hostname. On Windows, the lookup functions are performed by the native Windows socket library, so the delays are not happening in RMI but in the Windows libraries. If your host is set up to use DNS, then this could be a problem with the DNS server not knowing about the hosts involved in communication, and what you are experiencing are DNS lookup timeouts. If this is the case, try specifying all the hostnames/addresses involved in the file \windows\system32\drivers\etc\hosts. The format of a typical host file is:
IPAddress Server Name
e.g.:
192.168.100.1 homer.example.com homer
This should reduce the time it takes to make the first lookup.
In addition, incorrect settings of the Subnet Mask and Gateway address may result in connection delays and failures. Verify with your Network Administrator that these settings are correct.
Running from a Modem:
When you connect to a network in which the servers reside via modem (using PPP or SLIP), your computer acquires a temporary IP number for its operation. This temporary number may not be the one your hostname maps to (if it maps to anything at all), so in this case, you must tell the servers to communicate with you by IP alone. To do this, obtain your temporary IP number by opening your modem connection window. This number will be used to set the hostname property for the GUI client.
To set the hostname for a browser with the Plugin, open the Java Plug-In Control Panel, and set the hostname for the client by adding the following to “Java Run Time Parameters”.
-Djava.rmi.server.hostname=<MY_HOST>
To set the hostname for the HotJava browser, append the following to the hotjava command line:
-Djava.rmi.server.hostname=<MY_HOST>
For example:
-Djava.rmi.server.hostname=192.168.100.2
Primary Network Interface Down:
The LifeKeeper GUI uses Remote Method Invocation (RMI) to maintain contact between the GUI client and the GUI server. In nearly every case, contact is established over the primary network interface to the server. This means that if the server’s primary Ethernet interface goes down, contact is lost and the GUI client shows that server state as Unknown.
The only solution to this problem is to bring the server’s primary Ethernet interface up again. Additionally, due to limitations in RMI, this problem cannot be overcome by using a multi-homed server (server with multiple network interfaces).
No Route To Host Exception:
A socket could not be connected to a remote host because the host could not be contacted. Typically, this means that some link in the network between the local server and the remote host is down, or that the host is behind a firewall.
Unknown Host Exception:
The LifeKeeper GUI Client and Server use Java RMI (Remote Method Invocation) technology to communicate. For RMI to work correctly, the client and server must use resolvable hostname or IP addresses. When unresolvable names, WINS names or unqualified DHCP names are used, this causes Java to throw an UnknownHostException.
This error message may also occur under the following conditions:
- Server name does not exist. Check for misspelled server name.
- Misconfigured DHCP servers may set the fully-qualified domain name of RMI servers to be the domain name of the resolver domain instead of the domain in which the RMI server actually resides. In this case, RMI clients outside the server’s DHCP domain will be unable to contact the server because of the its incorrect domain name.
- The server is on a network that is configured to use Windows Internet Naming Service (WINS). Hosts that are registered under WINS may not be reachable by hosts that rely solely upon DNS.
- The RMI client and server reside on opposite sides of a firewall. If your RMI client lies outside a firewall and the server resides inside of it, the client will not be able to make any remote calls to the server.
When using the LifeKeeper GUI, the hostname supplied by the client must be resolvable from the server and the hostname from the server must be resolvable by the client. The LifeKeeper GUI catches this exception and alerts the user. If the client cannot resolve the server hostname, this exception is caught and Message 115 is displayed. If the server cannot resolve the Client hostname, this exception is caught and Message 116 is displayed. Both these messages include the part of the Java exception which specifies the unqualified hostname that was attempted.
Included below are some procedures that may be used to test or verify that hostname resolution is working correctly.
From Windows:
- Verify communication with the Linux Server
From a DOS prompt, ping the target using the hostname:
ping <TARGET_NAME>
For Example:
ping homer
A reply listing the target’s qualified hostname and IP address should be seen.
- Verify proper configuration
- Check configuration of DNS or install a DNS server on your network.
- Check configuration of DNS or install a DNS server on your network.
- Check the settings for ControlPanel->Network->Protocols->TCP/IP. Verify with your Network Administrator that these settings are correct.
- Check the settings for ControlPanel->Network->Protocols->TCP/IP. Verify with your Network Administrator that these settings are correct.
Note: The hostname in the DNS tab should match the name used on the local name server. This should also match the hostname specified in the GUI error message.
Try editing the hosts file to include entries for the local host and the LifeKeeper servers that it will be connected to.
On Windows 95/98 systems the hosts file is:
%windir%\HOSTS (for example, C:\WINDOWS\HOSTS).
Note: On Windows 95/98, if the last entry in the hosts file is not concluded with a carriage-return/line-feed then the hosts file will not be read at all.
On Windows NT systems the hosts file is:
%windir%\System32\DRIVERS\ETC\HOSTS
(for example, C:\WINNT\System32\DRIVERS\ETC\HOSTS).
For example, if my system is called HOSTCLIENT.MYDOMAIN.COM and uses IP address 192.168.200.10, add the following entry to the hosts file:
192.168.200.10 HOSTCLIENT.EXAMPLE.COM HOSTCLIENT
- Try setting the hostname property to be used by the GUI client. To do this from a browser with the Plugin, open the Java Plug-In Control Panel, and set the host name for the client by adding the following to “Java Run Time Parameters”:
Djava.rmi.server.hostname=<MY_HOST>
- Check for Microsoft network-related patches at www.microsoft.com.
From Linux:
- Verify communication with other servers by pinging the target server from Linux using its hostname or IP address:
ping <TARGET_NAME>
For example:
ping homer
A reply listing the target’s qualified hostname should be seen.
- Verify that localhost is resolvable by each server in the cluster using ping with its hostname or IP address. If DNS is not implemented, edit the /etc/hosts file and add an entry for the localhost name. This entry can list either the IP address for the local server, or it can list the default entry (127.0.0.1).
- Check that DNS is specified before NIS. DNS should be put before NIS in the hosts line of /etc/nsswitch.conf, and /etc/resolv.conf should point to a properly configured DNS server(s).
- If DNS is not to be implemented or no other method works, edit the /etc/hosts file, and add an entry for the hostname.
- Try setting the hostname property to be used by the GUI client. This will need to be changed for each administrator.
To do this from a browser with the Plugin, open the Java Plug-In Control Panel and set the hostname for the client by adding the following to “Java Run Time Parameters”:
-Djava.rmi.server.hostname=<MY_HOST>
To do this from the HotJava browser, append the following to the hotjava command line:
-Djava.rmi.server.hostname=<MY_HOST>
For Example:
-Djava.rmi.server.hostname=192.168.200.10
-Djava.rmi.server.hostname= homer.example.com
Unable to Connect to X Window Server:
When running the LifeKeeper GUI application from a telnet session, you need to ensure that the GUI client is allowed to access the X Window Server on the LifeKeeper server. The LifeKeeper server must also be able to resolve the hostname or network address of the GUI client.
When you telnet into the LifeKeeper server to run the LifeKeeper GUI application, the DISPLAY environment variable should contain the client’s host name and display number. For example, if you telnet into a server named Server1 from a client named Client1, the DISPLAY environment variable should be set to Client1:0. When you run the LifeKeeper GUI application, it will try to send the output to the DISPLAY name for Client1. If Client1 is not allowed access to the X Window Server, the LifeKeeper GUI application will fail with an exception.
When starting the LifeKeeper GUI as an application, if an error occurs indicating that you cannot connect to the X Window Server or that you cannot open the client DISPLAY name, try the following:
- Set the display variable using the host name or IP address. For example:
DISPLAY=Client1.somecompany.com:0
DISPLAY=172.17.5.74:0
- Use the xhost or xauth command to verify that the client may connect to the X Window Server on the LifeKeeper server.
- Add a DNS entry for the client or add an entry for the client to the local hosts file on the LifeKeeper server. Verify communication with the client by pinging the client from the LifeKeeper server using its hostname or IP address.
Post your comment on this topic.