[[ls-to-ls]]
== Logstash-to-Logstash communication

{ls}-to-{ls} communication is available if you need to have one {ls} instance communicate with another {ls} instance. 
Implementing Logstash-to-Logstash communication can add complexity to your environment, but you may need it if the data path crosses network or firewall boundaries. 
However, we suggest you don't implement unless it is strictly required.

NOTE: If you are looking for information on connecting multiple pipelines within
one Logstash instance, see <<pipeline-to-pipeline>>.

Logstash-to-Logstash communication can be achieved in one of two ways: 

* <<native-considerations,Logstash output to Logstash Input>>
* <<lumberjack-considerations,Lumberjack output to Beats input>>

[[native-considerations]]*Logstash to Logstash considerations*

This is the preferred method to implement Logstash-to-Logstash. It replaces <<ls-to-ls-http>> and has these considerations:

* It relies on HTTP as the communication protocol between the Input and Output.
* It supports multiple hosts, providing high availability by load balancing equally amongst the multiple destination hosts.
* No connection information is added to events.

Ready to see more configuration details? See <<ls-to-ls-native>>.

[[lumberjack-considerations]]*Lumberjack-Beats considerations*

Lumberjack output to Beats input has been our standard approach for {ls}-to-{ls} communication, but our recommended approach is now <<ls-to-ls-native>>.
Before you implement the Lumberjack to Beats configuration, keep these points in mind: 

* Lumberjack to Beats provides high availability, but does not provide load balancing. 
The Lumberjack output plugin allows defining multiple output hosts for high availability, but instead of load-balancing between all output hosts, it falls back to one host on the list in the case of failure.
* If you need a proxy between the Logstash instances, TCP proxy is the only option.
* There's no explicit way to exert back pressure back to the beats input.

Ready to see more configuration details? See <<ls-to-ls-lumberjack>>.

include::ls-ls-lumberjack.asciidoc[]
include::ls-ls-http.asciidoc[]
include::ls-ls-native.asciidoc[]
