You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@roller.apache.org by David Fisher <df...@jmlafferty.com> on 2008/01/12 04:39:44 UTC

Roller Configuration Advise Request

Hi -

Perhaps someone can give me a little advise about how to best proceed  
with a Roller configuration we are building.

We are using JDK 5.0, Tomcat 5.5, and Derby switched from embedded to  
the network config. (We also have Lucene and POI in our web app)

We have multiple domain names. I want to configure a very similar  
combination of our web app and with a roller weblog for each. At the  
moment. I don't care if I can or cannot access all the blogs in each  
domain.

I've tried a couple of combinations and each has a drawback. I spent  
some time reviewing the open JIRA issues which has given me a  
somewhat fuzzy idea that "clustering" issues are mostly addressed.  
I'm looking for a possible approach, and I am quite willing to  
scratch my itch by going into the code.

I plan to move into production soon where we cluster by load  
balancing on 5 servers. The roller_data and themes directories will  
be on a shared drive. I am aware that the lucene based search may not  
work well, but that is a limitation we can accept.

Here are the configurations that we have tried.

(1) Each domain has its own Host Context in Tomcat, and each has its  
own Roller instance that is using the same database.

Everything was generally working sufficiently well until I started  
paying attention to the unusually long time it took the Tomcat JVM to  
shutdown. I explored the situation  using jconsole and determined  
that with multiple contexts running Roller that there would be an  
orphaned HitCountQueueProcessor waiting to wake up for its 3 minutes  
of sleep. This information was supplemented by the logs. Experiments  
proved that this was always the case until I only had a single Context.

(2) All domains use a single Context with one domain "owning" it and  
the others as aliases and of course a single database.

Here the trouble is $url.absoluteSite which appears to be the root  
for the rest of the $url macros. This takes the url of the first host  
or alias that hits roller after tomcat is started. Of course this  
causes all kinds of issues with the links on the web pages.

Not really acceptable. So, I am wondering what to do. Here are some  
ideas that I have, but I would appreciate some help.

(A) Try (1) again but have a different database or db user for each  
Context.

(B) Somehow get into all the velocity macros and make the URLs come  
out the way I want, and accept that the authoring system may look  
funny to my handful of authors.

(C) Get into the Filter mechanism and adjust the $url model myself.

(D) Find another blog tool. Yuck, I like Roller ...

(E) Have a production load balancing config that sends each domain's  
roller traffic to a single, unique server. I have 5 servers and 4  
domains.

(F) Just live with the up to 3 minute delay when restarting the server.

Personally I like (A), (C), and then (F)

Thanks in advance for any advise.

Regards,
Dave

Re: Roller Configuration Advise Request

Posted by David Fisher <df...@jmlafferty.com>.
>> Hi Gabe,
>>
>>> Are each domain a separate entity? It is not clear if the domain  
>>> (blog instance) are separate because the users are different or  
>>> they are
>>> separate because they are nodes in a cluster for load balancing  
>>> purposes (thus appearing as one against 1 database)?
>>
>> The domains are separate businesses / product lines with a common  
>> web technology that we have built over the last 6 years.
>>
>> So they are different for business reasons, not technological.  
>> That is why I am not worried about blogs being accessible from the  
>> other, someone will have to work to do so.
>>
>> And no I can't have all the blogs in one domain because some of  
>> our partner's customers must enable javascript explicitly for a  
>> domain.
> In that case would it not be simpler to have complete separate  
> instances of Roller with different Databases for each business entity.
> You can do so in 2 ways.
>
> 1)Separate instances in the same JVM like so:
> http://www.biz1.com/roller1
> http://www.biz2.com/roller2
> http://www.biz3.com/roller3

That is already my first config. Here is where I had the issue with  
lingering / orphaned HitCountQueueProcessor objects on JVM shutdown.  
I guess I am going to go back to it. I'll sleep on shutdown and then  
kill.

> 2)Separate instances in DIFFERENT JVMs installed as ROOT context  
> like so:
> http://blog.biz1.com
> http://blog.biz2.com
> http://blog.biz3.com

Yes, possible except for a characteristic of our webapps where we  
have a large memory cache in each JVM. We also have implemented  
mutlicasting to dirty our cache between each server. It is very  
effective.

Thanks.

Regards,
Dave

