Monday Jun 29, 2009

I was recently asked to assist in testing the overall scalability of a customer deployment. Of concern was the ability to support the full number of users, concurrently, while running a demonstrative user environment. We already showed the customer that the Sun Ray session servers were dutifully supporting the entire load as all DTU's had been working without fail for some time.


The basic environment consisted of over 1000 DTU's throughout the campus connected back through a series of session servers. Each session server is running a simple kiosk script that presents the users with a menu of user environments to connect to. For this specific example there are two environments; 1) select a Citrix environment using the ICA client to an existing Citrix farm. 2) select a connection to a new Windows Terminal services farm (Windows 2003 64-bit). Since the selection screen works for all DTU's and there have been zero concerns raised on the Citrix farm - they need for us to prove/test that all users can connect to the WTS farm with reasonable performance.


After explaining to the customer that we can do this - but they will need to offline all of their users for the test since we need all DTU's if we are to test the entire system, I embarked on a plan to automate the process. Craig Bender had already done a good bit of the work for me with his work on scalability, and he sent me a pointer to the Auto-It software that would be needed.


I have to say that, again, the easiest part of this equation was to build the kiosk script. Before any comments about my scripting capabilities comes in to play - this was a quick (5 minute) exercise and is light weight enough that I did not care too much about elegance or optimization. The script is here:




#!/bin/csh
set path = (/opt/SUNWuttsc/bin $path)
 if ( ${SUN_SUNRAY_TOKEN} =="" ) then
         exit
 else
     set line=`grep ${USER} /opt/LTE/config`
     set host=`echo ${line}|cut -f3 -d "|"`
     set pass=`echo ${line}|cut -f2 -d "|"`
     set cmd_l=`echo ${line}|cut -f4 -d "|"`
     echo ${pass} | uttsc -m -A 24 -r sound:high -u ${user} -i -a \"c:\\temp\\${cmd_l}.exe\" ${host}
 if ( ${host} == ""blogs.sun.com/images/smileys/wink.gif" class="smiley" alt=";)" title=";)" /> then
        zenity --info --text "This device is not part of the current load test."
 endif
 exit



Yes, there is a big security hole in the middle of the script - an expect script should have been used so the password is not in the clear. However, this is a closed environment and the test was for scale not implementation. The /opt/LTE/config file is a rather simple method to pass in exactly what is desired of each kiosk user and is here for an example:




utku0|Sunray123|192.168.1.248|test1
utku1|Sunray123|192.168.1.247|test2
utku2|Sunray123|192.168.1.249|test3
utku3|Sunray123|192.168.1.248|test4
utku4|Sunray123|192.168.1.247|test5
utku5|Sunray123|192.168.1.249|test1
utku6|Sunray123|192.168.1.247|test2
utku7|Sunray123|192.168.1.248|test3
utku8|Sunray123|192.168.1.249|test4
utku9|Sunray123|192.168.1.248|test5




The file is actually much longer than this - there is an entry for all 1000+ kiosk users. In the file you can see that not only are the users running different tests (thanks again Craig) but I am also able to send different users to different Windows servers. Ideally, this would all be done via some load balancing algorithm or at least a round robin DNS approach. I explicitly called out for the specific server IP address to 1) remove any DNS configuration errors from the mix and 2) force my own balancing of the load as there are at least 3 different hardwire types in the back end Windows farm.


Where this approach is interesting to me is that we can easily run multiple sized tests on the Windows farm while still pushing the session servers for all DTU's. The check for if host="" will fire off the subsequent zenity command if the kiosk user is not one of the users destined for the current test.


Now, try this with a Wyse, Dell or HP 'thin-client' environment. In a matter a few minutes, I changed from production to load test without ever touching a single end user device, without altering anything on the end user device, scripted the entire load with no user involvement and can place it back in to production with three simple mouse clicks. Ultra-thin client is the only way to go for near zero administrative burden.

Comments:

On the subject of load balancing, why not get the highest availability while not getting caught in high prices? Kemp’s got some great load balancers that are low priced and high in quality:

http://www.kemptechnologies.com/?utm_source=blog&utm_medium=pv&utm_content=zs&utm_campaign=home

Posted by Frank More on June 29, 2009 at 11:48 AM EDT #

Post a Comment:
Comments are closed for this entry.