A few cool IMA Data Store and farm refinements in Citrix Presentation Server over the years

Citrix has made a lot of changes to Presentation Server over the years. Over the past few months, I learned about several changes that I think are interesting and important to know, although they don't really each warrant their own article.

Citrix has made a lot of changes to Presentation Server over the years. Over the past few months, I learned about several changes that I think are interesting and important to know, although they don't really each warrant their own article. So I've collected a few random tidbits that I've compiled here about the Presentation Server farm architecture.

Booting Citrix servers without a data store connection

Of course all Presentation Servers store their configuration information in a central database called the IMA data store. In older versions of Citrix (MetaFrame XP at least, maybe MPS 3 as well?), if a server did not have connectivity to the data store, the IMA service wouldn't start, even though a local host cache containing all the necessary configuration information was stored locally on the server. Back in the day if you wanted to boot a server from the local host cache instead of from the central data store, you had to change a registry key.

This is no longer the case! Now in CPS 4.5 (and maybe 4.0?), the IMA service will automatically start from the local host cache if a connection to the central data store is not available. No additional configuration is needed.

Data collector "change update" size increase

All Citrix server configuration information that's stored in the data store is configured via the MMC-based Access Management Console or the Java-based Presentation Server console. Whenever you "save" any setting in these tools, the setting is written into the local host cache of the server that you're connected to, and then the IMA service on that server updates the central data store.

