|
@@ -474,10 +474,16 @@ def generate_worker_files(environ, config_path: str, data_dir: str):
|
|
|
|
|
|
# Determine the load-balancing upstreams to configure
|
|
|
nginx_upstream_config = ""
|
|
|
+
|
|
|
+ # At the same time, prepare a list of internal endpoints to healthcheck
|
|
|
+ # starting with the main process which exists even if no workers do.
|
|
|
+ healthcheck_urls = ["http://localhost:8080/health"]
|
|
|
+
|
|
|
for upstream_worker_type, upstream_worker_ports in nginx_upstreams.items():
|
|
|
body = ""
|
|
|
for port in upstream_worker_ports:
|
|
|
body += " server localhost:%d;\n" % (port,)
|
|
|
+ healthcheck_urls.append("http://localhost:%d/health" % (port,))
|
|
|
|
|
|
# Add to the list of configured upstreams
|
|
|
nginx_upstream_config += NGINX_UPSTREAM_CONFIG_BLOCK.format(
|
|
@@ -510,6 +516,13 @@ def generate_worker_files(environ, config_path: str, data_dir: str):
|
|
|
worker_config=supervisord_config,
|
|
|
)
|
|
|
|
|
|
+ # healthcheck config
|
|
|
+ convert(
|
|
|
+ "/conf/healthcheck.sh.j2",
|
|
|
+ "/healthcheck.sh",
|
|
|
+ healthcheck_urls=healthcheck_urls,
|
|
|
+ )
|
|
|
+
|
|
|
# Ensure the logging directory exists
|
|
|
log_dir = data_dir + "/logs"
|
|
|
if not os.path.exists(log_dir):
|