Wednesday, August 3, 2011

Follow up on Virtualbox....

Forgot the maybe most important piece of information:-)

Download VirtualBox here: virtualbox.org

Don't forget to download and install the Extension Pack from the same page. Latest version is 4.1 and it seems stable to me. Been using it since day one (and the beta before that). Not seen any issues.

Download pre-configured Oracle Virtual Machines from here: http://www.oracle.com/technetwork/community/developer-vm/index.html

Oracle's Virtualization page on OTN: http://www.oracle.com/us/technologies/virtualization/index.html

Generic Virtual Machines can be found here: virtualboxes.org

/Mikael

Using VirtualBox as Development Platform

This is a generic post regarding the usage of Virtual Machines and I will bring up topics that I frequently get asked about. There are several reasons why a Virtual Machine is a good choice for a development platform. A couple of reasons might be:

- The env. is contained as a whole and separate from whatever is happening on your host (host here equals the physical machine and guest will refer to the vm). This means that if you need to change host or upgrade OS isn't a big deal. Just have a backup of the VM's.

- You can share your whole dev. env. by simply let someone get a copy of the VM. This is how we share our demo env. internally from Development to the Field organizations.

Performance is rarely an issue anymore since most people should have access to a laptop/pc with at least 8GB RAM and the host OS should be 64 Bit. Some people even have access to SSD drives which removes the last bottleneck, Disk IO.

Moving from VMware to VBox

Inside Oracle most every product team these days share their new releases or early betas using pre-configured VM's and we see them in basically two formats, VirtualBox exports (sometimes just the VDI file) and VMware VM's. VirtualBox will handle both formats with ease. Most everything is now done on linux at Oracle so we see very few VM's with other OS's. Sharing the VM is the same but with Linux there are now license issues.

Some of the product demo VM's are now also available on OTN, http://www.oracle.com/technetwork/community/developer-vm/index.html

Unless the VM is shared in a VBox export format (which is of course is imported via File - Import Appliance) you can create a new empty VM but skip the disk creation step.

Create New Virtual Machine2

Screen shot above showing the step in the Create New Virtual Machine Wizard where the Disk file will be created. Un-check the checkbox and click Continue.

OEL64bit XE11g  Storage1

Later in VBox you can just add the disk file (the VDI or VMDK file). Screen shot above shows where to add the disk file in the Storage section in the Settings for the VM. Only thing you need to know is what type of controller that was used in the original VM, IDE, SATA or SCSI. If you have a VMware VM you can just open the .vmx file with any text editor and you can find this info in there.

When you have the VM running in VBox you will have to install the Guest Addtions (and if this was a VMware VM you need to remove VMware Guest Tools).

The Guest Addistions install will compile some kernel extensions and the Guest (the Virtual Machine) needs to be setup so that it can do just that, compile and build kernel extension. I will cover this in more detail later as it's rarely an issue. It can be an issue if you build a Guest from scratch and forgets to add these components (some kernel packages, the gcc compiler etc.).

Networking

Most questions I get relates to network issues and I think by now I have convinced most people to do what I do almost 100% of the time, run the guest with NAT networking. It will basically always just work. Regardles if your host is connected to a network or not. It also allows you to do everything you would expect from within the VM in terms of inbound and outbound traffic. Some tidbits of info:

  • Each NAT guests on a host will have it's own subnet and they will all have the IP 10.0.2.15.

  • A NAT guest will piggyback on the hosts's external IP and will have the same reach as the host. This also applies to VPN connections which means that if the host is on a VPN connection all NAT'd VM's will also be "on VPN". More interesting is perhaps that all these VM's can be reached from the VPN network using the Host's VPN IP. More on this under Port Forwarding below.

  • You can create 4 Network interfaces using the VBox GUI (you can create another 4 using the command line interface). Other than NAT you can have Bridged, Host-only, Internal and a Generic mode. More on these modes here: http://www.virtualbox.org/manual/ch06.html#networkingmodes

Port Forwarding

