Forum Discussion
millencol1n_619
Nimbostratus
Dec 28, 2009Terminate TCP Sessions
Hi,
is there a way to actively terminate tcp sessions on the f5.
i have the following scenario:
2 nodes, each listening on port X
all traffic should be sent to server A as long its listening on port X
server B should only be used when A is not active, and as soon A gets active again all traffic should go to A again.
i have this running, but the problem is that after A gets online again i have a bunch of tcp sessions going to B, and that sessions do nor get migrated to A neither they time out on server B.
any ideas?
thx for your input!
6 Replies
- hoolio
Cirrostratus
I can't think of another way to handle this without a shell script. Maybe someone else has ideas.
One option might be to use an external monitor which references a shell script. You could poll the pool members and if server B goes down, delete all its connection table entries using a system call to 'b conn ss server 1.1.1.1:80 delete' where 1.1.1.1:80 is the IP:port for server B.
Aaron - millencol1n_619
Nimbostratus
thx, i think it works that way...
one more thing, is it possible to call a shell script out of an irule? - hoolio
Cirrostratus
Not directly, but you could log a message and then use a custom user_alert.conf to call a shell script. This is described to some extent in SOL9469 for handling a different issue:
SOL9469: A disabled interface is enabled after a reboot or an mcpd process restart
https://support.f5.com/kb/en-us/solutions/public/9000/400/sol9469.html
Aaron - millencol1n_619
Nimbostratus
great, works fine.
thx! - hoolio
Cirrostratus
If you end up with a working solution, could you reply here with a sanitized example or post it to the Codeshare?
Thanks,
Aaron - millencol1n_619
Nimbostratus
i applied the following irule to the virtual serverwhen RULE_INIT { set ::count 0 } when CLIENT_ACCEPTED { if { [active_members pool_a] > 0 } { pool pool_a log local0. "primary active" if { $::count == 1 } { log "clean sessions" set ::count 0 } } else { pool pool_b log local0. "secondary active" set ::count 1 } } when LB_FAILED { pool pool_b set ::count 1 log local0. "Selected member: [LB::server addr]" }
on the bigip itself i listen for the string 'clean sessions' in the ltm log, which triggers the bigpipe command as descibed in the solution.
cheers
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects
