Добавление Sentinel ANNOUNCE_IP после запуска контейнера через entrypoint.sh - PullRequest
0 голосов
/ 10 октября 2019

Режим роя Docker сложен, когда дело доходит до IP-адресов, поскольку IP-адрес, который он показывает, не обязательно тот, который используется. Это сбивает с толку Сентинеля в режиме роя. Чтобы обойти это, я добавляю шаги к sentinel-entrypoint к ANNOUNCE_IP после того, как контейнер в up и ему назначен его IP.

Я добавил следующее к sentienl-entrypoint.sh:

ANNOUNCE_IP=$(awk "END{print $1}" /etc/hosts)
echo $ANNOUNCE_IP

if [ -n "$ANNOUNCE_IP" ]; then
  echo "sentinel announce-ip $ANNOUNCE_IP" >> /usr/local/bin/sentinel.conf
fi

Когдапри запуске контейнеров я вижу в журнале следующее:

port 26379
dir /tmp
sentinel monitor docker-cluster redis_1 6379 3
sentinel down-after-milliseconds docker-cluster 5000
sentinel parallel-syncs docker-cluster 1
sentinel failover-timeout docker-cluster 5000
0

1:X 10 Oct 2019 16:26:55.426 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:X 10 Oct 2019 16:26:55.426 # Redis version=5.0.6, bits=64, commit=00000000, modified=0, pid=1, 
just started
1:X 10 Oct 2019 16:26:55.426 # Configuration loaded
1:X 10 Oct 2019 16:26:55.427 * Running mode=sentinel, port=26379.
1:X 10 Oct 2019 16:26:55.427 # WARNING: The TCP backlog setting of 511 cannot be enforced because 
/proc/sys/net/core/somaxconn is set to the lower value of 128.
1:X 10 Oct 2019 16:26:55.432 # Sentinel ID is 6c81c967eeed77e513166491ee0e6b989f261c74
1:X 10 Oct 2019 16:26:55.432 # +monitor master docker-cluster 10.0.0.159 6379 quorum 3
1:X 10 Oct 2019 16:26:55.433 * +slave slave 10.0.0.13:6379 10.0.0.13 6379 @ docker-cluster 
10.0.0.159 6379
1:X 10 Oct 2019 16:27:00.450 # +sdown slave 10.0.0.13:6379 10.0.0.13 6379 @ docker-cluster 
10.0.0.159 6379

По неизвестной причине IP-адрес отображается как 0, но когда я вхожу в контейнер и выполняю ту же команду, я получаю IP-адрес контейнера. Есть идеи?

...