|
1 | 1 | /////////////////////////////////////////////////////////////////////////////// |
2 | 2 |
|
3 | | - Copyright (c) 2021, Oracle and/or its affiliates. |
| 3 | + Copyright (c) 2021, 2024, Oracle and/or its affiliates. |
4 | 4 | Licensed under the Universal Permissive License v 1.0 as shown at |
5 | 5 | http://oss.oracle.com/licenses/upl. |
6 | 6 |
|
|
10 | 10 |
|
11 | 11 | == Coherence IPMonitor |
12 | 12 |
|
13 | | -The Coherence IPMonitor is a failure detection mechanism used by Coherence to detect machine failures. It does this by pinging the echo port, (port 7) on remote hosts that other cluster members are running on. When running in Kubernetes, every Pod has its own IP address, so it looks to Coherence like every member is on a different host. Failure detection using IPMonitor is less useful in Kubernetes than it is on physical machines or VMs, so the Operator disables the IPMonitor by default. This is configurable though and if it is felt that using IPMonitor is useful to an application, it can be re-enabled. |
| 13 | +The Coherence IPMonitor is a failure detection mechanism used by Coherence to detect machine failures. |
| 14 | +It does this by pinging the echo port, (port 7) on remote hosts that other cluster members are running on. |
| 15 | +When running in Kubernetes, every Pod has its own IP address, so it looks to Coherence like every member is on a different host. |
| 16 | +Failure detection using IPMonitor is less useful in Kubernetes than it is on physical machines or VMs, so the Operator disables |
| 17 | +the IPMonitor by default. This is configurable though and if it is felt that using IPMonitor is useful to an application, |
| 18 | +it can be re-enabled. |
14 | 19 |
|
15 | | -To re-enable IPMonitor set the boolean flag `enableIpMonitor` in the `coherence` section of the Coherence resource yaml: |
| 20 | +=== Coherence Warning Message |
| 21 | +
|
| 22 | +Disabling IP Monitor causes Coherence to print a warning in the logs similar to the one shown below. |
| 23 | +This can be ignored when using the Operator. |
| 24 | +
|
| 25 | +[source] |
| 26 | +---- |
| 27 | +2024-07-01 14:43:55.410/3.785 Oracle Coherence GE 14.1.1.2206.10 (dev-jonathanknight) <Warning> (thread=Coherence, member=n/a): IPMonitor has been explicitly disabled, this is not a recommended practice and will result in a minimum death detection time of 300 seconds for failed machines or networks. |
| 28 | +---- |
| 29 | +
|
| 30 | +=== Re-Enable the IP Monitor |
| 31 | +
|
| 32 | +To re-enable IPMonitor set the boolean flag `enableIpMonitor` in the `coherence` section of the Coherence resource yaml. |
| 33 | +
|
| 34 | +[CAUTION] |
| 35 | +==== |
| 36 | +The Coherence IP Monitor works by using Java's `INetAddress.isReachable()` method to "ping" another cluster member's IP address. |
| 37 | +Under the covers the JDK will use an ICMP echo request to port 7 of the server. This can fail if port 7 is blocked, |
| 38 | +for example using firewalls, or in Kubernetes using Network Policies or tools such as Istio. |
| 39 | +In particular when using Network Policies it is impossible to open a port for ICMP as currently Network Policies |
| 40 | +only support TCP or UDP and not ICMP. |
| 41 | +
|
| 42 | +If the Coherence IP Monitor is enabled in a Kubernetes cluster where port 7 is blocked then the cluster will fail to start. |
| 43 | +Typically, the issue will be seen as one member will start and become the senior member. None of the other cluster members |
| 44 | +will be abe to get IP Monitor to connect to the senior member, so they wil fail to start. |
| 45 | +==== |
| 46 | +
|
| 47 | +The yaml below shows an example of re-enabling the IP Monitor. |
16 | 48 |
|
17 | 49 | [source,yaml] |
18 | 50 | .coherence-storage.yaml |
|
26 | 58 | enableIpMonitor: true |
27 | 59 | ---- |
28 | 60 |
|
29 | | -Setting `enableIpMonitor` will disable the IPMonitor, which is the default behaviour when `enableIpMonitor` is not specified in the yaml. |
| 61 | +Setting `enableIpMonitor` field to `false` will disable the IPMonitor, which is the default behaviour when `enableIpMonitor` is |
| 62 | +not specified in the yaml. |
0 commit comments