From c1f3b22bc9c813d2250e29fd02dadaf597134465 Mon Sep 17 00:00:00 2001 From: cruizba Date: Mon, 29 May 2023 16:46:07 +0200 Subject: [PATCH] deployment: Add script to update load balancer IPs in enterprise-ha deployment --- .../base-services/base-services | 9 +++++++ .../docker/openvidu-proxy/Dockerfile | 5 ++-- .../update_enterprise_ha_nodes.sh | 27 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 openvidu-server/docker/openvidu-proxy/update_enterprise_ha_nodes.sh diff --git a/openvidu-server/deployments/enterprise-ha/docker-compose/base-services/base-services b/openvidu-server/deployments/enterprise-ha/docker-compose/base-services/base-services index d5329561..3b229092 100644 --- a/openvidu-server/deployments/enterprise-ha/docker-compose/base-services/base-services +++ b/openvidu-server/deployments/enterprise-ha/docker-compose/base-services/base-services @@ -298,6 +298,7 @@ usage() { printf "\n\tstart\t\t\tStart all services" printf "\n\tstop\t\t\tStop all services" printf "\n\trestart\t\t\tRestart all stopped and running services" + printf "\n\tupdate-loadbalancer\tUpdate load balancer IPs \n\t\t\t\tfrom OPENVIDU_ENTERPRISE_HA_NODE_IPS" printf "\n\tlogs\t\t\tShow openvidu-server logs" printf "\n\tupgrade\t\t\tUpgrade to the latest Openvidu version" printf "\n\tupgrade [version]\tUpgrade to the specific Openvidu version" @@ -333,6 +334,14 @@ restart) fi ;; +update-loadbalancer) + validate_env_vars + OPENVIDU_ENTERPRISE_HA_NODE_IPS=$(get_env_var_value "OPENVIDU_ENTERPRISE_HA_NODE_IPS") + docker-compose exec -it \ + -e OPENVIDU_ENTERPRISE_HA_NODE_IPS="${OPENVIDU_ENTERPRISE_HA_NODE_IPS}" \ + loadbalancer update_enterprise_ha_nodes.sh +;; + logs) case "${2-}" in --follow|-f) diff --git a/openvidu-server/docker/openvidu-proxy/Dockerfile b/openvidu-server/docker/openvidu-proxy/Dockerfile index bf89622a..8d65594b 100644 --- a/openvidu-server/docker/openvidu-proxy/Dockerfile +++ b/openvidu-server/docker/openvidu-proxy/Dockerfile @@ -15,7 +15,7 @@ COPY ./default.conf /etc/nginx/conf.d/default.conf COPY ./default_nginx_conf /default_nginx_conf # Entrypoint and discover public ip scripts -COPY ./discover_my_public_ip.sh /usr/local/bin +COPY ./discover_my_public_ip.sh ./update_enterprise_ha_nodes.sh /usr/local/bin/ # Copy nginx.conf COPY ./nginx.conf /etc/nginx/nginx.conf @@ -27,6 +27,7 @@ RUN mkdir -p /var/www/certbot && \ mkdir -p /etc/nginx/vhost.d/ && \ mkdir -p /custom-nginx && \ chmod +x /usr/local/bin/entrypoint.sh && \ - chmod +x /usr/local/bin/discover_my_public_ip.sh + chmod +x /usr/local/bin/discover_my_public_ip.sh && \ + chmod +x /usr/local/bin/update_enterprise_ha_nodes.sh CMD [ "/usr/local/bin/entrypoint.sh" ] diff --git a/openvidu-server/docker/openvidu-proxy/update_enterprise_ha_nodes.sh b/openvidu-server/docker/openvidu-proxy/update_enterprise_ha_nodes.sh new file mode 100644 index 00000000..8ad6856d --- /dev/null +++ b/openvidu-server/docker/openvidu-proxy/update_enterprise_ha_nodes.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Check if PROXY_MODE is ENTERPRISE_HA +if [[ "${PROXY_MODE}" != "ENTERPRISE_HA" ]]; then + echo "PROXY_MODE is not ENTERPRISE_HA" + exit 1 +fi + +if [[ -z "${OPENVIDU_ENTERPRISE_HA_NODE_IPS}" ]]; then + echo "OPENVIDU_ENTERPRISE_HA_NODE_IPS is not set." + exit 1 +else + echo "Updating OPENVIDU_ENTERPRISE_HA_NODE_IPS in load balancer" + echo "OPENVIDU_ENTERPRISE_HA_NODE_IPS: ${OPENVIDU_ENTERPRISE_HA_NODE_IPS}" + OPENVIDU_ENTERPRISE_HA_NODE_IPS="10.5.0.8,10.5.0.9" + IFS=',' read -ra IP_ARRAY <<< "$OPENVIDU_ENTERPRISE_HA_NODE_IPS" + NEW_UPSTREAM="" + for i in "${IP_ARRAY[@]}"; do + NEW_UPSTREAM+=" server ${i}:4443 max_fails=2 fail_timeout=3s;\n" + done + unset IFS + sed -i "/upstream openviduserver {/,/}/c\upstream openviduserver {\n$NEW_UPSTREAM}" /etc/nginx/conf.d/* + echo "Updated OPENVIDU_ENTERPRISE_HA_NODE_IPS in load balancer" + echo "Reloading nginx" + nginx -s reload + echo "Nginx updated successfully" +fi \ No newline at end of file