vCloud Director Issues and Resolutions

vCloud Director (vCD) is a great application for its first iteration and I expect great things from it in the future. Like any application, it has its fair share of issues and if only for my own edification, I figured I would document some issues I have experienced and the resolutions or workaround I have found. As I find more, I will update this post.

Cannot log into deployed VM – permission denied
If you have a VM with a known password and clone it, by default you will not be able to log into it using the known credentials. This is because cloned systems are guest customized. If you go to the properties of the cloned VM and select the Guest OS Customization tab you will notice a password under Password Reset. This password should get you into the VM.
Cannot open a console on FireFox 3 running on a Mac
There is no Mac console client. In addition, if you attempt to connect to the console on a Mac it will download a plug-in for Firefox, however that plug-in is only valid on Linux. After you install the plug-in on a Mac and restart the browser you will be prompted to download the plug-in again if you try to open a console. At this time, using any browser on a Mac is not supported. Only option would be to run a VM or use a different OS.
Error 404 / Web UI not working
Error may look like:
{codecitation class=”style:text”}Error 404 – Not Found.
No context on this server matched or handled this request
Context known on this server are :{/codecitation}
You need to wait until the service has fully initialized. Startup progress is logged to the $VCLOUD_HOME/logs/cell.log log file. Once it’s done initializing the UI Web app will be deployed and available for use (from: http://communities.vmware.com/thread/296420).
Error starting application: Transfer spooling area is not writable
Ensure the vcloud user is able to write to /opt/vmware/vcloud-director/data/transfer (from: http://www.thinkvirt.com/?q=node/235).
Unable to connect to the MKS: Connection terminated by server , ret -1 err o.
This error can occur in a multiple cell configuration where a load balancer is being used to view the console. If you try to connect to the console multiple times you may find that it sometimes works and sometimes displays the error message above.
If you look at the logs when the console works you will see something similar to:
{codecitation class=”style:text; gutter: false; wrap-lines:true” width=”900px”}2011-05-11 20:39:20,999 | DEBUG | consoleproxy | SimpleProxyConnectionHandler | Initiated handling for channel 1823229236 [java.nio.channels.SocketChannel[connected local=/<cellIP>:443 remote=/172.30.252.253:3976]] | >
2011-05-11 20:39:21,262 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CreateFilter |
2011-05-11 20:39:21,263 | DEBUG | consoleproxy | LoginByCookieHandler | Logging in via a COOKIE: TE-Nq6yxauSqMxeJ39eIj5Hh23ePSghRBL1N17iTEPTd6QztQbtNVRjasyOlWK4kTKQc7W91h+zxSRlDGxzQk6omhVggmIdarCH-oBm/8Zb75VAWCs1vqd1yLN8sHEJYuZkhCXJ1cNaWHQdjql4EnrbpvOHGFO+XCxBBTYZ8eq8BNgLdpXNtmjUa/YZaOXFtGz3mCHpjkcrcECLSJnppKNN5GVMu5q/DZ1GHU5fkYXFAhtYAfoc9XhXe/qXh9EsNDStCu3hUeKaHr0gtRmLjddXv2YNDVpAiDfaulfWoMa+bOZL3yl7NoTBkzA== |
2011-05-11 20:39:21,535 | DEBUG | consoleproxy | ABaseInitialServerTransfer | Initiating a destination connection to <vcs> on port 443 |
2011-05-11 20:39:21,573 | DEBUG | consoleproxy | SSLSocketChannelFactory | Encoded VM Host: <vcs> |
2011-05-11 20:39:22,051 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CreateFilter |
2011-05-11 20:39:22,324 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CreateFilterResponse |
2011-05-11 20:39:24,917 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: WaitForUpdates |
2011-05-11 20:39:26,046 | DEBUG | Quartz-pool-1-thread-4757 | ExpiredSessionsCleanupJob | SessionGarbageCollectorJob: Starting. |
2011-05-11 20:39:26,080 | DEBUG | Quartz-pool-1-thread-4757 | ExpiredSessionsCleanupJob | Removed 0 expired sessions. |
2011-05-11 20:39:26,085 | DEBUG | Quartz-pool-1-thread-4757 | ExpiredSessionsCleanupJob | SessionGarbageCollectorJob: Done. |
2011-05-11 20:39:26,190 | DEBUG | consoleproxy | SimpleProxyConnectionHandler | Initiated handling for channel 1187721015 [java.nio.channels.SocketChannel[connected local=/<cellIP>:443 remote=/<loadBalancerIP:4007]] |
2011-05-11 20:39:26,794 | DEBUG | consoleproxy | AuthdUserMatch | Logging in via an Authd token: TE-7xpbLbgXzUo+rAnt6m3GbKxRRIj0SHTY9Xz46Y47/UQkoKRgpuo3O3Q1hS18+pPx3n1CQuf4homdrXF0ozEv9g2nuDj+TL7Z-yOc7bu6lKbp3cMksuDW54jXS3GlI0DnXxBEKLJ/taXbwBHqkQhK5EAvqUcLu42NUFqVBggfO7tmu7e+SgEoQA+ceYQvWfYm80AZ46bYqgBAe5Vce21ZodPWeDj2o1Kxb7f1NAPKnvrItrF+kc7HUKPvmzsE71X0foLGXlYSQamwfnGnV7VzmEw8wGIRnbyBdN+WHb/a/ygP2kWwktyDjUA== |
2011-05-11 20:39:27,534 | DEBUG | consoleproxy | ABaseInitialServerTransfer | Initiating a destination connection to <esxHostname> on port 902 | >
2011-05-11 20:39:27,573 | DEBUG | consoleproxy | MKSSocketChannelFactory | Encoded VM Host: <esxHostname> | {/codecitation}
When it is not working the logs will look similar to:
{codecitation class=”style:text; gutter:false; wrap-lines:true”width=”900px”}2011-05-11 20:40:15,107 | DEBUG | consoleproxy | SimpleProxyConnectionHandler | Initiated handling for channel 1771263446 [java.nio.channels.SocketChannel[connected local=/<cellIP>:443 remote=/<loadBalancerIP>:18764]] |
2011-05-11 20:40:15,422 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: RetrieveServiceContent |
2011-05-11 20:40:15,478 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CloneSession |
2011-05-11 20:40:15,478 | DEBUG | consoleproxy | LoginByTicketHandler | Logging in via a TICKET: TE-H6V/0UnqoPwrTbZdXEJuWTPQHK39LJPHn/hm20Rmb2wugcg5rUivGgrbVWIkkjAOPdtDi2bmVXLp5g4rOZ9vIG+O8Lxq0/43-Galb9Qhslq8/Yhn1ypZf1gfDvI+CSt0lyqDcZO9TVVXWAHm1sC6dNTZUIadFWOPdQrGFMaosawM4tpiLhpA3VdEg79a7Bjqt0yIi0I7luUgS+h7uDq4ALDfowIqVdp3UK5XMIBN+Y2cag+a+LJ9qXBVPrCKKuz3C0LO68cbx9UazNjaX+7lIWsGqK6YyyEFLhA29wlkgSwm06sNzTKmwRQ== |
2011-05-11 20:40:15,686 | DEBUG | consoleproxy | ABaseInitialServerTransfer | Initiating a destination connection to <vcs> on port 443 |
2011-05-11 20:40:15,717 | DEBUG | consoleproxy | SSLSocketChannelFactory | Encoded VM Host: las01-vcs01.ad.las01.emcatmos.com |
2011-05-11 20:40:15,771 | WARN | consoleproxy | ConnectionTracker | Closing connection java.nio.channels.SocketChannel[connected local=/<cellIP>:443 remote=/<loadBalancerIP>:18699] as it has not initialized in time | >
2011-05-11 20:40:16,220 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CloneSession |
2011-05-11 20:40:16,262 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CloneSessionResponse |
2011-05-11 20:40:16,474 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: WaitForUpdates |
2011-05-11 20:40:16,702 | DEBUG | consoleproxy | SimpleProxyConnectionHandler | Initiated handling for channel 626001957 [java.nio.channels.SocketChannel[connected local=/<cellIP>:443 remote=/<loadBalancerIP>:18772]] >|
2011-05-11 20:40:17,032 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CreateFilter |
2011-05-11 20:40:17,032 | DEBUG | consoleproxy | LoginByCookieHandler | Logging in via a COOKIE: TE-Uw/qcNirI01QqheAkXmA7u2ddVu2znoa6YJxFbBLd1E9HyKMTV+uK3ZH2lQVJ/z5qXWo0ostrzRm66dbb6p7qg3SLLvoSZ3W-9LEGGj758wbw6BR/2E8EleSAeZim5fC7QSN3AXq5lhF9OO6aDGovXx/8BRg7nFrR4X2/2nHLPBWfEpoO7ktFNj2os6Wnm4V9flytYNx+Ec/F33CFrc6zgQRGhnEewguVt2MqJg3koKclJKfMS1nia3XZN1GkdnbdGrJDthbLHBbuBeWdwE3FAlPfDEADSeZKNmatRw4hFhVnAaHQ5KvGFg== |
2011-05-11 20:40:17,214 | DEBUG | consoleproxy | ABaseInitialServerTransfer | Initiating a destination connection to <vcs> on port 443 | >
2011-05-11 20:40:17,239 | DEBUG | consoleproxy | SSLSocketChannelFactory | Encoded VM Host: <vcs> |
2011-05-11 20:40:17,753 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CreateFilter |
2011-05-11 20:40:17,997 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: CreateFilterResponse |
2011-05-11 20:40:18,017 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: WaitForUpdatesResponse |
2011-05-11 20:40:18,042 | DEBUG | Quartz-pool-1-thread-4757 | FailoverServiceManagerImpl | checking for any failed cells from current cell <cellHostname> (id = 2, uuid = 537a9708-d3e3-455d-afa4-3d950cdb6104) |
2011-05-11 20:40:18,283 | DEBUG | consoleproxy | HttpContext | Enlarged the write buffer to 8,192 bytes to avoid overflow |
2011-05-11 20:40:18,290 | DEBUG | consoleproxy | HttpContext | Enlarged the write buffer to 16,384 bytes to avoid overflow |
2011-05-11 20:40:18,295 | DEBUG | consoleproxy | HttpContext | Enlarged the write buffer to 32,768 bytes to avoid overflow |
2011-05-11 20:40:18,296 | DEBUG | consoleproxy | HttpContext | Enlarged the write buffer to 65,536 bytes to avoid overflow | >
2011-05-11 20:40:18,337 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: AcquireTicket |
2011-05-11 20:40:18,529 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: WaitForUpdates |
2011-05-11 20:40:18,759 | DEBUG | consoleproxy | SoapRequestHandler | SOAP Request: AcquireTicketResponse |{/codecitation}
The resolution is to add session persistence to the load balancer configuration. The problem is experienced because most load balancers default to a round-robin configuration. The problem with round-robin is the initial request for a console will be sent to one cell, but the second request from the same source may go to another cell. Setting session persistence will permanently resolve the issue. Interestingly enough, this is not mentioned in an vCloud Director documentation of KB articles (as of 1.0.1).

© 2011, Steve Flanders. All rights reserved.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top