Inbound Load Balancing is not balanced
- 
 I've been searching the forums and haven't found anything that addresses this issue. Basically I have pfSense in front of 3 servers (2 webservers and 1 db server). I want to load balance HTTP and HTTPS traffic that hits the 1 public IP of pfsense, and send it to the 2 webservers. I've setup http and https pools, as well as virtual servers and firewall rules, but the problem is that when I hit the public IP I always end up on the same webserver (I have the index page show the name). Also I don't have sticky sessions turned on, and I can hit each webserver individually, so one isn't down. Here is the process I took. What could be wrong? 1. Services -> Load Balancer -> New 
 1a. Name: Http Pool
 1b. Description: Http Pool
 1c. Type: Server
 1d. Behavior: Load Balancing
 1e. Port: 80
 1f. Monitor: TCP
 1g. Added the 2 webservers to the pool: 10.0.0.2, 10.0.0.32. Services -> Load Balancer -> New 
 2a. Name: Https Pool
 2b. Description: Https Pool
 2c. Type: Server
 2d. Behavior: Load Balancing
 2e. Port: 443
 2f. Monitor: TCP
 2g. Added the 2 webservers to the pool: 10.0.0.2, 10.0.0.33. Services -> Load Balancer -> Virtual Servers -> New 
 3a. Name: Virtual HTTP
 3b. Description: Virtual HTTP
 3c. IP Address: XXX.XXX.XXX.XXX (public IP of pfsense)
 3d. Virtual Server Pool: HTTP Pool
 3e. Pool Down Server: XXX.XXX.XXX.XXX (another public ip for now)4. Services -> Load Balancer -> Virtual Servers -> New 
 4a. Name: Virtual HTTPS
 4b. Description: Virtual HTTPS
 4c. IP Address: XXX.XXX.XXX.XXX (public IP of pfsense)
 4d. Virtual Server Pool: HTTPS Pool
 4e. Pool Down Server: XXX.XXX.XXX.XXX (another public ip for now)5. Firewall -> Aliases -> New 
 4a. Name: webcluster
 4b. Description: webcluster
 4c. Type: Host(s)
 4d. Host(s): 10.0.0.2, 10.0.0.36. Firewall -> Aliases -> New 
 5a. Name: webports
 5b. Description: webports
 5c. Type: Port(s)
 5d. Port(s): 80, 4437. Firewall -> Rules -> New 
 7a. Action: Pass
 7b. Interface: WAN
 7c. Protocol: TCP
 7d. Source: Any
 7e. Source OS: Any
 7f. Destination: Type: Single Host or Alias, Address: webcluster
 7g. Destination port range: from: webports, to: (blank)Thanks to anyone in advance. 
- 
 7h: gateway: your_balancing_pool You have to tell the rule on the WAN that it should use the balancing pool as gateway and not * 
- 
 Ok, I just set the gateway to the balancing pool and the problem still appears to be the same. I set the firewall rules to be logged, and the log just says that it is directing the traffic to that one server. Here is the modification I made: 7. Firewall -> Rules -> New 
 7a. Action: Pass
 7b. Interface: WAN
 7c. Protocol: TCP
 7d. Source: Any
 7e. Source OS: Any
 7f. Destination: Type: Single Host or Alias, Address: webcluster
 7g. Destination port range: from: webports, to: (blank)
 7h. Gateway: HTTP Pool8. Firewall -> Rules -> New 
 8a. Action: Pass
 8b. Interface: WAN
 8c. Protocol: TCP
 8d. Source: Any
 8e. Source OS: Any
 8f. Destination: Type: Single Host or Alias, Address: webcluster
 8g. Destination port range: from: webports, to: (blank)
 8h. Gateway: HTTPS Pool
- 
 What does your poolstatus report for the servers? 
- 
 Status -> Load Balancer -> Pools 
 Shows no pools at all, only the column headings are shown in the table with no rows of data.Status -> Load Balancer -> Virtual Servers 
 Shows the HTTP pool, and the HTTPS pool, Each server in each pool is shown as "online" in a green background color.I had shut down all the servers and booted them back up again, and the very first time I hit the public IP it did direct to webserver 1, then I refreshed and it directed to webserver 2. After that I can't get anything but webserver 2. I did check again, and "sticky sessions" are not turned on. 
