Luminis 4.2.1.0 + RHEL 4 + VMWare + Parallel Deployment + Coyote Point Load Balancer

We have completed this process at Clayton State University, and have felt that it would be best to release our installation documentation to try and help others who are pursuing similar interests. Below is a modified extract of our documentation, as well as sample scripts that can be modified in any way to suite anyone's interests. This information is made available with absolutely no legal strings attached - I encourage people to reproduce this content, and distribute it in any way possible. I have no affiliation with Sungard, or Luminis and it is not my intention to disclose any industry, or trade secrets.

Our configuration was an existing single tier Portal server running on Solaris 10. We were moving to RHEL4 with a Parallel deployment configuration. Many of the references below (ie copying files from the current system) require you to either have an existing installation, or deviate from the flow of this document.

Attached are the script files referenced in the documentation. You will want to copy these files to the home folder of your Portal administrator account on the new resource tier machine. Please look at the scripts and make any needed modifications before running them. They are powerful, and can cause a lot of trouble if you aren't familiar with the contents of these files.

Also - I would like to give credit to Chris Hansen for writing the scripts that are attached.

Contents

 

Overview

 

Luminis can now run on RHEL4 (Enterprise Server - ES) (as of April, 2009). Several steps must be performed to prepare the OS for a Luminis installation. See preparing RHEL4 below

The Luminis platform is divided into multiple tiers. Each tier serves a specific purpose, such as the resource tier, portal tier, etc. We will need to install and configure each tier in a specific order, starting with the Resource tier.

 

Installing RHEL4

If you haven't verified the installation media, run a checksum before installing. Also, if you want to setup a static IP, you can do that at this point. For the rest of the installation, use the default values.

 

Preparing RHEL4 Base Image

After the installation, complete these tasks for the base image:

  • Setup admin account
  • Transfer authorized_keys file
  • Add admin to sudoers list with no password prompt (visudo)
  • Modify /etc/resolv.conf
  • Open up the firewall on ports 80, 443, 8008 for platform communications
  • Setup any extra packages (vim, etc) by adding your Red Hat network account info
  • Change init to 3, and turn off unwanted services (samba, X, cups, etc)+
  • Install vmware tools

+ These are the services to modify:

sudo /sbin/chkconfig isdn off
sudo /sbin/chkconfig pcmcia off
sudo /sbin/chkconfig smartd off
sudo /sbin/chkconfig cups off
sudo /sbin/chkconfig cups-config-daemon off
sudo /sbin/chkconfig apmd off
sudo /sbin/chkconfig nfs on
 

The Resource Tier

 

Additional installation

Complete these tasks:

  • Modify the MAC address, IP, Gateway, etc in /etc/sysconfig/network-scripts/ifcfg-eth0 if copying from an existing VM
  • Mount / prepare installation media
  • Disable the firewall
  • Acquire DNS name
  • Change hostname in /etc/hostname
  • Create appropriate entries in /etc/hosts to create loopback, and local reference to own DNS name
  • Copy over our custom Luminis scripts directory from an existing server
  • Change variables in the scripts/90-functions file (attached)
 

Introduction

This Tier is responsible for LDAP, database connections, and housing file fragments for Targeted Content Channels. This tier must be coupled with its own portal tier (even though it may never be used). This must be installed first, as it is a prerequisite for the Portal tiers.

 

install.conf

Copy over the install.conf file, or create from scatch. You will need the following for the resources tier (anywhere is fine - assuming ~/install.conf):

# What to install
tiers=portal, resource
# Where to install

cp.root=/opt/luminis

# How to connect to LDAP running on the Resource box
resource.directory.manager.dn=cn=Directory Manager
resource.directory.manager.password=(password)
resource.host=fqdn of host
resource.ldap.port=389
resource.ldap.suffix=cp

# Properties required for the Dev box
admin.email=a@a.com
admin.id=adminrt
admin.password=(password)
email.domain=clayton.edu
email.host=oi.clayton.edu
license.key=####
luminis.database.host=fqdn of Oracle instance
luminis.database.name=(Oracle SID)
luminis.database.port=8765
luminis.database.type=oracle
luminis.database.user.id=(db user)
luminis.database.user.password=(db password)
school.city=Morrow
school.country=us
school.name=Clayton State University
school.state=GA
school.timezone=America/New_York
school.zipcode=######
secure.email=yes
smtp.host=fqdn of smtp host

