-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Connection settings #3985
Connection settings #3985
Conversation
f23f4e3
to
2dde692
Compare
b617c53
to
c897016
Compare
deb84b2
to
766f226
Compare
To configure traffic encryption, you need to set the special :ref:`URI parameters <index-uri-several-params>` for a particular connection. | ||
The parameters can be set for the following ``box.cfg`` options and ``nex.box`` method: | ||
|
||
* :ref:`box.cfg.listen <cfg_basic-listen>` -- on the server side. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't we add it into the box.cfg
options description (and net.box
too)?
d06270d
to
9a658eb
Compare
9a658eb
to
15980fa
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have no strict objections here. There are thoughts around the URIs topic in my comments above, but I guess that you may want to move forward in smaller iterations and I'm OK with it.
cb5c4c6
to
ba20c30
Compare
ba20c30
to
f2df0e8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please see my thoughts about connections.
Skipped the authentication part as we discussed.
To communicate to and between cluster instances, Tarantool uses a :ref:`binary protocol <box_protocol>` called iproto. | ||
The corresponding :ref:`iproto <configuration_reference_iproto>` section in :ref:`YAML configuration <configuration>` lets you configure various connection settings: | ||
|
||
- One or several URIs used to listen for incoming requests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we explicitly map these settings to connection types (the first list on this page): which settings are used for which connections?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not exactly. iproto.listen
is used for all purposes: communicating between instances, administration using tt/TCM, and so on. Advertise URI is only applied to replication and sharding. In the new intro, I've converted the first list to a regular sentence. Looks like the list with connection settings is more important and the second list shouldn't add additional distraction.
Listen URI | ||
---------- | ||
|
||
To configure URIs used to listen for incoming requests, use the :ref:`iproto.listen <configuration_reference_iproto_listen>` configuration option. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a non-expert reader, I don't quite understand from this wording, what requests are we talking about. Are these data requests (select
from spaces)? Internal cluster requests? Or just any network requests from whoever connects to this URI?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point. I'm not sure that we should give examples of requests right here. From the intro, it should be clear a high-level idea on why connections are required. There are too many request types that can come from other instances and external systems: internal replication requests, sharding requests, data definition and data manipulation requests, and so on. I feel that concrete info should live in corresponding topics. A user can open the Binary protocol
section linked in a note to see a tons of request types :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't mean that we should describe all possible requests, but maybe provide general conceptual info in an explicit human-friendly form.
Like, this is the basic option. It is required on any instance to enable external connections to it
.
Also, we can add a navigating link to Advertise URI
by writing a sentence about the relation between the two URI types. Why do we need the two at all?
As an idea: we can expand the intro to explain all key entities in it (listen URI, advertise URI, secure connections) and then leave all subsections as is - just showing the usage examples.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Connection credentials | ||
~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
In the example below, the ``iproto.advertise.peer`` option is used to inform other replica set members that the ``replicator`` user should be used to connect to the current instance: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Above, these were cluster members
instead of replica set members
. Does this need a more detailed explanation? If it's obvious for readers - OK.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The behavior of iproto.advertise.peer
is a bit complicated. It advertises the instance to other replica set members. If iproto.advertise.sharding
is not specified, iproto.advertise.peer
is used to advertise the instance to a router and rebalancer. So, both are true if different contexts.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If
iproto.advertise.sharding
is not specified,iproto.advertise.peer
is used
I believe this should be written explicitly, I couldn't ever guess myself)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
052adf7
to
6291442
Compare
6291442
to
27a2e8b
Compare
8c569e5
to
b53b25f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
b53b25f
to
f4574a8
Compare
Main changes
Created a new
Connections
topic that describesiproto
settings:https://docs.d.tarantool.io/en/doc/3.0-connection-settings/concepts/configuration/configuration_connections/
Updated some descriptions in
iproto
reference:https://docs.d.tarantool.io/en/doc/3.0-connection-settings/reference/configuration/configuration_reference/#iproto
Removed the old
Traffic encryption
section fromSecurity hardening guide
:https://docs.d.tarantool.io/en/doc/3.0-connection-settings/enterprise/security/
Now this topic doesn't include how-to/reference information and describes only general recommendations. We can think about merging
Security hardening guide
with theSecurity audit
topic at some point.Removed duplicated information from the main
Configuration
topic and added the link to the newConnections
topic:https://docs.d.tarantool.io/en/doc/3.0-connection-settings/concepts/configuration/#connection-settings
Added several runnable samples:
iproto.listen
samples.Fixed links in other documents
Updated a link in the Getting Started guide:
https://docs.d.tarantool.io/en/doc/3.0-connection-settings/how-to/getting_started_db/#connecting-remotely
Updated links in TCM docs:
https://docs.d.tarantool.io/en/doc/3.0-connection-settings/reference/tooling/tcm/tcm_configuration_reference/#confval-storage.tarantool.ssl.key-file