Just to follow up, I finalized this solution by putting the property in the 
"Machine properties file" for the specific server ......

that is, the file at
/etc/WebObjects/Properties

and the contents simply as:
er.extensions.WOHostUtilities.localhostips=(192.168.3.168,192.168.1.168)


This way, apps don't need special configuration and any instance of any app 
that runs on that specific server gets the Miguel Arroz fiddling and the 2 
local IPs for the server added as legitimate management request IPs.

Clean and simple.

Regards, Kieran



On Nov 19, 2010, at 4:50 PM, Kieran Kelleher wrote:

> OK, first of all. Thanks to all who tried to help.
> 
> Miguel Arroz - you are a very smart man, and you should never give up your WO 
> career for goat-herding or farming in Portugal! :-)
> 
> So here is what worked for the finicky multi-IP linux box and its on/off 
> relationship with wotaskd:
> 
> I added Miguel's WOHostUtilities to ERExtensions, built and deployed the app. 
> 
> Note, WOHost needed to be set in wotaskd's Properties to the 
> WoHost=192.168.3.168. Setting it specifically to 127.0.0.1 resulted in 
> WOMonitor red error message "Failed to contact 192.168.3.168-1085". Not 
> setting it at all resulted in that Linux wotaskd not even receiving requests 
> from WOMonitor (confirmed with wotaskd debugging enabled) and not responding 
> at all to START instance requests.
> 
> In WOMonitor I added a single argument with a list of all IP addresses of all 
> wotaskd hosts in the WOA subnet, like this:
> 
> -Dcom.survs.localhostIps=(192.168.3.140,192.168.3.160,192.168.3.163,192.168.3.165,192.168.3.161,192.168.3.161,192.168.3.168)
> 
> Now WOMonitor works for linux instances the same as for Mac OS X instances. 
> Yay! :-)
> 
> I am guessing (but not going messing with this server right now since it has 
> other services running on it that cannot be stopped for me to experiment) 
> that if the eth0 was on the WOA subnet, none of this might be neccessary.
> 
> Either way, I think it is worthwhile to drop Miguel's class into ERExtensions 
> since ERExtensions, IIRC, pushes itself to the top of the classpath, and 
> since Miguel's class functions the same as the original WO one if the 
> localIps property is not set. Of course I will change the property name to 
> have a er.extensions.* prefix.
> 
> Regards, Kieran
> 
> 
> 
> 
> On Nov 19, 2010, at 4:29 PM, Chuck Hill wrote:
> 
>> 
>> On Nov 19, 2010, at 1:14 PM, Kieran Kelleher wrote:
>> 
>>> I am not using DNS for these few machines, just their IP addresses.
>> 
>> WO can be quite particular about DNS, despite what you want to do.  ;-)
>> 
>> 
>>> 
>>> hostname -f returns "localhost.localdomain"
>>> 
>>> Initially the default wotaskd resulted in WOMonitor not even being able to 
>>> start instances on the linux server, so adding WOHost=192.168.3.168 solved 
>>> the START instance problem.
>>> 
>>> 
>>> On Nov 19, 2010, at 2:55 PM, Aurélien Minet wrote:
>>> 
>>>> Hi Kieran
>>>> 
>>>> you have to change the server's /etc/hosts to:
>>>> 127.0.0.1localhost.localdomain localhost
>>>> ::1localhost6.localdomain6 localhost6
>>>> 192.168.1.168  server.domain.tld server
>>>> 192.168.3.168  hostname.domain.tld hostname
>>>> 
>>>> The line for  192.168.1.168 may not be necessary,
>>>> you may remove IPv6 line if you have not enabled it (generally I disable 
>>>> IPV6 where I doesn't need it)
>>>> 
>>>> what  does "hostname -f " return ?
>>>> 
>>>> Do you need to bind wotaskd or applications's port to 192.168.3.168 only ?
>>>> Using WOHost  makes applications binding their WOPort to a specific IP.
>>>> WOHost has never been necessary for me, even if the server has multiple IP
>>>> rely on iptables if you want to just allow connections on the IP you want.
>>>> I think using WOHost only complicate things.
>>>> 
>>>> Aurélien
>>>> 
>>>> On 11/19/2010 07:57 PM, Kieran Kelleher wrote:
>>>>> Hi Aurélien,
>>>>> 
>>>>> OK, we are only using IP addresses in WOMonitor, no hostnames at all.
>>>>> 
>>>>> The linux server has two interfaces
>>>>> 
>>>>> eth0192.168.1.168
>>>>> eth1192.168.3.168
>>>>> 
>>>>> 
>>>>> Our WOA subnet is on 192.168.3.*
>>>>> 
>>>>> 
>>>>> The /etc/hosts on that linux server right now has only this
>>>>> 
>>>>> 127.0.0.1localhost.localdomain localhost
>>>>> ::1localhost6.localdomain6 localhost6
>>>>> 
>>>>> *The wotaskd Properties file has this added:*
>>>>> WOHost=192.168.3.168
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> *The wotaskd debugging output for starting an app and communication looks 
>>>>> like this:*
>>>>> 
>>>>> @@@@@ monitorRequestAction received request from Monitor
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread1> @@@@@ monitorRequestAction 
>>>>> requestDict: {commandWotaskd = ( START,
>>>>> {applicationName = "kieran-temp"; port = 2001; id = 1; hostName = 
>>>>> "192.168.3.168"; } ); }
>>>>> 
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread1> Starting Instance: 
>>>>> /opt/next/Library/WebObjects/JavaApplications/wotaskd.woa/Contents/Resources/SpawnOfWotaskd.sh
>>>>>  
>>>>> /Library/WebObjects/Applications/cheetah_1787_20101119_0807.woa/cheetah_1787
>>>>>  -WOHost 192.168.3.168 -WOPort 2001 -WOCachingEnabled YES 
>>>>> -WODebuggingEnabled NO -WOOutputPath /dev/null -WOAutoOpenInBrowser NO 
>>>>> -WOAutoOpenClientApplication NO -WOLifebeatInterval 30 -WOLifebeatEnabled 
>>>>> YES -WOLifebeatDestinationPort 1085 -WOAdaptor WODefaultAdaptor 
>>>>> -WOWorkerThreadCount 8 -WOListenQueueSize 128 -WOWorkerThreadCountMin 16 
>>>>> -WOWorkerThreadCountMax 256 -NSProjectSearchPath () -WOSessionTimeOut 
>>>>> 3600 -WOApplicationName kieran-temp -WOMonitorEnabled YES -WONoPause YES 
>>>>> -Duser.name=cheetahdeploy -Dcheetah.dbhost=192.168.3.168 
>>>>> -DWODirectConnectEnabled=false  -DWOStatisticsPassword=temppassword  
>>>>> -DEOAdaptorDebugEnabled=false  -DWOAllowsConcurrentRequestHandling=true 
>>>>> -DWOSessionTimeOut=900 
>>>>> -Dwk.cheetah.concurrent.VendorListBillingLongResponseTask.enableTask=false
>>>>>  -Xms756m -Xmx1536m
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread1> @@@@@ monitorRequestAction 
>>>>> returning response to Monitor
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread1> @@@@@ monitorRequestAction 
>>>>> responseDict: {commandWotaskdResponse = ( {success = true; } ); }
>>>>> 
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread4>
>>>>> @@@@@ monitorRequestAction received request from Monitor
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread4> @@@@@ monitorRequestAction 
>>>>> requestDict: {queryWotaskd = "INSTANCE"; }
>>>>> 
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread4> @@@@@ monitorRequestAction 
>>>>> returning response to Monitor
>>>>> [2010-11-19 13:53:37 EST] <WorkerThread4> @@@@@ monitorRequestAction 
>>>>> responseDict: {queryWotaskdResponse = {instanceResponse = ( {port = 2001; 
>>>>> runningState = "STARTING"; statistics = {}; id = 1; nextShutdown = "-"; 
>>>>> applicationName = "kieran-temp"; refusingNewSessions = false; host = 
>>>>> "192.168.3.168"; deaths = ( 11/19/2010 13:53:13 US/Eastern ); } ); }; }
>>>>> 
>>>>> [2010-11-19 13:53:39 EST] <WorkerThread6> @@@@@ Received Lifebeat: 
>>>>> hasStarted kieran-temp 192.168.3.168 2001
>>>>> [2010-11-19 13:53:43 EST] <main> _checkAutoRecover START
>>>>> [2010-11-19 13:53:43 EST] <main> _checkAutoRecover STOP
>>>>> 
>>>>> 
>>>>> *Hitting Stop on WOMonitor results in the following wotaskd output on the 
>>>>> linux machine:*
>>>>> 
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread1>
>>>>> @@@@@ monitorRequestAction received request from Monitor
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread1> @@@@@ monitorRequestAction 
>>>>> requestDict: {commandWotaskd = ( STOP,
>>>>> {applicationName = "kieran-temp"; port = 2001; id = 1; hostName = 
>>>>> "192.168.3.168"; } ); }
>>>>> 
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread1> !...@#$!@#$ sendInstanceRequest 
>>>>> creates a WOHTTPConnection
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread1> @@@@@ monitorRequestAction 
>>>>> returning response to Monitor
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread1> @@@@@ monitorRequestAction 
>>>>> responseDict: {commandWotaskdResponse = ( {success = true; },
>>>>> {success = true; } ); }
>>>>> 
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread0>
>>>>> @@@@@ monitorRequestAction received request from Monitor
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread0> @@@@@ monitorRequestAction 
>>>>> requestDict: {queryWotaskd = "INSTANCE"; }
>>>>> 
>>>>> [2010-11-19 13:55:8 EST] <Thread-57> !...@#$!@#$ sendInstanceRequest 
>>>>> creates a WOHTTPConnection
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread0> @@@@@ monitorRequestAction 
>>>>> returning response to Monitor
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread0> @@@@@ monitorRequestAction 
>>>>> responseDict: {queryWotaskdResponse = {instanceResponse = ( {port = 2001; 
>>>>> runningState = "ALIVE"; statistics = {}; id = 1; nextShutdown = "-"; 
>>>>> applicationName = "kieran-temp"; refusingNewSessions = false; host = 
>>>>> "192.168.3.168"; deaths = ( 11/19/2010 13:53:13 US/Eastern ); } ); }; }
>>>>> 
>>>>> [2010-11-19 13:55:8 EST] <WorkerThread6> @@@@@ Received Lifebeat: 
>>>>> lifebeat kieran-temp 192.168.3.168 2001
>>>>> [2010-11-19 13:55:13 EST] <main> _checkAutoRecover START
>>>>> [2010-11-19 13:55:13 EST] <main> _checkAutoRecover STOP
>>>>> 
>>>>> 
>>>>> Any ideas about config changes to make this work?
>>>>> 
>>>>> 
>>>>> 
>>>>> On Nov 19, 2010, at 11:49 AM, Aurélien Minet wrote:
>>>>> 
>>>>>> All of the listed commands are orders passed by the wotaskd to the 
>>>>>> application. The security on this is based on where
>>>>>> the orders came from. Not who, no login/password, just the IP/hostname  
>>>>>> (something like gethostbyname) to check if it is
>>>>>> local or not.
>>>>>> For not having trouble, you have to make the command hostname -f 
>>>>>> returning the full qualified name of the server:
>>>>>> server.domain.tld , in order to do that you have :
>>>>>> _ to get a proper /etc/hosts file like:
>>>>>> 127.0.0.1 localhost.localdomain localhost
>>>>>> 1.2.3.4 server.domainX.tld server cname.domainY.tld
>>>>>> 3.5.6.7 other.domainZ.tld other
>>>>>> ...
>>>>>> (by default it file isn't correct on OS X too but it must be 
>>>>>> sufficiently correct for having wostaskd orders accepted by
>>>>>> instances)
>>>>>> _ to get the hostname correctly defined in /etc/sysconfig/network (for 
>>>>>> redhat's based distribution)
>>>>>> 
>>>>>> Also I would recommend that you use IP address instead of the hostname 
>>>>>> in the JavaMonitor Hosts tab's in order to avoid
>>>>>> DNS problems.
>>>>>> 
>>>>>> Aurélien
>>>>>> 
>>>>>> On 11/19/2010 05:24 PM, Kieran Kelleher wrote:
>>>>>>> Does anyone know why a WOA app running on a physical linux (centos) 
>>>>>>> machine would not respond to WOMonitor "Stop" or "Refuse New Sessions" 
>>>>>>> and not display the instance statistics?
>>>>>>> 
>>>>>>> What doesn't work:
>>>>>>> - WOMonitor "Stop" does not stop the instance on linux and neither does 
>>>>>>> it indicate stopped in WOMonitor (as if action is ignored)
>>>>>>> - WOMonitor "Refuse New Sessions" does not  stop refusing sessions on 
>>>>>>> the instance and does not indicate refusing sessions in WOMonitor (as 
>>>>>>> if action is ignored)
>>>>>>> - WOMonitor displays none of the statistics for the linux instance in 
>>>>>>> app Detail View in WOMonitor. All zeroes.
>>>>>>> 
>>>>>>> What does work for Linux instances:
>>>>>>> - WOMonitor Start does
>>>>>>> - WOMonitor Auto Recover does
>>>>>>> 
>>>>>>> To save time on obvious questions, here is the configuration:
>>>>>>> - This is a mixed environment of 1 Linux and 5 OS X WOA servers.
>>>>>>> - wotaskd is Apple's 5.4.3 version on all machines
>>>>>>> - WOMonitor is Apple's 5.4.3 a Mac OS X machine
>>>>>>> - The linux machine has eth0 and eth1. eth1 is on the WOA network.
>>>>>>> - The wotaskd on the Linux box Properties file has 
>>>>>>> WOHost=<eth1-ip-address>
>>>>>>> - The linux host in WOMonitor is identified by its eth1-ip-address
>>>>>>> 
>>>>>>> 
>>>>>>> Right now the only way to kill app instance on linux is:
>>>>>>> 1) remote login, lsof -i tcp:xxxx  and then kill pid
>>>>>>> 2) Click an admin action in the instance itself that calls System.exit
>>>>>>> ... after which WOMonitor "sees" that the instance is stopped
>>>>>>> 
>>>>>>> Right now the only way to refuse sessions on linux instance is:
>>>>>>> 1) Fire an admin action that calls application.refuseSessions()
>>>>>>> .... after which WOMonitor "sees" that the instance is Refusing Sessions
>>>>>>> 
>>>>>>> 
>>>>>>> WOMonitor functions fine for insatnces on all Mac OS X woa servers.
>>>>>>> 
>>>>>>> Does anyone know what might be the problem?
>>>>>>> 
>>>>>>> Regards, Kieran _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-deploy mailing list      ([email protected] 
>>>>>>> <mailto:[email protected]>)
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> http://lists.apple.com/mailman/options/webobjects-deploy/aurelien.minet%40univ-provence.fr
>>>>>>> 
>>>>>>> This email sent to [email protected] 
>>>>>>> <mailto:[email protected]>
>>>>>> 
>>>>> 
>>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-deploy mailing list      ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-deploy/chill%40global-village.net
>>> 
>>> This email sent to [email protected]
>> 
>> -- 
>> Chuck Hill             Senior Consultant / VP Development
>> 
>> Practical WebObjects - for developers who want to increase their overall 
>> knowledge of WebObjects or who are trying to solve specific problems.    
>> http://www.global-village.net/products/practical_webobjects
>> 
>> 
>> 
>> 
>> 
>> 
>> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-deploy mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-deploy/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to