Forum Discussion
Simon_Coffin_16
Nimbostratus
Aug 20, 2014iRule to load balance based on source IP
Hi Folks,
This is my first attempt at an iRule so I wanted to bounce it off all of you for comment. There are, no doubt, syntax and logic errors.
The purpose of this iRule is to load balance based...
nitass
Employee
Aug 21, 2014i understand pool member command won't create persistence record.
e.g.
config
root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm virtual bar
ltm virtual bar {
destination 172.28.24.10:80
ip-protocol tcp
mask 255.255.255.255
pool foo
profiles {
http { }
tcp { }
}
rules {
qux
}
source 0.0.0.0/0
source-address-translation {
type automap
}
vs-index 68
}
root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm pool foo
ltm pool foo {
members {
200.200.200.101:80 {
address 200.200.200.101
}
200.200.200.111:80 {
address 200.200.200.111
}
}
}
root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm rule qux
ltm rule qux {
when CLIENT_ACCEPTED {
persist source_addr 14400
pool foo member 200.200.200.101 80
}
}
test
[root@centos1 ~] curl -I http://172.28.24.10
HTTP/1.1 200 OK
Date: Thu, 21 Aug 2014 01:45:23 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Sun, 09 Feb 2014 08:39:51 GMT
ETag: "41879c-59-2a9c23c0"
Accept-Ranges: bytes
Content-Length: 89
Content-Type: text/html; charset=UTF-8
persistence record
root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) show ltm persistence persist-records
Sys::Persistent Connections
Total records returned: 0
so, you may have to manually lookup and add persistence record in the irule.
e.g.
config
root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm rule qux
ltm rule qux {
when CLIENT_ACCEPTED {
if { [persist lookup source_addr [IP::client_addr]] ne "" } {
persist source_addr 14400
} else {
pool foo member 200.200.200.101 80
}
}
when SERVER_CONNECTED {
persist add source_addr [IP::client_addr] 14400
}
when LB_FAILED {
LB::reselect pool foo
}
}
test
[root@centos1 ~] curl -I http://172.28.24.10
HTTP/1.1 200 OK
Date: Thu, 21 Aug 2014 01:47:03 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Sun, 09 Feb 2014 08:39:51 GMT
ETag: "41879c-59-2a9c23c0"
Accept-Ranges: bytes
Content-Length: 89
Content-Type: text/html; charset=UTF-8
persistence record
root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) show ltm persistence persist-records
Sys::Persistent Connections
source-address 172.28.24.1 172.28.24.10:80 200.200.200.101:80 (tmm: 0)
source-address 172.28.24.1 172.28.24.10:80 200.200.200.101:80 (tmm: 1)
Total records returned: 2
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
