Compare commits

..

1 Commits

Author SHA1 Message Date
Geoff Bourne
649ca92b14 [es] Port over Swarm compatible binding address lookup 2017-02-22 17:01:00 -06:00
3 changed files with 12 additions and 12 deletions

View File

@@ -14,7 +14,6 @@ COPY start /start
EXPOSE 9200 9300
ENV ES_HOME=/usr/share/elasticsearch-$ES_VERSION \
OPTS=-Dnetwork.host=_non_loopback_ \
DEFAULT_ES_USER=elasticsearch
RUN adduser -S -s /bin/sh $DEFAULT_ES_USER

View File

@@ -182,13 +182,14 @@ Using the Docker Compose file above, a value of `2` is appropriate when scaling
docker-compose scale master=3
## Auto transport/http discovery with Swarm Mode
## Multiple Network Binding, such as Swarm Mode
When using Docker Swarm mode (starting with 1.12), the overlay and ingress network interfaces are assigned
multiple IP addresses. As a result, it creates confusion for the transport publish logic even when using
the special value `_eth0_`.
When using Docker Swarm mode the container is presented with multiple ethernet
devices. By default, all global, routable IP addresses are configured for
Elasticsearch to use as `network.host`.
To resolve this, add
That discovery can be overridden by providing a specific ethernet device name
to `DISCOVER_TRANSPORT_IP` and/or `DISCOVER_HTTP_IP`, such as
-e DISCOVER_TRANSPORT_IP=eth0

View File

@@ -26,12 +26,11 @@ discoverIpFromLink() {
OPTS="$OPTS -Des.$mode.host=$ip"
}
if [ "$DISCOVER_TRANSPORT_IP" != "" ]; then
discoverIpFromLink $DISCOVER_TRANSPORT_IP transport
fi
if [ "$DISCOVER_HTTP_IP" != "" ]; then
discoverIpFromLink $DISCOVER_HTTP_IP http
fi
discoverAllGlobalIps() {
ips=`ipaddr show scope global|awk '$1 == "inet" { if (!match($2,"/32")) { gsub("/.*","",$2) ; addrs[length(addrs)] = $2 } } END { for (i in addrs) { if (i>0) printf "," ; printf addrs[i] } }'`
OPTS="$OPTS --network.host=$ips"
}
if [ -n "$CLUSTER" ]; then
OPTS="$OPTS -Des.cluster.name=$CLUSTER"
@@ -98,6 +97,7 @@ else
mkdir -p /conf/plugins
fi
discoverAllGlobalIps
mkdir -p /conf/scripts
echo "Starting Elasticsearch with the options $OPTS"