Most individual Presentation Servers are configured to "check in" with the central data store every so often (used to be 10 minutes, now it's 30 minutes), but Citrix knows that you don't really want to wait around for those minutes for the changes to make it down to the individual servers. Therefore whenever you make a change that's saved in the data store, the server that you're connected to also contacts the data collector for it's zone and sends the change to it via IMA. The data collector can then notify all the servers in its zone of the change, as well as contact data collectors from other zones to have them inform their servers of the change.

In older versions of MetaFrame, if the change was 10k or less, the data collectors just sent the change directly to the member servers. Changes larger than 10k caused the data collector to notify the member servers that a change was available, but each member server had to then contact the central data store to download that change.

Now this is a bit different. In CPS 4.5 (and in 4 or 3? I don't know when this began), the size limit for this change was increased to 64k. In other words, as long as the change is 64k or less, it's sent directly from the data collectors to the member servers. What's cool about this is that practically all changes are under 64k, so in reality, just about all changes are pushed directly to the member servers instead of being pulled from the central data store.

Zone Preference and Failover behavior with session sharing

Most people reading this are probably familiar with the priority list that's used to select which Presentation Server a user connects to when they request an application:

  1. Reconnect the user to a disconnected session
  2. Launch the new app within an existing session (session sharing), but only if the zone preference allows it
  3. Select a new server based on the load balancing and zone preference rules

This process is very straightforward, although you can probably imagine that there are times when it might not behave as you want it to. For example, what happens if a user has an active session in "Zone B," but the zone preference policy in effect dictates that the user should connect to a server in "Zone A?" This can really be a problem if you have applications published across multiple zones, but you need users from certain sites to always connect to specific servers.

Now there's a solution for this. In the registry of the individual Presentation Server, there's a value called "HonorZPFOverSessionSharing" in the \HKLM\SOFTWARE\Citrix\IMA\MFRPC key. Can you guess what that does?

The default value of "1" means that zone preference will take priority. Change this to "0" if you always want users to open new applications within their existing sessions (where possible, of course).

Join the conversation


Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

Whilst it's nice to update people on the changes which affect farm design, it's useful to get the details right so that folks don't go upgrading to CPS 4.5 because the title of this article suggests it might buy them some advantages.

CPS servers have been able to reboot without the data store since v3.0.

The 64k change event notification was introduced in CPS v4.0.

The HonorZPFOverSessionSharing registry entry has also been there since v4.0.

Might want to change the title of the article Brian !!!!
Thanks for this information. As you read in the article, I didn't know when these new features came in, which is why I asked and why I'm glad you posted this info. As for the title, all these refinements are present in 4.5, so is it not accurate? I dunno.. I'll see if I can think of some new wording.
And on another note, if anyone knows of any other refinements that others might find interesting, please share them!
SQL 2005 is (finally) supported. It worked on V4 but was never really supported.
I agree that it's good to share this info, as much of it is not obvously available or broadcasted, although this stuff is usually covered off in the 'Advanced Concepts Guide', which people tend to forget about.

The title does suggest the refinements were made in 4.5, so the pedant in me says that a name change would be appropriate :-)
One key thing which occurred back in CPS 3.0 that a lot of people dont realise is that logon ticketing (used to be called NFuse Ticketing) now occurs over the IMA event bus. This means that you no longer need the XML service running on every server, and on the. The XML service just needs to be running on servers which are XML Brokers for WI, STA servers and SSL Relay servers (I think).

.....should have read "This means that you no longer need the XML service running on every server, and on the same port."

WI talks to it's configured XML Broker, which passes the logon ticket request to IMA, which requests the ticket from the CPS server (identified in a previous step, involving the data collector) as being the least busy server currently offering the requested application.
"posted by Brian Madden on 11/14/2007 4:12:09 AM
And on another note, if anyone knows of any other refinements that others might find interesting, please share them!"

Brian - shouldn't you rephrase this to "I am looking for content for Chapter 3 of my CPS 4.5 Advanced Technical Design Guide" :-)

IMA Encryption is also available in CPS 4.5.

Also, a little thing called 'thread pooling' was introduced in 4.5 which aims to avoid refused connections in very large farm environments. These are broken down into three polls for 'normal' IMA messages, IMA threads that need isolation and transport worker threads that are high priority. The number of pools can (but shouldn't) be changed via the registry. Perfmon counters 'workitem queu2 ready count' and 'workitem queue2 executing count' monitor these pools.
Yeah I hear ya... there is no advanced concepts guide anymore. :( Just a KB article listing "advanced concepts" with links to KB stuff. Actually all of this stuff is in the KB. Citrix invents it. Citrix explains it. I'm just pointing it out for people (like me) who missed it in the past.
Of course. And also content for articles, blogs, training classes, and BriForum sessions.
"CPS servers have been able to reboot without the data store since v3.0."

Actually, this is possible since MF XP Feature Release 2 and the HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\IMA\Runtime\PSRequired Registry Key...

WOW! Over the last few weeks people have really been brutal on these threads. Personally I welcome any/all further explanation of Citrix stuff as there's always something to learn from everyone. If you've got something useful to share, please do so. Otherwise...
Hi Shawn.
Sorry If I've been "brutal". I thought it was useful to know that some Features were available in previous releases...
Actually, you could do this with Winframe and Metaframe 1.0 and 1.8. Granted there was no data store to speak of (just a bunch of registry entries), but they would reboot happily nonetheless :-)

Anyone know if NTrigue could do the same?
page pool
health check
Data collector does not act as licensing broker since mps 3.0 (usd to be in data store)
Some changes on ima and registry for licensing in mps 4 inPSE400W2K3R01
application limit query BIG optimization PSE400R01W2K036

good idea to do a history of IMA - would be need to trawl through all the hotfixes

The Citrix Independent Management Service in Presentation Server 4.5 Hangs When the SQL Data Store is Not Available

Add the following registry key and set the number of attempts to 1 improve the startup performance if the SQL data store is down:

Name: SqlServerConnectionRetryCount

Restart the Citrix Independent Management Service
I think brutal is probably putting it a bit strong Shawn, there is a world of difference between brutality and a bit of light hearted banter or the occasional dig. I would be surprised if Brian, or anybody else who is on the receiving end, took this stuff personally. There is nothing wrong with having a bit of fun along the way and the vast majority of posts are constructive and informative. Keep up the good work guys :)
the challenge is always whether the friendly banter translates through text. Personally i have to agree with Shawn on the brutality.
I might be old fashion but things like !!!! to me seems like someone shouting in my face.. sure a Smiley can help but still..

Maybe it is about time Guests started logging in, it is my experience that people tend to be more open and polite when they are being honest about who they are.. even if its just an internet nickname :-)
I think this was new in PS 4 as well. This is nice because it means you can restart the IMA service without disconnecting all your users who are using Session Reliability (since SR uses the XTE service).
I believe this functionality is also available in PS 3.0 through a hotfix.
Re: IMA service can now be restarted within affecting XTE serviceposted by Guest on 11/15/2007 7:33:32 AM
I believe this functionality is also available in PS 3.0 through a hotfix.

>>Yep : http://support.citrix.com/article/ctx104907
I don't think Shawn was referring to Laurent when he wrote "brutal."
To clear the air, when I said "over the last few weeks" I was not specifically referring to this thread. It seems like there have been several articles/blogs over the last few weeks that several guest posters have resorted to very child-like behavior. I was not directing this specifically at Laurent as I've got no problem with him specifically. My general point is that we're all grown ups here and there's no need to take every opportunity to take a jab at someone. The people that are willing to stick their neck out and share information (whether it's 100% correct or 50% correct) are still miles ahead of those people who choose to bottle up their knowledge and not share it with anyone. That's all. No disrespect intended towards Laurent or anyone else. Let's everyone just stay on a productive path.

Yeah, that service dependency was a real brain fart in PS3.



I have some question here, if I configured the Citrix zone policy, the policy details stored in Local host cache or it will be available only on data store?





It will be in DS.




It looks like the zone preference vs. session sharing option began with PS4.0, whereas PS3.0 and earlier honored session sharing over zone preference.

See support.citrix.com/.../CTX111059.