Blame extensions/libxt_cluster.man

Packit 7b22a4
Allows you to deploy gateway and back-end load-sharing clusters without the
Packit 7b22a4
need of load-balancers.
Packit 7b22a4
.PP
Packit 7b22a4
This match requires that all the nodes see the same packets. Thus, the cluster
Packit 7b22a4
match decides if this node has to handle a packet given the following options:
Packit 7b22a4
.TP
Packit 7b22a4
\fB\-\-cluster\-total\-nodes\fP \fInum\fP
Packit 7b22a4
Set number of total nodes in cluster.
Packit 7b22a4
.TP
Packit 7b22a4
[\fB!\fP] \fB\-\-cluster\-local\-node\fP \fInum\fP
Packit 7b22a4
Set the local node number ID.
Packit 7b22a4
.TP
Packit 7b22a4
[\fB!\fP] \fB\-\-cluster\-local\-nodemask\fP \fImask\fP
Packit 7b22a4
Set the local node number ID mask. You can use this option instead
Packit 7b22a4
of \fB\-\-cluster\-local\-node\fP.
Packit 7b22a4
.TP
Packit 7b22a4
\fB\-\-cluster\-hash\-seed\fP \fIvalue\fP
Packit 7b22a4
Set seed value of the Jenkins hash.
Packit 7b22a4
.PP
Packit 7b22a4
Example:
Packit 7b22a4
.IP
Packit 7b22a4
iptables \-A PREROUTING \-t mangle \-i eth1 \-m cluster
Packit 7b22a4
\-\-cluster\-total\-nodes 2 \-\-cluster\-local\-node 1
Packit 7b22a4
\-\-cluster\-hash\-seed 0xdeadbeef
Packit 7b22a4
\-j MARK \-\-set-mark 0xffff
Packit 7b22a4
.IP
Packit 7b22a4
iptables \-A PREROUTING \-t mangle \-i eth2 \-m cluster
Packit 7b22a4
\-\-cluster\-total\-nodes 2 \-\-cluster\-local\-node 1
Packit 7b22a4
\-\-cluster\-hash\-seed 0xdeadbeef
Packit 7b22a4
\-j MARK -\-set\-mark 0xffff
Packit 7b22a4
.IP
Packit 7b22a4
iptables \-A PREROUTING \-t mangle \-i eth1
Packit 7b22a4
\-m mark ! \-\-mark 0xffff \-j DROP
Packit 7b22a4
.IP
Packit 7b22a4
iptables \-A PREROUTING \-t mangle \-i eth2
Packit 7b22a4
\-m mark ! \-\-mark 0xffff \-j DROP
Packit 7b22a4
.PP
Packit 7b22a4
And the following commands to make all nodes see the same packets:
Packit 7b22a4
.IP
Packit 7b22a4
ip maddr add 01:00:5e:00:01:01 dev eth1
Packit 7b22a4
.IP
Packit 7b22a4
ip maddr add 01:00:5e:00:01:02 dev eth2
Packit 7b22a4
.IP
Packit 7b22a4
arptables \-A OUTPUT \-o eth1 \-\-h\-length 6
Packit 7b22a4
\-j mangle \-\-mangle-mac-s 01:00:5e:00:01:01
Packit 7b22a4
.IP
Packit 7b22a4
arptables \-A INPUT \-i eth1 \-\-h-length 6
Packit 7b22a4
\-\-destination-mac 01:00:5e:00:01:01
Packit 7b22a4
\-j mangle \-\-mangle\-mac\-d 00:zz:yy:xx:5a:27
Packit 7b22a4
.IP
Packit 7b22a4
arptables \-A OUTPUT \-o eth2 \-\-h\-length 6
Packit 7b22a4
\-j mangle \-\-mangle\-mac\-s 01:00:5e:00:01:02
Packit 7b22a4
.IP
Packit 7b22a4
arptables \-A INPUT \-i eth2 \-\-h\-length 6
Packit 7b22a4
\-\-destination\-mac 01:00:5e:00:01:02
Packit 7b22a4
\-j mangle \-\-mangle\-mac\-d 00:zz:yy:xx:5a:27
Packit 7b22a4
.PP
Packit 7b22a4
\fBNOTE\fP: the arptables commands above use mainstream syntax. If you
Packit 7b22a4
are using arptables-jf included in some RedHat, CentOS and Fedora
Packit 7b22a4
versions, you will hit syntax errors. Therefore, you'll have to adapt
Packit 7b22a4
these to the arptables-jf syntax to get them working.
Packit 7b22a4
.PP
Packit 7b22a4
In the case of TCP connections, pickup facility has to be disabled
Packit 7b22a4
to avoid marking TCP ACK packets coming in the reply direction as
Packit 7b22a4
valid.
Packit 7b22a4
.IP
Packit 7b22a4
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose