IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
This is now achieved by defining functions extra_header() and
extra_footer().
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Use a variable to allow easy change of this string in case future
logging changes modify the timestamp format or do not support
timestamping.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Volker Lendecke <vl@samba.org>
srcimbl gets changed on every iteration of the loop. The value that
should be stored for the new imbalance of the source node is
minsrcimbl.
To help diagnose this, added some extra debug that can be left in.
The extra debug changes the output of a couple of tests. Note that
the resulting IP allocations in those tests is unchanged - only the
debug output is changed.
Also add some new tests that illustrates the bug.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Using a variable is too fragile, so use a function instead.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Michael Adam <obnox@samba.org>
2 tests to show a bad result and a 3rd test for the fix.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit ef35c8889d90220929e48e66eb62da9ea2025ede)
Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit 7cf63722873a6a7baafd77aa3d8a1989b221dee9)
This really needs to be per-node. The rename is because nodes with
this tunable switched on should drop IPs if they become unhealthy (or
disabled in some other way).
* Add new flag NODE_FLAGS_NOIPHOST, only used in recovery daemon.
* Enhance set_ipflags_internal() and set_ipflags() to setup
NODE_FLAGS_NOIPHOST depending on setting of NoIPHostOnAllDisabled
and/or whether nodes are disabled/inactive.
* Replace can_node_servce_ip() with functions can_node_host_ip() and
can_node_takeover_ip(). These functions are the only ones that need
to look at NODE_FLAGS_NOIPTAKEOVER and NODE_FLAGS_NOIPHOST. They
can make the decision without looking at any other flags due to
previous setup.
* Remove explicit flag checking in IP allocation functions (including
unassign_unsuitable_ips()) and just call can_node_host_ip() and
can_node_takeover_ip() as appropriate.
* Update test code to handle CTDB_SET_NoIPHostOnAllDisabled.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit 1308a51f73f2e29ba4dbebb6111d9309a89732cc)
Implemented for CTDB_SET_NoIPTakeover.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit a1addd89fd9c0390912604097acd028cc24d3483)
Neither basic_failback() nor lcp2_failback() unassign IPs anymore, so
there's no point looping back that far.
Also fix a unit test that now fails because looping back to handle
unassigned IPs is no longer logged.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit c09aeaecad7d3232b1c07bab826b96818756f5e0)
3 tests should assign IPs to all nodes.
3 tests set NoIPTakeoverOnDisabled=1 and should drop all IPs.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit edda58a45915494027785608126b5da7c98fee85)
Default to LCP2, like ctdbd. Also support "det" for deterministic
IPs.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 20631f5f29859920844dd8f410e24917aabd3dfd)
Move some options from eventscripts/run_tests.sh to scripts/run_tests.
Remove the former.
Move some functions from eventscripts/scripts/local.sh to
scripts/unit.sh.
Both of these are modified during move so they are no longer
eventscript-specific.
Tweak */local.sh so that the new functions in unit.sh are used.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 7ff485687891732074c9fc9998502ca197663d02)
A recent change in the deamon's (i.e. real) IP allocation algorithm
uses qsort(3). This makes it very difficult to get the same results
in Python, since qsort's behaviour on identical keys is undefined.
Add a -e option to run "../bin/ctdb_takeover_tests ctdb_takeover_run_core"
instead of the internal Python algorithm. We pass the current cluster
state and read it back from the output of the test program.
This is currently a rough hack. Perhaps it'll be improved later...
:-)
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit eed3f4988290bbe317a7aaa6f61826676dd8365a)
The default in this script is still deterministic IPs. The LCP2
option should really turn off deterministic IPs.
Also fix a typo...
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit c378a059b35fcc9955215a0095826c919d42153c)
A recent fix made the LCP2 algorithm try harder find a candidate
source node. The debug output shows extra output because it is trying
harder so we accommodate that.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 9a6f918bf6db79c1f8c53c0df23d47b73c117ea2)
There are 4 IPs across 2 nodes and 2 addresses across 2 other nodes.
If one of the latter nodes is unhealthy and then becomes healthy
again, an IP isn't failed back. This is because the nodes in the 1st
group are >= unbalanced then the nodes in the 2nd group.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 1d26e7cff6292fcbf63efc4628ffbb63b6f1f73c)
This makes IPv4 addresses comparable with IPv6 but reduces the overall
effectiveness of the algorithm. The alternative would be to treat
these addresses separately while trying to keep all the IPs in overall
balance... which is basically the problem that LCP2 solves. :-)
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 3a7624f9d468b99714a7b6a45313f9e7f66011ed)
This time in the stats summary.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit aabb2507dacc63ae026e6c99704a2fb79950e82c)
When there are IP groups, do not terminate when the overall cluster
goes out of balance.
Also make explicit that grat_ip_moves is an integer not a boolean, so
only terminate if it is greater than 0.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 0899f14b1483682d73d1ee2d2419db54ffeadc4b)
It had out-of-date information and a typo.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 5d0d2b8b528414c859da0e6fd5959321db33608b)
This is likely to cause many more state changes for nodes. In this
mode the odds of a failover are applied to determine whether a state
change occurs for each node. If no state change occurs then the
process is repeated.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit b7c42bff9457ec8294b04245af8e3b6010707d1a)
Print the LCP imbalance metric after the list of IPs.
To make this more sensible, but most of the printing logic into the
Node class.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 2e680e6b421d72cf2d217d3c3c1564da0bb19633)
The public addresses passed to the node constructer can be nested 2
levels. Each sub-list is an IP group for which separate balance
analysis is done. However, the public address list is flattened and
the actual IP assignment algorithm doesn't know about IP groups.
This allows extra statistics to be printed and an extra termination
condition to be added for unbalanced IP groups.
Most code from calculate_imbalance() is factored out to a a new
function imbalance_for_ips(), which calculates imbalance for the given
IPs. calculate_imbalance() now returns the overall imbalance and a
list containing imbalances for each IP group. To support this
node_ip_coverage() now takes an optional list of IPs to check coverage
within.
This also adds extra output to show statistics for the LCP2 imbalance
metric.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 701395087156b2a5c7be1564897b796df35b69ec)
An imbalance exceeding the hard limit, as specified by -H (and
defaulting to 1), now causes termination when -x is specified.
Imbalances exceeding the soft limit, as specified by -S (and
defaulting to 1), are counted and printed in the statistics summary.
A side-effect is that imbalances less than 2 are no longer rounded
down to 0, since we want to see them in the stats.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit b5e9a4c50eedb8cc786c52af06352788ca25f51e)
Add -L/--lcp2 option and implement LCP2 algorithm as an alternative to
the basic non-deterministic algorithm.
Existing examples will break if used with LCP2 since it needs real IP
addresses.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 22b14e1a887f0479cc75ed9027af5cc24797f217)
The hacks were attempts at improving the deterministic IPs algorithm
but they didn't work.
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit 6034de0e24438e012f9f1d2065531b1ce467ac52)