Browse Source

Redmine 108967

OBT-SYSADM\tomishinets 6 years ago
parent
commit
3e19a0097c
2 changed files with 25 additions and 1 deletions
  1. 4 0
      docker-entrypoint.sh
  2. 21 1
      healthcheck.sh

+ 4 - 0
docker-entrypoint.sh

@@ -16,6 +16,10 @@ while [ $? -ne 0 ]; do
   nslookup tasks.${ADMIN_HOST}.${APPNET}
 done
 
+# See Redmine 108967
+admin_ip=$(dig ${ADMIN_HOST}.${APPNET} +short)
+echo ${admin_ip} > /tmp/admin_ip
+
 # Для добавления логирования manager memcached. Redmine 107228
 #sed -i "s/CATALINA_OPTS=\"\$CATALINA_OPTS \$JPDA_OPTS\"/CATALINA_OPTS=\"\$CATALINA_OPTS \$JPDA_OPTS -Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.SunLogger\"/" /opt/tomcat/bin/catalina.sh
 sed -i "s/DB_CLUSTER/\"${DB_CLUSTER}\"/" /etc/web-laboratory/application.conf

+ 21 - 1
healthcheck.sh

@@ -9,4 +9,24 @@ if (( curtime-containerstart < 180 )); then
 fi
 
 curl -f 127.0.0.1:8090/login || exit 1
-#curl -f -H 'Host:labportal.infoclinica.ru' 127.0.0.1:8090/login
+
+# Проверяем наличие файла с переменной time_to_dead
+if [ -f /tmp/dead ];then
+  if (( ${curtime} > $(cat /tmp/dead) ));then kill 1;fi
+else
+# Определяем изменился ли адрес админки
+  ping -c3 $(cat /tmp/admin_ip)
+  if [[ $? -ne 0 ]]; then
+    new_admin_ip=$(dig +short ${ADMIN_HOST}.${APPNET})
+    if [[ ${new_admin_ip} != $(cat /tmp/admin_ip) ]];then
+      ping -c3 ${new_admin_ip} || exit 0
+    fi
+# Вычисляем адреса task'ов и сортируем их
+    sorted=($(echo $(dig tasks.${SERVICE_NAME}.${APPNET} +short)|tr " " "\n"|sort -n))
+    for (( i=0; i < ${#sorted[*]}; i++ ))
+    do
+      [[ $(ip a | grep ${sorted[${i}]}) ]] && echo $((${i}*180+$(date +%s)+40)) > /tmp/dead
+    done
+  fi
+fi
+exit 0