# Properties required on Unix
os.group.id=admin
os.user.id=admin

# Optional Properties
local.ip=(resource tier ip)
local.host=(resource tier fqdn)
verbose=yes
validate.network.properties=no

#PD Settings
pd.enabled=yes
pd.server.cookie.enabled=yes
shared.directory=/opt/luminisshared
grouptools.chat.port=9001
integrated.email=no
localhost=(resource tier fqdn)

Note: The userid of the Luminis platform must not be the username of the platform that you are migrating from. This "temporary" username will be replaced by the old user from the source system.

 

Run installer

Run the following operations on the mounted installation media (assuming /tmp/install as a mount point). Run the following:

cd /tmp/install
./LP-4.0.0.0-linux -x /tmp/explode
chmod -R 755 /tmp/explode
cp -r /tmp/install/jes /tmp/

This will extract the installer file into its separate files so that we can modify them. Yes - we are modifying the installer here. You will need to change some prerequisite checking to allow Luminis to install on RHEL4. The files to be modified are:

  • /tmp/explode/0/scripts/check-linux-prereqs.py
  • /tmp/jes/Linux_x86/installer

Consult the lp0309sup.pdf for specifics. We are now ready to being the installation. If you have the ability to snapshot, this would be a good place to do so. Run the following (may need to be root)

cd /tmp/explode/bin
./run-installer /home/admin/install.conf

This will install the resource tier without any questions or prompts. If it fails, you will most likely have to revert to your snapshot and start again, as it doesn't seem to resume very well when it errors.

If you plan to replicate data, DO NOT DO ANYTHING IN THE PORTAL. It relies on exact matches for channel IDs, etc so look but don't touch.

 

Upgrading

You should upgrade the resource tier before syncing any files, or applying any customizations because the upgrades can knock out these customizations, causing you to have to do them again. Additionally, if you are replicating, you want to make sure that you are at the version of the source system.

As of LP-4.2.1.0-linux, the patching has become cumulative, so life is easier. LP-4.2.1.0-linux does not appear to want to install over top of 4.0.1.0, so I run the following commands to ensure my environment:

patchcp -l

If you get back:

luminis-4.0.0.0
luminis-4.0.1.0

then you will need to perform the additional step of uninstalling 4.0.1.0. To do that, run:

sudo patchcp -u luminis-4.0.1.0

Copy the LP installation file to a writable directory (if you have it mounted from an read-only share). This will cause the installation to fail if not performed. Then run the patch:

sudo ./LP-4.2.1.0-linux

If the installer fails, you will want to check "patchcp -l" again and make sure that it is not listed. If it is, it may be partially installed, creating a problem. You will want to uninstall any partially completed patches. When you uninstall in this scenario, you may have to run the uninstaller a few times before it completely finishes.

Also, note that upgrading is specific to the tier it is run on. In a parallel deployment, you will need to perform these steps for each.

 

Post Installation Configuration

 

Replication

Replication is a fancy way of moving data from one system to another. It relies on specific ID's in the database, so you will want to do this first thing after bringing up a new Resource Tier.

The replicator isn't offially supported for particular versions. Actually, I think it is broken. To fix it, edit the following file:

vim /opt/luminis/bin/replicator

Comment out the ExportVersionCheck function, and the ImportVersionCheck function in both the source and target resource tiers:

ExportVersionCheck()
{
    # cp version sanity check
    ver=`cpver | grep 'Luminis Platform 4.0.0.0'`
#    if [ -z "$ver" ]
#    then
#        echo "CRITICAL ERROR: unsupported Luminis Platform software version"
#    echo "Exiting"
#        exit 1
#    fi
}

ImportVersionCheck()
{
    #cp version sanity check
    ver=`cpver | grep 'Luminis Platform 4.0.0.0'`
#    if [ -z "$ver" ]
#    then
#       echo "CRITICAL ERROR: unsupported Luminis Platform software version"
#        echo "Exiting"
#        exit 1
#    fi
}

To replicate, login to the source system, and run the following:

replicator export platform -d /tmp/migration

This will shut down Luminis, and make the directory specified above.

Note that commenting out the version does not remove the responsibility of checking for different versions. I would recommend replicating out of and back into the same version because of potential changes in the database, or in LDAP' structure.

Next, move this over from the source to the destination:

scp -r /tmp/migration/ TARGET:/tmp/migration/

You will need to also remove the jaas.conf file from the migration folder:

rm /tmp/migration/jaas.conf

