MOSS plus Project Server 2007 middle tier

Posted on 2007-10-10
Last Modified: 2008-01-09
Hello Experts,

I need some reference information and a few questions answered regarding an installation of MOSS + Project Server 2007. I've not installed Project Server with MOSS -- but I also want to be sure I've read the correct TechNet materials. Some related things seem a little contradictory as well.
Please set me straight here.

The current topology is a medium to large farm, 8 servers with a planned configuration as follows:

a)      2 WFE's in an NLB (hardware load balanced)
b)      4 middle tier application servers (1 index server, 1 Query, 2 servers TBD )
c)      2 SQL Servers (clustered - Active/Passive) with Analysis and Reporting Services installed

Pretty standard stuff I think - Here are my questions
1) I understand that index server needs to be a single server. What should I suggest as a recovery plan if the index server dies? Any way to make this redundant? What is the current industry suggestion here?

2) TechNet says that project server MUST be installed on each farm server. This means the installer must be run on all six servers (excluding SQL). If so, would there ever be a reason to have Project Services run in its own NLB (say with 2 of the 4 servers) in the middle tier?

Multiple middle tier servers can run the same services (example:  Excel services) but I don't see in that same material saying that two or more middle tier servers need to be load balanced. Yet, another document/book may show a diagram of each middle tier server being load balanced.

So my basic question is under what circumstances is NLB sggested (for redundancy/availability) in the middle tier or is joining the farm during install enough for any application within a MOSS environment?  - Particularly with Project Server 2007.