This is one of the differentiating factors between VMware Player (Linux/Windows), VMware Fusion (Mac) and VirtualBox. VMware Workstation (Windows/Linux) has this feature but comes with a price tag of $189 currently. Oracle stopped licensing VMware Workstation around version 5.5 (current is 7.1) so my experience is a bit outdated but in 5.5 Port Forwarding was a bit complicated to setup. Not exactly intuitive, not the first time anyway.

OEL64bit XE11g  Network1

The Port Forwarding button opens the dialog below and I would say that this is pretty intuitive, correct?

VirtualBox

The name column is just for information purposes, you can write whatever you want or leave the default value which is Rule1, Rule2 etc. Protocol is a dropdown and it's either TCP or UDP. Host and Guest IP can be left blank (VBox knows both already). Left to configure is what port in the guest that should be exposed on the host.

With port forwarding configured any service running in the guest can be reached via the host's IP and Port. As an example using the ports above you can connect with ftp from the host to the ftp server inside the guest with ftp://localhost:8021/. If someone on the same network wants to access the ftp server in the guest on your host they would simple replace localhost with the actual IP of your host. They don't need any info about the guest IP. They don't even need to know that this is a VM running on your laptop/desktop.

All the details here: http://www.virtualbox.org/manual/ch06.html#natforward

This is totally transparent to the host and the guest in most cases. One case where you need to do a little bit of configuration inside the guest is if you run a WLS instance and want to deploy to it from a JDev (or any other tool) running on the host or remote. The WLS instance inside the guest needs to know the real IP of the host for this to work. There is a such a setting in the Advanced Section on the WLS Server Console, External Listen Address. Map this to the real IP of host and everything should work just fine.

M1

Navigate to the WLS Console for the AdminServer and click on the Advanced link and the settings shown above will appear.

Remote Access

There are several ways to access a guest both when you're local on the host or if you want to access your guest remotely or give someone else remote access to a guest that runs on your laptop/desktop. You can configure VNC inside the guest or enable Remote Desktop if it's Windows. You can install tools like NX from nomachine.com or Teamviewer from teamviewer.com inside the guest. Assuming we still run NAT you will need to configure Port Forwarding for any solution that runs as a process inside the guest, even pure command line tools like telnet and ssh. But there is a better alternative. Install nothing! Take a look at the dialog below. It shows the Display Settings for one of my guest. VirtualBox has a built-in Remote Display feature and it's better than anything VMware or Parallels have if you ask me.

OEL64bit XE11g  Display

Remote Display exposes the Console output of the guest using RDP. This means that you can access your linux guest VM's desktop remotely (or locally from the host) using Windows Remote Desktop (or any RDP client on Mac or Linux) and dynamically resize the remote window. you can also copy and paste text (this might behave a little different depending on the guest OS). Since it's the Console you have access to and the Remote Display Server is hosted by VBox and not the guest OS it will also stay connected during a reboot so you can see the usual Console output as if you had local access. As you can see from the dialog you can also share this Remote Display with multiple users. This Remote Display access has no connection to what type of Network your guest is using, NAT, Bridged, Host-only or even no networking. You can always enable the Remote Display.

I'll stop here for now but I will return with more on Virtualization. Both regarding VirtualBox and OVM.

/Mikael

 

 

Monday, August 1, 2011

Will They Come If You Build It?


While we all anxiously await the next major release of Oracle WebCenter, it may be a good time to take a step back and discuss some non-technical issues around deployment in the enterprise that will become more and more important as WebCenter builds on feature sets that are designed to support social collaboration.

For those who haven’t heard, there are big changes in the works for WebCenter.   The product suite is being restructured around a four-pillar model:  WebCenter Sites, WebCenter Portal, WebCenter Connect, and Webcenter Content.  The promise is that WebCenter is and will increasingly become “the user engagement platform for social business—connecting people and information.”  Stay on top of all new developments by checking out the WebCenter product management site here:   http://www.oracle.com/us/products/middleware/webcenter/index.html.