Now, import the new settings into the target system:

replicator import platform -d /tmp/migration

This will cause services to stop to begin the import. If at any point the migration errors, you may have to reinstall the platform.

 

Copying Old Production Schema and Data to New Schema

This should be done in parallel with the replication above Log into server as oracle and run:

/oracle/10gR201/bin/exp SYSTEM/<Password Here>FILE=SCHEMA.dmp OWNER=(OLD DB ACCOUNT)

Loginto sqlplus as system and run:

Drop user (NEW DB ACCOUNT) cascade
/
CREATE USER (NEW DB ACCOUNT)
IDENTIFIED BY <Password Here>
DEFAULT TABLESPACE LUMINIS
TEMPORARY TABLESPACE TEMP
/
GRANT CREATE ANY PROCEDURE TO (NEW DB ACCOUNT)
/
GRANT CREATE ANY SEQUENCE TO (NEW DB ACCOUNT)
/
GRANT CREATE ANY TABLE TO (NEW DB ACCOUNT)
/
GRANT CREATE ANY TRIGGER TO (NEW DB ACCOUNT)
/
GRANT CREATE ANY VIEW TO (NEW DB ACCOUNT)
/
GRANT DROP ANY SEQUENCE TO (NEW DB ACCOUNT)
/
GRANT DROP ANY TABLE TO (NEW DB ACCOUNT)
/
GRANT DROP ANY VIEW TO (NEW DB ACCOUNT)
/
GRANT UNLIMITED TABLESPACE TO (NEW DB ACCOUNT)
/
GRANT CONNECT TO (NEW DB ACCOUNT)
/
ALTER USER (NEW DB ACCOUNT) DEFAULT ROLE ALL
/
Exit

Run this from the command line as oracle:

/oracle/10gR201/bin/imp SYSTEM/<Password Here>FROMUSER=(OLD DB ACCOUNT) TOUSER=(NEW DB ACCOUNT) FILE=(OLD DB ACCOUNT).dmp
 

Setup LDAP Authentication

Luminis controls user access through the Java security model. You will need to modify the following files:

vim /usr/jdk/instances/jdk1.5.0_10/jre/lib/security/jaas.conf

Add the following:

jaasEas {
        //Authentication
        com.pipeline.security.authen.JaasLdapLoginModule sufficient prefix=security.ias.eas;
        com.pipeline.security.authen.JaasLdapLoginModule sufficient prefix=security.ias.eas.###;
};
vim /usr/jdk/entsys-j2se/jre/lib/security/java.security

Enable the line reading:

login.config.url.1=file:${java.home}/lib/security/jaas.conf

If you are replicating from an existing environment, you do not need to perform these steps. You will need to remove jaas.conf, as the script will create this file for you. If it already exists, the migration will halt.

 

Single Sign On with systems

We will need to enable Banner SSB, and Baner SSO. To accomplish this, export the o=SCTSSOapplications node of the source LDAP to a LDIF file. We will import this into the new system. Match environments so you SSO into the right target.

Run the script "96-copy_sctsso" from our Luminis custom scripts folder. This will import several LDIF files into the local LDAP:

./96-copy_sctsso OLD FQDN

Additionally, you will need to change the configURLs of the target machines after replicating a server. Extract the relevant sections of LDAP via configman into a file, then do a find and replace (but monitor it), and then reimport with the new settings:

configman -g *.configURL > /tmp/configURL
vim /tmp/configURL

Inside vim you can do a find and replace as a command (hit : to begin)

%s/OLD/NEW/gic

The NEW address should be the URL of the load balancer. Save the file, then exit. Run the following to import back into configman:

configman -i /tmp/configURL
 

Importing SSL Certificates

You will need to import the SSL certificates from machines using non trusted CA's. These include tutortrac, and kb. To do this, change the password in /opt/luminis/bin/checkssl, then run this command with the server as an argument:

/opt/luminis/bin/checkssl UNTRUSTED FQDN

Confirm that you want to import the server certificate. Also, if it asks you about a trusted CA, import this as well. If it asks you for a server alias, change this to the FQDN of the machine you are importing the certificate on.

 

Synchronize customized files

Customized files can be migrated from one platform to the other via a the "91-sync_files" script in the custom scripts folder. This will move stylesheets, javascript files, images, customized login pages, etc to the target server. Run the following from the source server:

./91-sync_files -s TARGET