- 
 Just a little more information on the situation. I had both webservers up (web1 and web2). Both were online in the Virtual Server status page, so I took web2 down, and got directed to web1. In the status page web2 was shown as offline. Then I brought web2 backup and when it was shown as online, I refreshed the public IP and got directed to web2 again. I did the same test taking web1 down and the only indication that I could see that it was down was its offline status, otherwise from hitting the public ip I was always directed to web2 as I had been when web1 was online. Here are snippets of the config relating to the setup: <aliases><alias><name>webcluster</name> <address>10.0.0.2 10.0.0.3</address> <descr>web server cluster used for HTTP and HTTPS</descr> <type>host</type> <detail>web1||web2||</detail></alias> <alias><name>webports</name> <address>80 443</address> <descr>ports for webservers HTTP and HTTPS</descr> <type>port</type> <detail>HTTP||HTTPS||</detail></alias></aliases> <rule><type>pass</type> <interface>wan</interface> <max-src-nodes><max-src-states><statetimeout><statetype>keep state</statetype> <os><protocol>tcp</protocol> <source> <any><destination><address>webcluster</address> <port>webports</port></destination> <log><descr>Allow web traffic to webcluster</descr> <gateway>balance HTTP</gateway></log></any></os></statetimeout></max-src-states></max-src-nodes></rule> <rule><type>pass</type> <interface>wan</interface> <max-src-nodes><max-src-states><statetimeout><statetype>keep state</statetype> <os><protocol>tcp</protocol> <source> <any><destination><address>webcluster</address> <port>webports</port></destination> <log><descr>Allow web traffic to webcluster on webports</descr> <gateway>balance HTTPS</gateway></log></any></os></statetimeout></max-src-states></max-src-nodes></rule> <load_balancer><lbpool><type>server</type> <behaviour>balance</behaviour> <monitorip><name>balance HTTP</name> <desc>balance HTTP from WAN to LAN cluster</desc> <port>80</port> <servers>10.0.0.2</servers> <servers>10.0.0.3</servers> <monitor>TCP</monitor></monitorip></lbpool> <lbpool><type>server</type> <behaviour>balance</behaviour> <monitorip><name>balance HTTPS</name> <desc>balance HTTPS from WAN to LAN cluster</desc> <port>443</port> <servers>10.0.0.2</servers> <servers>10.0.0.3</servers> <monitor>TCP</monitor></monitorip></lbpool> <virtual_server><name>Virtual HTTP</name> <desc>virtual server for HTTP server cluster</desc> <pool>balance HTTP</pool> <port>80</port> <sitedown>192.168.0.5</sitedown> <ipaddr>192.168.0.90</ipaddr></virtual_server> <virtual_server><name>Virtual HTTPS</name> <desc>virtual server for HTTPS server cluster</desc> <pool>balance HTTPS</pool> <port>443</port> <sitedown>192.168.0.58</sitedown> <ipaddr>192.168.0.90</ipaddr></virtual_server></load_balancer>
- 
 I have to say I'm having a similar issue with load balancing. This morning is the first time I have really played with it. Here is my setup ina nutshell :- 2 firewalls in a carp cluster, static public IPs on the WAN, static public IPs on DMZ, and Private IPs on LAN. NAT is only used for the LAN -> WAN connection. The DMZ servers can route to special ports / IPs on the LAN I set up a pool containing 2 LAN IPs and setup a virtual server on the LAN carp address. The DMZ connect to the virtual server to process some fast-cgi stuff. I added a rule on the DMZ interface to use the POOL as the gateway as suggested by GruensFroeschli (although this feels more like its for outbound load balancing of WAN connections, not inbound server balancing?). Sticky connections is off. The server always connects to one backend server (POOL is set to load balance, not failover). If I stop the service on the LAN IP thats getting all the connections, the first couple of connections fail, then they start going to the second LAN IP. After starting the service on the first LAN IP again, the next connection continues with the second LAN IP, then after that all connections revert back to the first LAN IP again. I'd like to :- a) Have it share the connections round robin style against the two LAN IPs b) When one does go down, have all connections seamlessly go directly to the second, not have a couple of failures like I see at the moment. Is this possible? Regards Ben 