The increased emphasis on connecting people and information will shape all four of these WebCenter pillars, but arguably none will be affected more than WebCenter Connect.  The product is focused on “purposeful collaboration” which “provides the social enterprise building blocks for end users to build effective and collaborative communities.”  Check out the product brief for WebCenter Connect here:  http://www.oracle.com/technetwork/middleware/ontrack/overview/owc-connect-brief-427791.pdf?ssSourceSiteId=ocomen.

We are all excited about these new developments.  It has been apparent for some time that successful deployment of collaboration tools like WebCenter Connect will be something that gives global businesses a major competitive advantage over organizations that opt not to work on improving their collaboration processes.  Having a product like Connect in the social collaboration toolkit will go a long way towards helping organizations create or re-engineer collaboration, but it isn’t, nor can it be, an all-inclusive answer.  Connecting people, content, and process is much easier said than done, however.  There are several key issues around how people behave and how they are motivated that need attention if deployment of new social collaboration tools in any enterprise is going to be successful.

While people are social creatures, even in the work environment, there are a number of factors that will block uptake of a new product that IT rolls out with the ostensible purpose of “making the organization operate better” and “helping you work more efficiently”.  The most significant blocking factor is behavioral inertia:  people will operate today and tomorrow much like they’ve behaved yesterday unless they are motivated to chart a new course.  Behavioral inertia manifests itself in several ways:

·         Most members of an organization already have well-established people networks that they think are good enough to meet their collaboration needs.
·         Ironically, many people will claim that they do not have the free bandwidth necessary to learn a new set of tools that are being brought in to help them work more efficiently and productively.
·         The chicken/egg syndrome applies to social collaboration solutions:  until a deployment picks up the critical mass necessary for it to attract users, it will only be a partial success at best or, in the worst case, it may fail.

So, other than addressing all of the technical issues, what can we do as architects to overcome the behavioral inertia that acts as a blocking factor around successful enterprise deployments of WebCenter?  While this is not an all-inclusive list, planning on using some or all of these approaches will ease the transition to a new way for people to collaborate in the organization:

·         Assess the targeted user population and make sure computer skills are at a high enough level for them to take advantage of interfaces and interactions between products (e.g. portal, email, IM, conferencing) that may be brand new to them.
·         Plan on creating a buzz around the new deployment project.  Get people excited about it.
·         Come up with ways to pre-seed content.  Although having content by itself will not be a sure guarantee of success, without content people will not see much value in using a new tool.
·         Plan on building a number of access points or links to the new collaboration tool from sites/applications where people are already “living” on their computers.  A well-placed link on the internal portal comes to mind.
·         Plan on an initial deployment to a friendly, manageable group of people who will have the most potential to gain from using the new tool.  This helps with the buzz factor and can also help with shifting momentum to wider audiences.
·         Enlist an executive sponsor for active and ongoing support of the deployment.  The higher up the food chain, the better.
·         Do not rely on the passive approach, occasionally referred to as viral adoption, of a set of social collaboration tools.  Although it can happen, it seldom works that way in the enterprise.

Obviously, most of these strategies do not fall into the sweet spot of what IT does typically.  Some or most of the responsibility will be with different areas in the enterprise.  Many organizations have “change management” groups who have experience with re-engineering and evolving the business to take on new challenges.  Whether or not IT architects are responsible for addressing behavioral inertia blocking factors, they are areas that will need attention when WebCenter is deployed.

Sunday, July 31, 2011

Using a Web Proxy Server with WebCenter Family

The use of a Web Tier is always recommended in a production environment, for security, performance and better control and load management, no matter if is a Intranet, internet or extranet environment.

The most common use for the Web Tier with WebCenter is acting as Reverse Proxy to forward all requests to a frontend WebCenter site to the application server (Figure A), but there’s to many ways to do an enterprise deployment with a web tier and many flavors of web servers and load balancing options.

FigA