Thank you!!!
Question by:scottcurrier
    LVL 51

    Expert Comment

    First off I manage a 7 server web farm.  It has two SQL servers in an Active/Active cluster.  One node holds the content databases, the other node the indexing databases.  We have one indexing server, two application servers (with Email, Excel and other application services) and finally two web application servers that only host websites.  We are using Microsoft's built in network load balancing (for reason's too long to discuss here it was a better choice than hardware)

    1) There is no way to make the index server redundant.  Sorry, high level Microsoft MOSS team members have told me this.  However, you have to realize that because the indexing database is on the SQL server if you have the query services running on other servers (we use the application servers) then if the indexing server dies, search still works!  It just won't gather new content.  So, you have time to fix the server as the indexing content ages.

    2) Technet is absolutely correct.   Project server must be installed on every server that has sharepoint installed.  I know this from experience.  Project server integrates with the Shared Service Provider.  You then create PWA's (Project Web Applications) which could be hosted on a seperate web application array (just like any other portal) but I wouldn't bother.  The complexity isn't worth it.  For example if our two web front end servers are too busy because of Project or other web applications I'll just add another WFE server.

    Our application servers are load balanced based on preliminary white papers from Microsoft.  It works great but I now wonder if it was worth it.  The cool thing about Sharepoint is with about an hours work I could easily take all four servers and make them all combination application and web servers!

    I've only found that moving indexing is complex.  Moving other services is very easy and flexible.

    Basically Sharepoint automatically balances load based on configuration of services.  You need to add NLB to let the customers access the services on alll the servers.

    Author Comment


    Thanks tedbilly,
    Your answers to Q1 is pretty much the feedback I was looking for - so thanks. Please indulge one more round of clarification by expanding on your comments here a bit more:

    You said: "Our application servers are load balanced based on preliminary white papers from Microsoft".

    Do you have a link to this preliminary paper? Is this just one of the TechNet links?

    You said: "Basically Sharepoint automatically balances load based on configuration of services."  

    Understood that WFE's should be in an NLB configuration, but what do you mean specifically on this point? One service per server is not that same thing as one service running within a two node app server NLB configuration.

    You said: "Our application servers are load balanced based on preliminary white papers from Microsoft.  It works great but I now wonder if it was worth it."

    You call into question the use of NLB....but this is what I'm asking you to help me with...
    I said: "So my basic question is under what circumstances is NLB sggested (for redundancy/availability) in the middle tier or is joining the farm during install enough for any application within a MOSS environment?"

    Do you have specific reasons or circumstances you can share that would help me decide or undertsand the considerations?

    Thanks for the good feedback so far

    LVL 51

    Accepted Solution

    The white papers I am referring to may not be there any more.  I was involved in the Beta and was working with MOSS 2007 last summer.  If they are still available the information would be on the Office site.

    In re-reading my comment I could have worded things better.  I am NOT questioning NLB.  What I am now wondering about was separating application services from web services.  Let me see if I can explain it a bit better a second time.

    Imagine first that you have one SQL server and one Sharepoint server.  On the single sharepoint server you would have to enable all of the MOSS 2007 services to make them available.  However, there would be no load balancing nor redundancy.

    If you used a 2 node SQL cluster with one sharepoint server, you wouldn't be able to load balance SQL (Microsoft doesn't support it) but at least you would have redundancy and as I described you could place the indexing databases on one SQL server and content on the other which is what we did in our Active/Active cluster.

    However, if you want redundancy and load balancing for the Sharepoint services you would have to add another server.  Now, as we discussed Indexing (crawling) can only be activated on one server.   However, if you enabled email integration, Excel services and web applications on both services Sharepoint essentially mirrors the services on all the servers.  You would then have redundancy for all services except indexing.

    The key issue now is how would your clients reach both servers?  There are two ways, DNS round robin or NLB (hardware or software).

    DNS round robin is two or more IP addresses for one domain name.  Then client requests are handed out like dealing cards.  The first request gets the first IP, the next request gets the next IP and when the last IP is used it starts again at the beginning.  It's very easy to setup but the problem is that DNS is unaware if one server dies.  So, clients could be sent to an invalid connection.

    So, by using NLB you can redirect clients to one or more servers and if one client goes offline the NLB can redirect requests to the online servers.

    NLB is really only required for email integration and web services.  For example we enabled email integration on two servers and by using NLB on port 25 I can ensure that email will always be delivered.  If one server goes down email still gets through.

    We also have NLB listening on port 80 for our web applications.  It works great because we have two servers that are running the web applications.  I can reboot one of them to install updates and the other handles the load auomatically.

    However what I did was setup two servers that are running non web application and non indexing services (Excel services for example) so that the load from services like Excel services doesn't effect the websites.  Excel services doesn't require NLB because if you enable that service on one or more services, Sharepoint will balance that load automatically using it's own technology.

    The benefit is that we might find that two servers can handle the application services, and that it takes three servers to handle the web applications.

    So, I will continue to use NLB for email integration and web services.   However, instead of running application services on two servers, web applications on two servers and indexing on another server, I may run web AND application services on all four servers and indexing on one server.  I'll still use NLB for port 25 and port 80.

    As I said the cool thing about Sharepoint is I could make that change very quickly.  It's very flexible.

    My recommendation for you would be to start with a 5 server farm.  Use an Active/Active SQL cluster as we have done with content databases on one server and indexing databases on the other.  Configure one server for indexing.  Run all of the remaining services on the other two servers and use NLB on port 25 and 80 for email integration and web application services.

    If you want to add more servers later because load dictates it, you can separate Excel and web services very quickly and easily.

    PS:  Be sure to use fully qualified domain names for ALL web applications.

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Threat Intelligence Starter Resources

    Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

    Having an SQL database can be a big investment for a small company. Hardware, setup and of course, the price of software all add up to a big bill that some companies may not be able to absorb.  Luckily, there is a free version SQL Express, but does …
    JSON is being used more and more, besides XML, and you surely wanted to parse the data out into SQL instead of doing it in some Javascript. The below function in SQL Server can do the job for you, returning a quick table with the parsed data.
    Via a live example, show how to extract information from SQL Server on Database, Connection and Server properties
    Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

    737 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    20 Experts available now in Live!

    Get 1:1 Help Now