DPS use circuit breaker strategies to choose the most available Remote Server from the configured ones.
{
"version": 2,
"remoteDnsServers": [],
"envs": [],
"activeEnv": "",
"webServerPort": 5380,
"dnsServerPort": 53,
"logLevel": "INFO",
"logFile": "console",
"registerContainerNames": false,
"domain": "docker",
"dpsNetwork": false,
"dpsNetworkAutoConnect": false,
"defaultDns": true,
"hostMachineHostname": "host.docker",
"serverProtocol": "UDP_TCP",
"dockerHost": null,
"resolvConfOverrideNameServers": true,
"noRemoteServers": false,
"noEntriesResponseCode": 3,
"dockerSolverHostMachineFallbackActive": true,
"solverRemote": {
"circuitBreaker": {
"failureThreshold": 3,
"failureThresholdCapacity": 10,
"successThreshold": 5,
"testDelay": "PT20S"
}
}
}
Test them on startup and add the healthy ones as HALF_OPEN this will evict to app get resolution fails right on the start because the first server on the remote servers list is offline.
{
"version": 2,
"remoteDnsServers": [],
"envs": [],
"activeEnv": "",
"webServerPort": 5380,
"dnsServerPort": 53,
"logLevel": "INFO",
"logFile": "console",
"registerContainerNames": false,
"domain": "docker",
"dpsNetwork": false,
"dpsNetworkAutoConnect": false,
"defaultDns": true,
"hostMachineHostname": "host.docker",
"serverProtocol": "UDP_TCP",
"dockerHost": null,
"resolvConfOverrideNameServers": true,
"noRemoteServers": false,
"noEntriesResponseCode": 3,
"dockerSolverHostMachineFallbackActive": true,
"solverRemote": {
"circuitBreaker": {
"strategy": "CANARY_RATE_THRESHOLD",
"failureRateThreshold": 21,
"minimumNumberOfCalls": 50,
"permittedNumberOfCallsInHalfOpenState": 10
}
}
}