Next, we will want to run a script to fix any hard-coded host name references. This is referred to as "fixurls". Do the following to build the Java classpath:

. /opt/luminis/bin/cpclasspath

Next, run the Java command:

java com.pipeline.tools.JavaFixUrls -d /opt/luminis/webapps/luminis -s /opt/luminis/webapps/luminis -oldFqn OLDSERVER -redeploy -x fckeditor

This is a Java class that is a fancy regular expression find and replace. Because of this, it sometimes breaks on files like the minified Prototype.js, and Tiny_mce.js files because of limitations of the Java regex implementation. Even better, when this happens it clears out the entire file, so you will need to recopy these when this operation completes. Yes world, this is why people preach the DRY Principle.

 

Parallel Deployment Implementation

While other steps above affect parallel deployment (such as some of the settings in the install.conf), this section deals with the majority of the changes.

Luminis by default sets its own cookie for each server to uniquely identify them, and to allow a load balancer to route incoming requests. We have a load balancer that does this its own way (with another cookie), so we can skip some of the setup requirements here.

Regardless, the settings in LDAP that are prefixed with "fos." deal with the parallel deployment settings, and we will need to change some. Set the server failure notification to off, as this is handled by our load balancer:

configman -s fos.server.failure.notification.enabled false

Additionally, the content root locations will change globally:

configman -s content.root /opt/luminisshared
configman -s content.store.perm.text /opt/luminisshared/content  
 

LMG Integration

The LMG is needed to consume events generated in Banner. This needs to be installed separately from the Luminis platform. To start with, it uses its own version of Java, so you will have to install this on the RHEL OS. Download from Sun's website, http://java.sun.com/j2se/1.4.2/download.html for RHEL.

Run the bin file to extract the rpm. Then install the RPM:

sudo rpm -i ./j2sdk-1_4_2_19-linux-i586

Next, we will need to obtain the LMG jar file. This can be found on Sungard's website, or from another resource tier.

scp /opt/luminis/products/lmg40/lmg4.0.jar TARGET:/tmp/

Now we can run the jar file with a specific version of Java:

cd /opt/luminis/products/lmg40
sudo /usr/jdk/instances/jdk1.5.0_10/j2sdk1.4.2_19/bin/java -jar /tmp/lmg4.0.jar -erp banner -lmbhost TARGET FQDN -dburl BANNER DB FQDN:8765:PROD -dbpw <PASSWORD> -jmspw <PASSWORD> -ldi true -notification true

Now that it is "installed", we will need to configure the LMG. This is pretty straightforward since we use all the defaults:

sudo ./mbldisetup

You can then start the Events processing by issuing the command:

/opt/luminis/products/lmg40/Events/bin/startevents &
 

Load Balancer Configuration

You will need to configure a load balancer to work with the Luminis Parallel deployment. This load balancer will be responsible for routing requests to the portal tiers. As a matter of conservation, the resource tier is omitted from the load balancing, and its web server is shut down, so that it is a dedicated LDAP / DBMS machine. You will need to setup four different clusters in the load balancer:

 

HTTP Cluster

This is a Layer 7, regular cluster. Add each VM as a server underneath this cluster. You will need to make the outbound NAT address the Cluster's IP address.

 

HTTPS Cluster

This is a Layer 7 encrypted cluster. You will need to generate a certificate for this cluster and upload it to the server before it works. Add the same machines as in the HTTP Cluster. The cluster itself will be bound to port 443, however its VMs will listen on port 80 since the load balancer has hardware SSL de/encoding.

 

HTTP CPIP Cluster

This is like the HTTP cluster, except that it listens on port 8008. This is the SSO web server for Luminis.

 

Chat Cluster

This is a different setup, with a Layer 4 cluster. You will setup the VMs, and increment the port used for Group Tools.

 

The Portal Tier

 

Configuration

Install the base image in VMWare, and configure the following:

  • Change the IP to a static entry
  • Create a DNS name for this IP address
  • Modify /etc/sysconfig/network to reflect new hostname - This cannot be the full DNS name
  • Start the VM

Also, check that the scripts folder on the resource tier reflects the appropriate values in the 90-functions file.

 

Installation

The Portal tier installation is pushed from the resource tier. You will need to configure the Portal tier as shown above, then run the installation script for portal tiers. This is the "93-install" located in the scripts folder:

cd scripts/
./93-install TARGET

This will establish SSH keys, copy over needed installation files, generate the install.conf file, share and mount NFS drives, mount the installation media, and run the installer. Watch for any errors.

 

