How to deal with a scheduler service installed on 2 IS

Hi,

We have a scheduler service installed (let’s called it : my-sch-srv) on 2 IS (PRODUCTION).

The 2 IS are both active (active-active configuration) but our loadbalancer redirect customer requests either on the IS1 either on the IS2.

How may I make sure only one “my-sch-srv” is launched at a time ? of course, it is forbidden that this service to be started on the 2 IS at the same time.

The support has explained me that I just have to params the schedule service with the target “AnyServer” but this works only if the ISInternal pool is shared by the 2 IS.
Unfortunately, in our configuration, IS1 and IS2 point and refer 2 different ISInternal schemas.

How may I make it working fine ? would you have a workaround to advise me please ?

Regards

Hi Cedric,

as the state of the Schedulers (running or not) is maintained in the table IS_USER_TASKS in the ISInternal schema (part), the information from support is correct.

Is there any reason why your IS´s have to use different ISInternal schema?
IS core audit, Process audit, CrossReferencing can be separated, for Document History and IS Internal this is not recommeded/possible when running active-active.

Do you have anything else which is shared between the two IS and can be set to mark a running scheduler when the second one starts?
Remember latency in this case: While first service places the “active” mark, the second one might be looking up the “non active” mark instead of “active” mark due to the fact it was not yet “commited”.
In this case the scheduler will start on both nodes, but one of them will immediately finish doing nothing as it notices that the one on the other node is already running.

But the best way is to leave this up to the built-in functionality following the instructions in the Clustering Guide.

Regards,
Holger

Hi Holger,

Thanks a lot for your reply.

I don’t know exactly the reason why the 2 ISInternal pools are different for the 2 IS (I’m going to ask the question to the company which has installed our WebMethods environment)
I think it is because our 2 IS are running in active-active mode.
But the 2 IS are not installed in a real cluster mode (Settings > Cluster : none)

But however, to reply to you, these 4 functions share the same pools on IS1 and IS 2 :
Archiving : Archive
CentralUsers : CentralUsersPool
DocumentHistory : IntegrationServer
ISCoreAudit : IntegrationServer

Today, we made a service test, and we can verify it is started on the 2 IS. That is a problem for us.
What would suggest me ? (the 2 IS are not in a clustering mode)

Regards

Hi Cedric,

I would suggest to reconfigure the ISes to be in full cluster mode sharing everything as far as possible.

By doing so both ISes aware of each others state and are able to continue the work in progress when one of the nodes fails.

Active-active mode does not require two IS Internal schemas.

Regards,
Holger

Although it is possible (and sometimes even makes sense) to have 2 identical IS without shared cache or database sharing load, typical active-active cluster need to have a shared database to share information like the scheduler state.

Thanks Martin, but in my case, if the 2 IS has 2 different ISInternal database, how may I do to share the scheduler state ?

That’s what everybody telling you: If you want to have it from IS out of the box, the IS need a way to synchronize themselfs and thats via the database. If you do not want to share the database, you need to code some logic yourself or use another scheduler which sends a trigger event via messaging. If both IS share the same client prefix a document will only be taken from one IS from the queue (if the receiving triggers are identical).

I had understood what “everybody” told me… but, I was waiting for a solution in my context…
and so, here it is : I have to code my own logic myself…
That is probably a solution I would have prefer to avoid :wink:
Thanks for your reply.