mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-01 22:45:18 +00:00
[#1892] Fixed sphinx error, rewording
This commit is contained in:
@@ -7,8 +7,8 @@ Installation
|
|||||||
Packages
|
Packages
|
||||||
========
|
========
|
||||||
|
|
||||||
ISC publishes native RPM, deb, and APK packages, along with the tarballs
|
ISC publishes native RPM, deb, and APK packages, along with the tarballs
|
||||||
with the source code. The packages are available on
|
with the source code. The packages are available on
|
||||||
`Cloudsmith <https://cloudsmith.io/~isc/repos/>`_ at
|
`Cloudsmith <https://cloudsmith.io/~isc/repos/>`_ at
|
||||||
https://cloudsmith.io/~isc/repos. The native packages can be downloaded
|
https://cloudsmith.io/~isc/repos. The native packages can be downloaded
|
||||||
and installed using the system available in a specific distribution (such
|
and installed using the system available in a specific distribution (such
|
||||||
@@ -426,7 +426,7 @@ external dependencies, MySQL, PostgreSQL, and Cassandra support are
|
|||||||
disabled by default and only memfile is available. Support for the
|
disabled by default and only memfile is available. Support for the
|
||||||
optional external database backend must be explicitly included when Kea
|
optional external database backend must be explicitly included when Kea
|
||||||
is built. This section covers the building of Kea with one of the
|
is built. This section covers the building of Kea with one of the
|
||||||
optional backends and the creation of the lease database. (*Note that
|
optional backends and the creation of the lease database. (* Note that
|
||||||
as of Kea 1.9.9 support for Cassandra is deprecated and will be removed
|
as of Kea 1.9.9 support for Cassandra is deprecated and will be removed
|
||||||
in a future version.)
|
in a future version.)
|
||||||
|
|
||||||
@@ -644,8 +644,8 @@ and 1548). Be sure to replace ens4 with the specific interface name.
|
|||||||
Deprecated Features
|
Deprecated Features
|
||||||
===================
|
===================
|
||||||
|
|
||||||
This section lists significant features that were supported in the past that have been,
|
This section lists significant features that were supported in the past that have been,
|
||||||
or will be removed. We will try to deprecate features before removing them to signal
|
or will be removed. We will try to deprecate features before removing them to signal
|
||||||
to current users to plan a migration. New users should not rely on deprecated features.
|
to current users to plan a migration. New users should not rely on deprecated features.
|
||||||
|
|
||||||
Cassandra (CQL) Support
|
Cassandra (CQL) Support
|
||||||
@@ -657,14 +657,14 @@ traction with users, particularly compared to the level of interest in and deplo
|
|||||||
the alternatives, MySQL and PostgreSQL.
|
the alternatives, MySQL and PostgreSQL.
|
||||||
|
|
||||||
The non-relational nature of Cassandra makes it exceedingly difficult to implement more complex
|
The non-relational nature of Cassandra makes it exceedingly difficult to implement more complex
|
||||||
DHCP features, such as the configuration backend. The configuration backend requires over 20
|
DHCP features, such as the configuration backend. The configuration backend requires over 20
|
||||||
tables of tighly related data that change over time and need to be kept in sync. With the
|
tables of tighly related data that change over time and need to be kept in sync. With the
|
||||||
Cassandra philosophy of data duplication, this would require creating and maintaining a massive
|
Cassandra philosophy of data duplication, this would require creating and maintaining a massive
|
||||||
number of tables. To be specific, there are 36 different types of `get` queries in the DHCPv4
|
number of tables. To be specific, there are 36 different types of `get` queries in the DHCPv4
|
||||||
code for the MySQL Configuration Backend. In the worst case, where each query required its
|
code for the MySQL Configuration Backend. In the worst case, where each query required its
|
||||||
own table, this implies a duplication factor of over 70. This would clearly be a very bad design.
|
own table, this implies a duplication factor of over 70. This would clearly be a very bad design.
|
||||||
When we created the initial MySQL and PostgreSQL designs for the Configuration Backend, we also
|
When we created the initial MySQL and PostgreSQL designs for the Configuration Backend, we also
|
||||||
attempted to come up with a design for Cassandra. That attempt was a complete failure. We
|
attempted to come up with a design for Cassandra. That attempt was a complete failure. We
|
||||||
assessed that Cassandra is simply not the right technology for this task.
|
assessed that Cassandra is simply not the right technology for this task.
|
||||||
|
|
||||||
Another problem with Cassandra is performance. In our performance tests MySQL and PostgreSQL
|
Another problem with Cassandra is performance. In our performance tests MySQL and PostgreSQL
|
||||||
@@ -673,21 +673,27 @@ for MySQL or PostgreSQL performance.
|
|||||||
|
|
||||||
Another concern with Cassandra is its complicated setup. As of June 2021, Cassandra is not
|
Another concern with Cassandra is its complicated setup. As of June 2021, Cassandra is not
|
||||||
available in many major distributions. It requires custom installation, with native packages
|
available in many major distributions. It requires custom installation, with native packages
|
||||||
now limited to Debian only. The quick introduction seems to favor Docker containers as a
|
now limited to Debian only. The quick introduction seems to favor Docker containers as a
|
||||||
replacement. The Debian packages available require Python 2 (which reached end of life at
|
replacement. The Debian packages available require Python 2 (which reached end of life at
|
||||||
1 Jan 2020) and will uninstall some python 3 packages. This is very risky step in a production
|
1 Jan 2020) and will uninstall some python 3 packages. This is very risky step in a production
|
||||||
environment, because it removes the current 3.8 or 3.9 python and installs an old, unsupported
|
environment, because it removes the current 3.8 or 3.9 python and installs an old, unsupported
|
||||||
version. The Cassandra software is written in Java, so it is unclear why it even does anything
|
version. Support for python 3 is only available in alpha release of upcoming Cassandra 4.0,
|
||||||
with Python.
|
which is not released yet as of June 2021. The user has a tough choice between running antiquated
|
||||||
|
version past its end of life or running unreleased alpha software. Neither option is reasonable
|
||||||
|
in production environment.
|
||||||
|
|
||||||
To use C++ bindings (Kea is written in C++), a data driver is required. For a while, around
|
Cassandra is also very picky about the Java version. For example, on modern systems such as
|
||||||
|
Ubuntu 21.04, it simply doesn't start and produces no logs. After running the Cassandra manually,
|
||||||
|
it produces a cryptic `Improperly specified VM option 'ThreadPriorityPolicy=42'` error message.
|
||||||
|
This is an obscure information that the Java version is too new (11.x) and needs to be downgraded
|
||||||
|
(to 8.x).
|
||||||
|
|
||||||
|
To use C++ bindings (Kea is written in C++), a data driver is required. For a while, around
|
||||||
2020 there was a message about it being in maintenance mode, but as of now (June 2021) this
|
2020 there was a message about it being in maintenance mode, but as of now (June 2021) this
|
||||||
message disappeared. The data driver does not use the standard `pkg-config` approach and requires
|
message disappeared. For a long time the data driver didn't not use the standard `pkg-config`
|
||||||
custom hacking. Cassandra itself requires a Java JVM to run. In the past, we experienced serious
|
approach and required custom hacking with regards to the software detection. Compared to
|
||||||
problems with the Java VM machine versioning, which impedes Cassandra operation and produces
|
MySQL and PostgreSQL, which are widely available in all popular Linux and BSD distributions,
|
||||||
cryptic error messages. Compared to MySQL and PostgreSQL, which are widely available in all popular
|
setting up Cassandra is complex and the complexity is not decreasing over time.
|
||||||
Linux and BSD distributions, setting up Cassandra is complex and the complexity is not decreasing
|
|
||||||
over time.
|
|
||||||
|
|
||||||
Cassandra is also an ongoing maintenance burden. As we introduce new features to Kea, such
|
Cassandra is also an ongoing maintenance burden. As we introduce new features to Kea, such
|
||||||
as the ability to get database statistics that are synced between multiple Kea instances sharing
|
as the ability to get database statistics that are synced between multiple Kea instances sharing
|
||||||
@@ -696,6 +702,6 @@ Porting solutions between MySQL and PostgreSQL is frequently very easy but is al
|
|||||||
problem with Cassandra. That is not a Cassandra flaw on its own, the core problem here is that
|
problem with Cassandra. That is not a Cassandra flaw on its own, the core problem here is that
|
||||||
it is different than the other solutions Kea supports.
|
it is different than the other solutions Kea supports.
|
||||||
|
|
||||||
For these reasons, we are deprecating Cassandra support as of Kea 1.9.9. The feature will
|
For these reasons, we are deprecating Cassandra support as of Kea 1.9.9. The feature will
|
||||||
function as before in the Kea 2.0.x and 2.1.x series, but will print a warning. We plan to
|
function as before in the Kea 2.0.x and 2.1.x series, but will print a warning. We plan to
|
||||||
remove the feature entirely in a future release, possibly as soon as Kea 2.2.0.
|
remove the feature entirely in a future release, possibly as soon as Kea 2.2.0.
|
||||||
|
Reference in New Issue
Block a user