Post Installation Configuration

You will need to make several changes in LDAP for the specific branch of the Portal tier for Parallel deployment:

  • cn=content.root, ou=install-TARGET FQDN, o=Luminis Configuration => /opt/luminisshared
  • cn=site.root, ou=install-TARGET FQDN, o=Luminis Configuration => /opt/luminisshared
  • cn=grouptools.data.directory, ou=install-TARGET FQDN, o=Luminis Configuration => /opt/luminisshared

Clear out the /tmp/luminis-install directory (the patching process needs this to be clean to succeed):

rm -rf /tmp/luminis-install

Additionally, you will need to patch the Portal tier to the version of Luminis that the resource tier is running. Obtain the latest patch from Sungard's website, and copy the patch to the Portal tier:

The installation file needs to be able to extract to its local directory, so if this is a share like the above, then you will need to copy the patch to a writable location:

cp /tmp/install/LP-4.2.1.0-linux /tmp/

Then, run the installer:

sudo /tmp/LP-4.2.1.0-linux

After the patch(es) install, you will probably need to resynchronize your file customizations. Run the from the resource tier:

~/scripts/91-sync_files -s TARGET -u

This will copy over customized files, and then run fixurls on the portal tier.

 

Configman changes

You will need to change a few additional Portal tier values in LDAP to point to the shared resource location instead of the local location. These values are located at:

cn=site.root, ou=install-PORTAL TIER FQDN, o=Luminis Configuration

and

cn=grouptools.data.directory, ou=install-PORTAL TIER FQDN, o=Luminis Configuration
 

Moving to a new DNS Name

After the process of setting up an environment, there is probably an intention to make this environment the new production environment. To do this, you will most likely need to change your Portal's DNS name. This can be accomplished using the steps below.

Note that if you are moving from a single tier, to multiple tiers, the LDAP server will reside on the resource tier. This DNS name is referenced in several places, so change this in addition to any DNS names by following all the steps below.

 

Preparation

  • Shut down the webserver if it is runnning on all the Portal tiers
  • Make the following changes in LDAP

For each Portal tier:

configman -s web.fqn -h NEW DNS NAME
configman -s web.secure.fqn -h NEW DNS NAME
<pre>

For each SSO application:
<pre>
configman -s es.SYSTEM.configURL es.SYSTEM.configURL=NEW DNS NAME:8008/cpipconnector/SYSTEM/GetConfigVersion2
configman -s security.ias.eas.Luminis.host.name NEW DNS NAME

After you have applied these settings, you can run the FixURLs script above to updated any absolute links in the Portal tier HTML files.

  • Change the DNS name in $CP_ROOT/webapps/cpipconnector/WEB-INF/config/cpipconnectr.properties file
  • Verify that the SCTSSO branch in LDAP contains the correct DNS entries
  • Login to Banner as the baseline user, and set the new LDAP name in GUAUPRF under the LDAP tab
  • Login into Banner Self-Service and change the WebTailor parameter for the LDAP server name to the new DNS

Startup all the Portal tiers again.

 

Load Balancer

Any cluster IP addresses for your Portal environment referenced in the load balancer will need to be updated to reflect the new IP address of the DNS name you are moving to. See the Load Balancer section for specifics.

 

Apply Settings

Halt the old Portal tier(s) if they are still running. We will need to bind to these IP address and this has unpredictable results if they are still in use. Restart the load balancer interfaces if they have not yet been bound to the new IPs.

 

Message Broker

Start the new message broker instance on the replacement Portal tier. Since some of the events were probably consumed by the old system, you will want to make sure the new system is totally up to date with the most current Banner data. To do this, you can run an ICGORLDI extract and import into the new Portal instance. Once the XML file has been generated. import the XML by issuing the following command:

cptool import ims /PATH/TO/ICGORLDI_###.XML

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Thanks so much for this. I do have a couple of questions

Hello,

 

I work in a small school here in Boston Ma.

Having recently adopted a single server test enviorment and a PD production enviorment I found your post and it has all but saved my life. However,

I have a couple of questions about this process. I have done this twice already ( gotta love snapshots ) and cannot seem to figure out a couple things pertaining to the alt luminis username and then the java fix url I don't think or cannot seem to get it to work. Is there anyway we can trade email addresses and or have a quick phone call?

 

Thanks in advance,

 

WIlliam Mahoney

Syndicate content