Version 2 of the Vector source/sink released
We’ve released a new major version (v2
) of our vector
source/sink
components. This release resolves several issues and limitations we experienced
with our previous (v1
) TCP-based implementation of these two components:
vector
sink does not work in k8s with dynamic IP addresses (#2070)- Allow for HTTP in the vector source and sinks (#5124)
- Allow Vector Source and Sink to Communicate over GRPC (#6646)
- RFC 5843 - Encoding/Decoding for Vector to Vector Communication (#6032)
The new version transitions to using gRPC over HTTP as its communication protocol, which resolves those limitations.
To allow operators to transition at their leisure, this new release of Vector
still defaults to v1
. In 0.20.0
we’ll require operators to explicitly state
which version they want to use, but continue to support v1
. In 0.22.0
we’ll
drop v1
completely, and default to v2
. We will also no longer require you to
explicitly set the version since there will only be one supported going forward.
If you want to opt in to the new (stable!) v2
version, you can do so as
follows:
[sinks.vector]
type = "vector"
+ version = "2"
[sources.vector]
type = "vector"
+ version = "2"
There are a couple of things to be aware of:
Removed options
There are some configuration options that are no longer valid with version 2 of the source and sink:
vector
source:keepalive
andreceive_buffer_bytes
vector
sink:keepalive
andsend_buffer_bytes
As these were specific to the TCP-based version 1 of the protocol.
Upgrade both the source and sink
You have to upgrade both the source and sink to v2
, or none at all,
you cannot update one without updating the other. Doing so will result in a loss
of events.
Zero-downtime deployment
If you want to do a zero-downtime upgrade to v2
, you’ll have to introduce the
new source/sink versions next to the existing versions, before removing the
existing one.
First, deploy the configuration that defines the source:
[sources.vector]
address = "0.0.0.0:9000"
type = "vector"
+ version = "1"
+ [sources.vector]
+ address = "0.0.0.0:5000"
+ type = "vector"
+ version = "2"
Then, deploy the sink configuration, switching it over to the new version:
[sinks.vector]
- address = "127.0.1.2:9000"
+ address = "127.0.1.2:5000"
type = "vector"
+ version = "2"
Once the sink is deployed, you can do another deploy of the source, removing the old version:
- [sources.vector]
- address = "0.0.0.0:9000"
- type = "vector"
- version = "1"
-
[sources.vector]
address = "0.0.0.0:5000"
type = "vector"
version = "2"
That’s it! You are now using the new transport protocol for Vector-to-Vector communication.