Forum Discussion
waterfall_10467
Altostratus
Jul 15, 2012when_lb_failed
Hello,
If a client coming from 192.168.1.0 and 192.168.2.0 networks redirect to node1 else redirect to node2.However, when node1 is down ,move all active and new connections to node2 and again when node2 is down move all active and new connections to node1.
Please help me related to above scenario
thank you in advance,
Kind regard,
7 Replies
- nathe
Cirrocumulus
Can
Would a generic pool setting of Action on Service Down set to Reselect help here or do you specifically need to target only those hosts from 192.168.1.0 and 192.168.2.0?
Hope this helps,
N - waterfall_10467
Altostratus
Hi Nathan,
Actually I need to indicate each remote network subnet and I need to load balance according to the networks. while clients are coming run two tcp port like 41000 and 56000 and these ports need to run on the same node.Therefore, I have configured the source adress affinity as match across services.and now as mentioned above how can I load balance via an irule. as you understand each node has both the 41000 and the 56000 ports.That's why there are two virtual server which have the same ip but just ports different like 41000 and 56000 so there are two pool and each pool member include 192.168.1.10:41000 and 192.168.1.11:41000 and other pool include 192.168.1.10:56000 and 192.168.1.11:56000
if clients remote address match the 192.168.1.0 or 192.168.2.0 /24 network redirect to node1 else redirect to node2 but if node1 is down all active and new connections redirect to nod2 or if node2 is down all active and new connections redirect to node1
I guess We need to use when client accepted and when lb failed parameters.
Thank you in advance. - nathe
Cirrocumulus
Will this work for you then?
Create a Data Group for 192.168.1.x and 192.168.2.x clients:
class 192_group {
{
network 192.168.1.0/24
network 192.168.2.0/24
}
}
Create an iRule:
when CLIENT_ACCEPTED {
Check if Client Address is from the specific data group
if { [class match [IP::remote_addr] equals $::192_group]} {
node 192.168.1.10
} else {
node 192.168.1.11
}
}
when LB_FAILED {
pool test_pool
LB::reselect
log local0. "Selected server [LB::server] did not respond. Re-selecting node from test_pool"
}
Most of this taken from: https://devcentral.f5.com/wiki/iRules.node.ashx
If you're on v9.x then use matchclass rather than class match command.
Rgds
N - nitass
Employee
what if virtual sever is listening on any port and pool member is also on any port. on pool, assign 2 health monitors which one checkes on port 41000 and the other one is on port 56000.
for client 192.168.1.0/24 and 192.168.2.0/24, just check IP::client_addr and send to specific pool member if it is up. - waterfall_10467
Altostratus
Hi Nitass,
let me be clear actually there are two virtual server which are listening different ports but their ip address same but their pools different because as you mentioned above each node is listening different ports and while a client is requesting to server which is running two different tcp ports and these ports need to be on the same server.therefore there are two different pool.
regards, - nitass
Employee
i mean something like this. is it what you are asking?[root@ve10:Active] config b virtual bar list virtual bar { snat automap pool foo destination 172.16.1.1:any ip protocol 6 rules myrule } [root@ve10:Active] config b pool foo list pool foo { monitor all tcp41000 and tcp56000 members { 192.168.1.10:any {} 192.168.1.11:any {} } } [root@ve10:Active] config b monitor tcp41000 list monitor tcp41000 { defaults from tcp dest *:41000 } [root@ve10:Active] config b monitor tcp56000 list monitor tcp56000 { defaults from tcp dest *:56000 } [root@ve10:Active] config b rule myrule list rule myrule { when CLIENT_ACCEPTED { if {[class match -- [IP::client_addr] equals network_class]} { if {[LB::status pool foo member 192.168.1.10 0] equals "up"} { pool foo member 192.168.1.10 0 } } } } [root@ve10:Active] config b class network_class list class network_class { { network 192.168.1.0/24 network 192.168.2.0/24 } } - waterfall_10467
Altostratus
Hello Nitass ,
thank you for your reply. However the services ports are wanted to separate so we cannot set any port on the members.
regards,
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