Platform Services Controller embedded to external

Ever got yourself in a situation where you thought, crap, now I’m stuck with a stupid decision I made a while back? This happens in the vSphere world as well when people choose a vCenter server with an embedded Platform Services Controller. Installing vCenter with an embedded Platform Services Controller is fine for smaller and test environments. It keeps the footprint small and is easy to maintain. When environments need to scale or be more resilient it is better to have external PSC’s. For instance, you can’t use two vCenter servers in enhanced linked mode when using the embedded option, so when scaling out it becomes more difficult to manage. To overcome all sorts of challenges it might be a good idea to use an external PSC (which is also a best practice). If you started of with an embedded PSC, I got you covered. In this blog post we will move from an embedded to an external PSC. We will also deploy this external PSC using the unattended install method because automating things is really cool. I will also touch on the subject of replication topologies when the number of PSC’s grows beyond two.

Overview of what we are doing

I will be using the vCenter server appliance version 6.0 Update 2. We start of with a vCenter appliance with an embedded PSC. We need to change this setup to a vCenter with an external PSC. To start off we install a new PSC using vcsa-deploy. This is a command line tool included on the vCenter ISO that installs a Platform Services Controller or vCenter using a predefined JSON template. After that we reconfigure the vCenter server so it uses the new PSC and we remove the embedded PSC from the vCenter server.

This is a visual representation of our starting point.

Install Platform Services Controller

Before we can start deploying the Platform Services Controller with vcsa-deploy we need to set up the DNS entry for the Platform Services Controller. During the setup there is a check for forward and reverse DNS so make sure these are created before deploying.
We then setup the JSON template. The ISO has a number of example templates available so it is fairly easy to get started with this. All parameter options are described in the official documentation.

NOTE: The command line tool was changed from version 6.0 Update 3 so be sure to use the correct document.

This is the template I created, because comments can not be used in JSON files I have added comments behind <–. To use this specific JSON template you need to remove the <– and the comment behind it from the file.

Now that we have the template complete we can start the installation. Hook up the vCenter Server Appliance ISO to your management station and start a command prompt. I am using Windows in this case but the vcsa-deploy tool is also available for Linux and Mac OS.

Get a cup of coffee and relax because this will take some time. After this process is finished the new Platform Services Controller will be running and replicating with the embedded Platform Services Controller that is included with your vCenter Server.

When the installation is done we are at the following scenario:

Reconfigure vCenter and removing the embedded PSC

The next step is to point the vCenter server towards the new Platform Services Controller. This can be done with a command directly from the appliance shell. Log in to the vCenter appliance with SSH as root and enable the shell.

1

2

shell.set--enabled true

shell

First lets check if the replication between the two PSC’s was successful. With the following command.

As you can see the partner is 0 changes behind and they both have the same change number so it is save to assume replication was successful.

We can now reconfigure the vCenter server so it will point towards the external PSC and remove the embedded PSC services locally. This procedure is actually pretty straight forward. There is a command we can use to do both steps in one go.

Don’t confuse the “reconfigure –repoint-psc” parameter with the “repoint –repoint-psc”. The reconfigure parameter lets you repoint the vCenter server to the external PSC and remove the local PSC components and services from the vCenter server. If you should use the repoint parameter, you will only point the vCenter server to the external PSC but will not remove the local PSC components and services.

After this we are in the following scenario:

Conclusion

So, basically the procedure to move from an embedded Platform Services Controller to an external Platform Services Controller is now done. What I would suggest though is adding another PSC in the mix at this point. This wil give some extra resiliency and flexibility if something would happen to the Platform Services Controller or if you need to perform maintenance. With a second Platform Services Controller you can easily repoint (remember the parameter we discussed above) the vCenter server to the second Platform Services Controller and keep running smoothly.
In this post I used the unattended installation method to install that external PSC. This is mainly because I like automating things but there is another catch to it. While filling out the template it really gets you thinking up front on what you want to achieve, this helps you to better understand what you are doing. What you usually get is people firing up the GUI en start filling in the required information on the fly and acquiring this as they go along. This could be more time-consuming and error prone (especially when deploying multiple PSC’s or vCenter servers). On a final note, when you need to install more than one component or need to repeat it often unattended installs are the way to go.