>
>
>
> -- 
> Regards
>
> Gabe Wong
> NGASI AppServer Manager
> JAVA AUTOMATION and SaaS Enablement
> <a href=http://www.ngasi.com>http://www.ngasi.com</a>
> NEW! 8.0 - Centrally manage multiple physical servers
>
>


Re: Roller Configuration Advise Request

Posted by Gabe Wong <ga...@ngasi.com>.
David Fisher wrote:
> Hi Gabe,
>
>> Are each domain a separate entity? It is not clear if the domain 
>> (blog instance) are separate because the users are different or they are
>> separate because they are nodes in a cluster for load balancing 
>> purposes (thus appearing as one against 1 database)?
>
> The domains are separate businesses / product lines with a common web 
> technology that we have built over the last 6 years.
>
> So they are different for business reasons, not technological. That is 
> why I am not worried about blogs being accessible from the other, 
> someone will have to work to do so.
>
> And no I can't have all the blogs in one domain because some of our 
> partner's customers must enable javascript explicitly for a domain.
In that case would it not be simpler to have complete separate instances 
of Roller with different Databases for each business entity.
You can do so in 2 ways.

1)Separate instances in the same JVM like so:
http://www.biz1.com/roller1
http://www.biz2.com/roller2
http://www.biz3.com/roller3

2)Separate instances in DIFFERENT JVMs installed as ROOT context like so:
http://blog.biz1.com
http://blog.biz2.com
http://blog.biz3.com



-- 
Regards

Gabe Wong
NGASI AppServer Manager
JAVA AUTOMATION and SaaS Enablement
<a href=http://www.ngasi.com>http://www.ngasi.com</a>
NEW! 8.0 - Centrally manage multiple physical servers


Re: Roller Configuration Advise Request

Posted by David Fisher <df...@jmlafferty.com>.
Hi Gabe,

> Are each domain a separate entity? It is not clear if the domain  
> (blog instance) are separate because the users are different or  
> they are
> separate because they are nodes in a cluster for load balancing  
> purposes (thus appearing as one against 1 database)?

The domains are separate businesses / product lines with a common web  
technology that we have built over the last 6 years.

So they are different for business reasons, not technological. That  
is why I am not worried about blogs being accessible from the other,  
someone will have to work to do so.

And no I can't have all the blogs in one domain because some of our  
partner's customers must enable javascript explicitly for a domain.

> David Fisher wrote:
>> Hi -
>>
>> Perhaps someone can give me a little advise about how to best  
>> proceed with a Roller configuration we are building.
>>
>> We are using JDK 5.0, Tomcat 5.5, and Derby switched from embedded  
>> to the network config. (We also have Lucene and POI in our web app)
>>
>> We have multiple domain names. I want to configure a very similar  
>> combination of our web app and with a roller weblog for each. At  
>> the moment. I don't care if I can or cannot access all the blogs  
>> in each domain.
>>
>> I've tried a couple of combinations and each has a drawback. I  
>> spent some time reviewing the open JIRA issues which has given me  
>> a somewhat fuzzy idea that "clustering" issues are mostly  
>> addressed. I'm looking for a possible approach, and I am quite  
>> willing to scratch my itch by going into the code.
>>
>> I plan to move into production soon where we cluster by load  
>> balancing on 5 servers. The roller_data and themes directories  
>> will be on a shared drive. I am aware that the lucene based search  
>> may not work well, but that is a limitation we can accept.
>>
>> Here are the configurations that we have tried.
>>
>> (1) Each domain has its own Host Context in Tomcat, and each has  
>> its own Roller instance that is using the same database.
>>
>> Everything was generally working sufficiently well until I started  
>> paying attention to the unusually long time it took the Tomcat JVM  
>> to shutdown. I explored the situation  using jconsole and  
>> determined that with multiple contexts running Roller that there  
>> would be an orphaned HitCountQueueProcessor waiting to wake up for  
>> its 3 minutes of sleep. This information was supplemented by the  
>> logs. Experiments proved that this was always the case until I  
>> only had a single Context.
>>
>> (2) All domains use a single Context with one domain "owning" it  
>> and the others as aliases and of course a single database.
>>
>> Here the trouble is $url.absoluteSite which appears to be the root  
>> for the rest of the $url macros. This takes the url of the first  
>> host or alias that hits roller after tomcat is started. Of course  
>> this causes all kinds of issues with the links on the web pages.
>>
>> Not really acceptable. So, I am wondering what to do. Here are  
>> some ideas that I have, but I would appreciate some help.
>>
>> (A) Try (1) again but have a different database or db user for  
>> each Context.
>>
>> (B) Somehow get into all the velocity macros and make the URLs  
>> come out the way I want, and accept that the authoring system may  
>> look funny to my handful of authors.
>>
>> (C) Get into the Filter mechanism and adjust the $url model myself.
>>
>> (D) Find another blog tool. Yuck, I like Roller ...
>>
>> (E) Have a production load balancing config that sends each  
>> domain's roller traffic to a single, unique server. I have 5  
>> servers and 4 domains.
>>
>> (F) Just live with the up to 3 minute delay when restarting the  
>> server.
>>
>> Personally I like (A), (C), and then (F)
>>
>> Thanks in advance for any advise.
>>
>> Regards,
>> Dave
>