Let’s start with the WebLogic plugin with supported webservers. You can found the standard plugins in your WebLogic instalation dir, that will something like “%WEBLOGIC_HOME%/server/plugin/%OS%/”, but I recommend you to download the latest plugin from Oracle’s OTN or eDelivery websites, you will found the Oracle WebLogic Server Web Server Plugins 1.1 or later. With the version 1.1 you will found plugins for Apache 2.2.x (32-Bits and 64-Bits) and for IIS 6+ and IIS 7+. Always confirm the OS support with the WLS Plugin Support Matrix. If you need support for iPlanet 6+ or 7+, you can use the version 1.0. Any throuble to found the files, try search or create to the Oracle support (Ref.: Doc ID 1111903.1).

FigB

Some times you do not want to use a separate web server, you can use the WebLogic as a Web Server by using a servlet, but this is subject for another post.

When you are deploying a WebCenter solution using a proxy server, you need to remember to proxy all your requests from all weblogics for Security, performance and Control and also all non-weblogic requests such as static files, WebCenter Content custom requests, Services, Portlets and 3rd Party.

Is common in intranet deployments you see calls direct to the application servers, calls to several different servers, like the Figure C.

FigC

Above you can see the same sample with all calls using the web server, for proxy forward, for reverse proxy, static files caching, even the use of Oracle Coherence is easy when you have a WebCenter Spaces + Content deployment.

FigD

We cannot forget to talk about the clustering and load balancers, Clustering is easy done by the WebLogic, you just need to follow the documentation. For Load balancing you need to choose what kind and what load balancer you will use.

LOAD BALANCING

You can do load balancing using the Web Proxy Server with WLS Plugin or a servlet as mentioned above or a External Load Balancer (Hardware) or Appliance.

Using the WLS Plugin you will need to remember to create a entry for WebCenter Server that are you using, that means that you need to create a entry for the /webcenter/ another for the /cs/, another for the “custom sitestudio” calls, for the portlets (If you do not create a parent folder for the portlets, you will need to create a entry for each portlet) and an entry for any other 3rd calls.

The configuration file for each entry will looks like this sample for IIS7:

# Changed by Oracle A-Team (Adao.Junior)
# Date: 07/31/2011
# WebCenter Content: CUSTOMER_WEB_SERVER
# WLSPlugin1.1-IIS6-IIS7-win64-x64
WebLogicCluster=192.168.100.101:8888,192.168.100.102:8888,192.168.100.101:8891,192.168.100.102:8891
ConnectTimeoutSecs=25
ConnectRetrySecs=5
KeepAliveEnabled=true
FileCaching=ON
SecureProxy=OFF
Debug=OFF
WLTempDir=C:\DEBUG\CONTENT

For a External Load Balancer (Hardware) you have many options, such as the f5 Big-IP, a guide to help you deploy with WebCenter could be found here.


There’s a option to use a hybrid configuration, with Hardware loadbalancers and Web Proxy to handle the web calls between the users and web farms, and web proxies and between the proxies and applications servers.

Webcenter and IPM

As with any tech work, one simple need can lead to another and another and soon there is a thread of quests in FMW layers to sweep up.

I was looking at viewing I/PM documents in Webcenter Spaces and thought sharing the same UCM should suffice but there is a bit more to it, obviously including sharing same security (LDAP).

I had two separate VMs with Webcenter and I/PM and so as a first step I made the latter use the same LDAP as WC but now when I login as admin user IPM admin tools are not available anymore... and thus the "sub-quest" began with looking at enabling log details etc and the summary is :

I/PM has its some tables in its own schema that store user/object info and those are
SYSTEM_SECURITY
DEFINITION_SECURITY
DOCUMENT_SECURITY

These have GUID entries that need to be updated as needed (eg. when I moved the LDAP). In my case it was sufficient to delete entries in the first table as I did not
care much about the install I was playing with. However, the proper way to get this right is to use the refreshIPMSecurity feature.

cd /common/bin
./wlst.sh
wlsL/base_domain/serverConfig> connect() <- with your login info
refreshIPMSecurity()
exit()

( This can also be done from EM using the refreshIPMSecurity command available under the application MBean for oracle.imaging ).

Now where was I - oh yes, on to the next step :)