Hi Rajesh,

Creating this thread here on the user mailing list as told by you regarding
the cloudstack VDI support.
My current setup is as follows

management server 172.31.101.202
host1 172.31.101.202
host 2 172.31.132.132
host3 172.31.132.133

Currently I have a basic networking zone with two pods. Host 1 is in Pod 1
and host 2 and 3 are in Pod 2

I installed openldap on 172.31.101.202 machine and created some sample
users on this machine and added them to LDAP.I created a VM which uses ldap
authentication to mount the user directories and provide as compute node
for the VDI. For that I created VNC display on the VM for these ldap
authenticated users. Next using guacamole and its ldap authentication I
included the vnc connections to these VM. The guacamole service runs on the
same machine as the cloud server. The end user logs into guacamole
webservice and is shown the connection to the VM which is included in the
LDAP. I further plan to create a template to this VM and spawn multiple VMs
from it. So the home directory of the user remains on a central server and
we just provide the Desktops using VM to the users.

This is the current architecture I am having. The problem with this
architecture is that manually the vnc screens have to be created for the
user and then the entry has to be inserted into ldap. This causes 2 main
problems:-

1) There are many vnc screens running on the VM for user even when he is
not logged in, so its mere wastage of resource.
2) Manually doing the task of creating a vnc screen everytime a new user
account has to be created and replicating it on all the VMs
3) Insecure as any user can run ldapsearch command on the VM and look at
all the connections and vncpasswords for all the users defined in directory

So a solution to this problem I thought might be feasible creating vnc
screens on the fly for the end users i.e dynamically and not statically for
the end users. The only entry in ldap would be username and home directory
location and password as normally is there. There should not be any need to
install the guacamole ldap schema into ldap. The vncpassword for the user
will be same as his account password or it can be anything that the system
admin wants it to be for all users. The basic idea is to create a script
which does this vnc screen creation on the fly and provide the the entry in
an XML file for the connection which the guacamole service will use to
provide the desktop to the end user. The service would run on the server
where the guacamole web app resides. This service will have root access to
the VM. So after the user logs in the service runs *su <username>
and vncserver *command on the VM as the user and then returns the port
number or screen number to the server machine. The entry is made into the
XML file along with the user credentials which the guacamole service will
then use. This is the current architecture I was thinking to have a Virtual
Desktop interface for users using guacamole, vnc and ldap on cloudstack.

To implement it I was having the idea that we wrap the guacamole webserver
inside another webservice. The user logs into this webservice, the
authentication is done using LDAP. Then the script I defined above is run
on the VM which has the least number on Xvnc services running. The script
returns to us the vncscreen number for the vnc screen instantiated on the
VM. The screen number along with the the user credentials are written in a
config file and then the credentials are passed onto the guacamole web
application to display the remote desktop on the browser. Now when the user
has completed his work we can provide him an option to either keep his
session for later use or destroy it. If he chooses to destroy it we
can run *vncscreen
-kill :<screennnumber>* on the VM thus destroying the Xvnc session. Also we
will remove there connection entry from the XML file. For the purpose we
will have to maintain some information. We would have to maintain the IPs
of all the VM which we will use for VDI support and the number of Xvnc
screens currently present on each VM. We will also have to maintain a user
table for the users who have not destroyed their screen even after logging
out from the system. For such users we wont have to run the vncscreen
creation script again and the previous information in the xml is used to
display the same desktop screen session as earlier used by the user.


Let me know what you think about it. Any suggestions to improve upon this
idea are highly appreciable. If you want I can show you the current setup
through team viewer.

Regards

Reply via email to