Clusters
1. Equalizer has an idle timer for the established client connection, a connect timer to establish a server
connection, and an idle timer for the established server connection. Only one timeout is in use at any given
time. This is a summary of how timeouts are used when a client connects to Equalizer:
2. When a client successfully connects to a Virtual Cluster IP, the client timeout applies from the time the
connection is established until the client request headers are completely transmitted. Equalizer parses the
client's request, and verifies that the request is a valid HTTP request and that the information needed for
load balancing is obtained. In general, this happens at the time that the client headers are completed --
which is indicated by the client sending two blank lines for HTTP 1.0 or 1.1; one blank line for HTTP 0.9.
Once the headers are completely transmitted to Equalizer, the client timeout is no longer used.
3. As soon as the Equalizer is done examining the header data, it makes a connection to a server, as
determined by the load balancing policy, persistence, or a match rule hit. The amount of time that the
Equalizer tries to establish a connection to the server is the connect timeout. Once the server connection is
established, the connect timeout is no longer used.
4. After Equalizer establishes a connection with a server, the server timeout is the amount of time Equalizer
waits for the next bit of data from the server. Any response from the server restarts the server timeout.
The important distinction between the client timeout and the server timeout is that the client timeout is a “hard”
timeout -- the client has the number of seconds specified to transmit all of its headers to Equalizer before Equalizer
times out. This is done mainly for security considerations to prevent malicious clients from creating a large number
of partial connections and leaking data slowly over the connection, possibly causing resource exhaustion or other
undesirable effects on Equalizer.
The server timeout by contrast is a “soft” timeout -- the server has the number of seconds specified to send the next
piece of information (e.g., the next packet in the sequence). Whenever the client or the server sends a piece of
data on the connection, the server timeout is reset. This allows the server to send large data streams in small
pieces without timing out, and then close the connection once all the data is sent.
For example, when a client sends a POST operation in a request, the client timeout is used up until the time that
the POST headers have all been received. The connect timeout is used until a connection with the server is
established. Then, once the connection is established, the server timeout is used for the POST data itself and the
subsequent response from the server.
Note that there is the chance that a client will connect, send its headers, and then send continuous data to
Equalizer that repeatedly resets the server timeout. This vulnerability is usually avoided by setting a hard client
timeout on the application server itself (see "Cluster Connection Timeouts" on page 266).
The figure below summarizes the connection timeout parameters Equalizer uses for Layer 7 client and server
connections.
262
Copyright © 2013 Coyote Point Systems. A subsidiary of Fortinet, Inc.
Kommentare zu diesen Handbüchern