Introduction
A Cloudflare migration can move traffic to the new origin while session affinity still pins some users to the old server. The load balancer pool may already look mostly correct, but sticky-session behavior keeps certain browsers following an older affinity decision and reaching legacy infrastructure after the cutover.
Treat this as an affinity-state problem instead of a generic load balancer misconfiguration. Start by checking whether affected users are being kept on the old origin by session persistence, because post-migration traffic can stay split even after pool membership changes if affinity state is still active.
Symptoms
- Cloudflare Load Balancer session affinity still pins users to the old origin after migration
- Some visitors reach the new site while others still see the old server or old content
- The pool looks updated, but sticky users continue landing on legacy infrastructure
- Behavior differs by browser, session, or cookie state rather than by public DNS
- One fresh private window works while an existing session still reaches the retired origin
- The issue started after origin migration, pool update, or phased load balancer cutover
Common Causes
- Session affinity is still binding users to the old origin
- Old affinity cookies remain valid after the migration cutover
- The old origin remained eligible in the pool long enough to create sticky sessions that outlived the pool change
- Validation focused on pool membership but not on live client persistence behavior
- Only new sessions were tested after migration while existing users kept their previous origin pinning
- Drain planning for the old origin did not account for session-affinity persistence
Step-by-Step Fix
- Reproduce the issue with an affected session and compare it with a fresh session, because the difference often reveals whether affinity state is keeping users on the retired origin.
- Check the Cloudflare Load Balancer configuration and confirm session affinity is enabled for the affected hostname or pool, because sticky behavior must be verified before changing origin logic.
- Review whether the old origin remained active in the pool during or after cutover, because users pinned during that window may continue following the old route even after the pool appears updated.
- Inspect the session state or cookie behavior associated with the load balancer if available, because existing affinity data often explains why only some users still reach legacy infrastructure.
- Remove or expire the old affinity path at the real control point only after confirming the new origin is ready for all users, because clearing persistence too early can create a different traffic problem.
- Retest with both old and fresh sessions and verify that users now reach the intended new origin consistently, because the real fix is migration-wide traffic convergence rather than one successful request.
- Confirm the old origin no longer receives sticky-session traffic after the change, because backend logs should reflect the end of affinity-driven pinning.
- Review related pools, hostnames, or phased cutover settings if the application uses more than one load-balanced path, because affinity issues often repeat across similar routes.
- Document the session-affinity drain approach used during recovery, because persistence behavior is easy to overlook during future Cloudflare origin migrations.