Our load balancers were created around 2021 with Backend Keepalive disabled, according to our internal screenshots. Today both staging and production load balancers show Backend Keepalive enabled, but we do not recall enabling it.
Can you confirm:
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
Quick but important framing: of your four questions, #2–#4 (the change timestamp/history for your load balancers, node replacements, and whether 502s were seen on your LBs) are account-specific audit data. Nobody in the community can confirm those — only DigitalOcean support with access to your account and internal logs can. So the honest answer is: open a support ticket for those, and reference the specific LB IDs. What I can help with is the general behavior and how to pull your own change history.
The documented default for enable_backend_keepalive is false, and I’m not aware of any published changelog where DigitalOcean flipped it to true on existing load balancers during a migration. So “it enabled itself” would be unusual and is worth support confirming rather than assuming.
Before concluding it changed on its own, rule out the common culprits — in my experience these are what actually flip LB settings silently:
apply can toggle enable_backend_keepalive without anyone clicking it in the UI. For K8s LBs specifically, the setting is driven by the service.beta.kubernetes.io/do-loadbalancer-enable-backend-keepalive annotation — a manifest change would push it.doctl compute load-balancer update or API call that re-sends the LB config must include the full spec; a script that omits a field can reset it. Check your CI/CD and any cron/automation that touches LBs.curl -X GET \
-H "Authorization: Bearer $DO_TOKEN" \
"https://api.digitalocean.com/v2/load_balancers/<LB_ID>"
Look at enable_backend_keepalive in the response.terraform plan (or pulumi preview). If the tool wants to change the value back, that tells you the drift direction and who/what is authoritative.git log -p on your Terraform/Pulumi/K8s manifests filtered for keepalive will show exactly when and by whom the value changed in code.Give them: the LB IDs, the region, your internal screenshot date showing it disabled, and the approximate window you noticed it enabled. Then ask specifically for:
enable_backend_keepalive for those LB IDs,Support can pull all four; the community can’t.
One practical note: since keepalive being on generally improves requests/sec and latency and reduces TCP churn, unless you’re seeing actual errors you may be fine leaving it enabled — but I’d still get the audit trail so you know how it changed. If you were seeing 502s, that’s a separate backend-connection-reuse issue worth digging into (idle-timeout mismatch between the LB and your app server is the usual cause).
Hope that helps narrow it down!
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.