Regards,
Dave

>
> -- 
> Regards
>
> Gabe Wong
> NGASI AppServer Manager
> JAVA AUTOMATION and SaaS Enablement
> <a href=http://www.ngasi.com>http://www.ngasi.com</a>
> NEW! 8.0 - Centrally manage multiple physical servers
>
>


Re: Roller Configuration Advise Request

Posted by Gabe Wong <ga...@ngasi.com>.
David Fisher wrote:
> Hi -
>
> Perhaps someone can give me a little advise about how to best proceed 
> with a Roller configuration we are building.
>
> We are using JDK 5.0, Tomcat 5.5, and Derby switched from embedded to 
> the network config. (We also have Lucene and POI in our web app)
>
> We have multiple domain names. I want to configure a very similar 
> combination of our web app and with a roller weblog for each. At the 
> moment. I don't care if I can or cannot access all the blogs in each 
> domain.
>
> I've tried a couple of combinations and each has a drawback. I spent 
> some time reviewing the open JIRA issues which has given me a somewhat 
> fuzzy idea that "clustering" issues are mostly addressed. I'm looking 
> for a possible approach, and I am quite willing to scratch my itch by 
> going into the code.
>
> I plan to move into production soon where we cluster by load balancing 
> on 5 servers. The roller_data and themes directories will be on a 
> shared drive. I am aware that the lucene based search may not work 
> well, but that is a limitation we can accept.
>
> Here are the configurations that we have tried.
>
> (1) Each domain has its own Host Context in Tomcat, and each has its 
> own Roller instance that is using the same database.
>
> Everything was generally working sufficiently well until I started 
> paying attention to the unusually long time it took the Tomcat JVM to 
> shutdown. I explored the situation  using jconsole and determined that 
> with multiple contexts running Roller that there would be an orphaned 
> HitCountQueueProcessor waiting to wake up for its 3 minutes of sleep. 
> This information was supplemented by the logs. Experiments proved that 
> this was always the case until I only had a single Context.
>
> (2) All domains use a single Context with one domain "owning" it and 
> the others as aliases and of course a single database.
>
> Here the trouble is $url.absoluteSite which appears to be the root for 
> the rest of the $url macros. This takes the url of the first host or 
> alias that hits roller after tomcat is started. Of course this causes 
> all kinds of issues with the links on the web pages.
>
> Not really acceptable. So, I am wondering what to do. Here are some 
> ideas that I have, but I would appreciate some help.
>
> (A) Try (1) again but have a different database or db user for each 
> Context.
>
> (B) Somehow get into all the velocity macros and make the URLs come 
> out the way I want, and accept that the authoring system may look 
> funny to my handful of authors.
>
> (C) Get into the Filter mechanism and adjust the $url model myself.
>
> (D) Find another blog tool. Yuck, I like Roller ...
>
> (E) Have a production load balancing config that sends each domain's 
> roller traffic to a single, unique server. I have 5 servers and 4 
> domains.
>
> (F) Just live with the up to 3 minute delay when restarting the server.
>
> Personally I like (A), (C), and then (F)
>
> Thanks in advance for any advise.
>
> Regards,
> Dave
Are each domain a separate entity? It is not clear if the domain (blog 
instance) are separate because the users are different or they are
separate because they are nodes in a cluster for load balancing purposes 
(thus appearing as one against 1 database)?



-- 
Regards

Gabe Wong
NGASI AppServer Manager
JAVA AUTOMATION and SaaS Enablement
<a href=http://www.ngasi.com>http://www.ngasi.com</a>
NEW! 8.0 - Centrally manage multiple physical servers