Closed alonsocamaro closed 7 years ago
Please list the virtual service and confirm you see:
persist {
source_addr {
default yes
}
}
If you do, please close the item.
This will enable persistence affinity based on the client source IP address. Traditionally at f5 this was called simple persistence.
For an explanation of simple persistence please reference:
Just a note: As for statefulness, the src_addr persistence profile has a default timeout of 180 seconds. For any connections from the same source IP address for that period, the load balancing decision will be overridden by the stateful persistence entry established when a client source IP address first created a connection with the virtual server. As you mention, the BIG-IP hash persistence profile using the IP Source as the hash key can provide persistence without a stateful timeout. Please let us know if you have a firm requirement for IP source persistence to a pool member which goes beyond 180 seconds. If you do we can consider changing the persistence method used. We'll label the issue an enhancement request.
Hi
Source persistence is not being applied:
root@(bigip1)(cfg-sync Not All Devices Synced)(Standby)(/Project_1bcf7ba13bcb496196d72f481bfebb5c)(tmos)# list ltm virtual ha-3
ltm virtual ha-3 {
destination 10.0.2.183:http
ip-protocol tcp
mask 255.255.255.255
partition Project_1bcf7ba13bcb496196d72f481bfebb5c
pool ha-5
profiles {
/Common/tcp { }
}
source 0.0.0.0/0
source-address-translation {
type automap
}
translate-address enabled
translate-port enabled
vs-index 11
}
I have checked this also happens in version 9.0.3
In the other hand, I find that by implementing a stateful / timer behavior is not what I would expect from a load balancing algorithm that it is expected to be based on IP address.
I have checked that haproxy/the reference implementation uses stateless/hashing algorithm. Here you have a couple of references: http://www.diogogmt.com/load-balancers and https://answers.launchpad.net/neutron/+question/271975
Moreover if a timer approach is desired then LBaaS SOURCE_IP session persistence is already in place
I find that if we are not stateless we will be eventually generating issues to the customers. My feeling is that they will not expect this behavior either.
The F5 agent fails to add source_addr persistence to the virtual server associated with the pool. This is a bug and will be fixed.
As a work around, users can include SOURCE_IP session persistence when creating their pool. For example:
neutron lbaas-pool-create --name pool1 --listener vip1 --lb-algorithm SOURCE_IP --protocol HTTP --session-persistence type=SOURCE_IP
When session-persistence is included in the pool create command, the F5 agent will add the a source_addr persistence profile to the virtual server associated with the pool. As noted in the discussion above, the profile /Common/source_addr has a timeout of 180 seconds by default, which may not be ideal.
OpenStack Release
Mitaka
Description
Hi
The following pool
Assigns the the least-connections-node LB method in the BIG-IP
without specifying a source based persistence method. This is not the expected behavior.
I find that the F5 way of achieving the expected LBaaSv2 spec would be by using source persistence using CARP. This would achieve the functionality in a stateless fashion
Many thanks
Agent Version
9.0.2
Operating System
Mirantis 9.0