mirror of https://github.com/OpenVidu/openvidu.git
deployment: Update aws-asg master files
parent
c7de78b9f3
commit
665f3db149
|
@ -110,7 +110,7 @@ OPENVIDU_PRO_CLUSTER_ENVIRONMENT=on_premise
|
||||||
# Whether to enable or disable autoscaling. With autoscaling the number of Media Nodes will
|
# Whether to enable or disable autoscaling. With autoscaling the number of Media Nodes will
|
||||||
# be automatically adjusted according to existing load
|
# be automatically adjusted according to existing load
|
||||||
# Values: true | false
|
# Values: true | false
|
||||||
# OPENVIDU_PRO_CLUSTER_AUTOSCALING=false
|
OPENVIDU_PRO_CLUSTER_AUTOSCALING=false
|
||||||
|
|
||||||
# How often the autoscaling algorithm runs, in seconds
|
# How often the autoscaling algorithm runs, in seconds
|
||||||
# Type number >= 0
|
# Type number >= 0
|
||||||
|
@ -250,6 +250,10 @@ OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300
|
||||||
# Default value is false
|
# Default value is false
|
||||||
# OPENVIDU_STREAMS_ALLOW_TRANSCODING=false
|
# OPENVIDU_STREAMS_ALLOW_TRANSCODING=false
|
||||||
|
|
||||||
|
# Send openvidu-browser logs of clients to Elasticsearch
|
||||||
|
# Default value is 'disabled'
|
||||||
|
# OPENVIDU_BROWSER_LOGS=disabled
|
||||||
|
|
||||||
# true to enable OpenVidu Webhook service. false' otherwise
|
# true to enable OpenVidu Webhook service. false' otherwise
|
||||||
# Values: true | false
|
# Values: true | false
|
||||||
OPENVIDU_WEBHOOK=false
|
OPENVIDU_WEBHOOK=false
|
||||||
|
@ -337,6 +341,7 @@ ELASTICSEARCH_PASSWORD=
|
||||||
#AWS_DEFAULT_REGION=
|
#AWS_DEFAULT_REGION=
|
||||||
#AWS_IMAGE_ID=
|
#AWS_IMAGE_ID=
|
||||||
#AWS_INSTANCE_TYPE=
|
#AWS_INSTANCE_TYPE=
|
||||||
|
#AWS_INSTANCE_ID=
|
||||||
#AWS_KEY_NAME=
|
#AWS_KEY_NAME=
|
||||||
#AWS_SUBNET_ID=
|
#AWS_SUBNET_ID=
|
||||||
#AWS_SECURITY_GROUP=
|
#AWS_SECURITY_GROUP=
|
||||||
|
|
|
@ -2,6 +2,11 @@ filebeat.inputs:
|
||||||
- type: container
|
- type: container
|
||||||
paths:
|
paths:
|
||||||
- '/var/lib/docker/containers/*/*.log'
|
- '/var/lib/docker/containers/*/*.log'
|
||||||
|
fields:
|
||||||
|
cluster_id: ${OPENVIDU_PRO_CLUSTER_ID:${DOMAIN_OR_PUBLIC_IP:undefined}}
|
||||||
|
node_id: master_${AWS_INSTANCE_ID:${OPENVIDU_PRO_CLUSTER_ID:${DOMAIN_OR_PUBLIC_IP:undefined}}}
|
||||||
|
node_role: masternode
|
||||||
|
fields_under_root: true
|
||||||
|
|
||||||
processors:
|
processors:
|
||||||
- add_docker_metadata:
|
- add_docker_metadata:
|
||||||
|
@ -25,10 +30,8 @@ processors:
|
||||||
container.image.name: docker.elastic.co/beats/filebeat-oss
|
container.image.name: docker.elastic.co/beats/filebeat-oss
|
||||||
- contains:
|
- contains:
|
||||||
container.image.name: docker.elastic.co/beats/metricbeat-oss
|
container.image.name: docker.elastic.co/beats/metricbeat-oss
|
||||||
- add_fields:
|
- contains:
|
||||||
fields:
|
container.image.name: openvidu/openvidu-server-pro
|
||||||
cluster_id: ${OPENVIDU_PRO_CLUSTER_ID:${DOMAIN_OR_PUBLIC_IP}}
|
|
||||||
node_role: masternode
|
|
||||||
|
|
||||||
output:
|
output:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
|
@ -42,7 +45,10 @@ output:
|
||||||
when.or:
|
when.or:
|
||||||
- contains:
|
- contains:
|
||||||
container.image.name: openvidu/openvidu-proxy
|
container.image.name: openvidu/openvidu-proxy
|
||||||
|
- index: "filebeat-openvidu-recording-%{+yyyy.MM.dd}"
|
||||||
|
when.or:
|
||||||
|
- contains:
|
||||||
|
container.image.name: openvidu/openvidu-recording
|
||||||
|
|
||||||
logging.json: true
|
logging.json: true
|
||||||
logging.metrics.enabled: false
|
logging.metrics.enabled: false
|
||||||
|
|
|
@ -31,7 +31,8 @@ metricbeat.modules:
|
||||||
period: ${OPENVIDU_PRO_STATS_MONITORING_INTERVAL}s
|
period: ${OPENVIDU_PRO_STATS_MONITORING_INTERVAL}s
|
||||||
cpu.metrics: [normalized_percentages]
|
cpu.metrics: [normalized_percentages]
|
||||||
fields:
|
fields:
|
||||||
cluster_id: ${OPENVIDU_PRO_CLUSTER_ID:${DOMAIN_OR_PUBLIC_IP}}
|
cluster_id: ${OPENVIDU_PRO_CLUSTER_ID:${DOMAIN_OR_PUBLIC_IP:undefined}}
|
||||||
|
node_id: master_${AWS_INSTANCE_ID:${OPENVIDU_PRO_CLUSTER_ID:${DOMAIN_OR_PUBLIC_IP:undefined}}}
|
||||||
node_role: masternode
|
node_role: masternode
|
||||||
output:
|
output:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
|
|
|
@ -35,6 +35,14 @@ exit_on_error () {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check custom parameters
|
||||||
|
if [[ -n "${CUSTOM_INSTANCE_TYPE}" ]]; then
|
||||||
|
AWS_INSTANCE_TYPE="${CUSTOM_INSTANCE_TYPE}"
|
||||||
|
fi
|
||||||
|
if [[ -n "${CUSTOM_VOLUME_SIZE}" ]]; then
|
||||||
|
AWS_VOLUME_SIZE="${CUSTOM_VOLUME_SIZE}"
|
||||||
|
fi
|
||||||
|
|
||||||
docker run --rm amazon/aws-cli:${AWS_CLI_DOCKER_TAG} ec2 run-instances \
|
docker run --rm amazon/aws-cli:${AWS_CLI_DOCKER_TAG} ec2 run-instances \
|
||||||
--image-id ${AWS_IMAGE_ID} --count 1 \
|
--image-id ${AWS_IMAGE_ID} --count 1 \
|
||||||
--instance-type ${AWS_INSTANCE_TYPE} \
|
--instance-type ${AWS_INSTANCE_TYPE} \
|
||||||
|
@ -51,18 +59,6 @@ docker run --rm amazon/aws-cli:${AWS_CLI_DOCKER_TAG} ec2 wait instance-running -
|
||||||
KMS_IP=$(cat ${OUTPUT} | jq --raw-output ' .Instances[] | .NetworkInterfaces[0] | .PrivateIpAddress')
|
KMS_IP=$(cat ${OUTPUT} | jq --raw-output ' .Instances[] | .NetworkInterfaces[0] | .PrivateIpAddress')
|
||||||
KMS_ID=$(cat ${OUTPUT} | jq --raw-output ' .Instances[] | .InstanceId')
|
KMS_ID=$(cat ${OUTPUT} | jq --raw-output ' .Instances[] | .InstanceId')
|
||||||
|
|
||||||
# Wait media-node controller
|
|
||||||
attempt_counter=0
|
|
||||||
max_attempts=10
|
|
||||||
|
|
||||||
until $(curl --output /dev/null --silent --head --fail -u OPENVIDUAPP:${OPENVIDU_SECRET} http://${KMS_IP}:3000/media-node/status); do
|
|
||||||
if [ ${attempt_counter} -eq ${max_attempts} ];then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
attempt_counter=$(($attempt_counter+1))
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
jq -n \
|
jq -n \
|
||||||
--arg id "${KMS_ID}" \
|
--arg id "${KMS_ID}" \
|
||||||
--arg ip "${KMS_IP}" \
|
--arg ip "${KMS_IP}" \
|
||||||
|
|
|
@ -22,7 +22,7 @@ version: '3.1'
|
||||||
services:
|
services:
|
||||||
|
|
||||||
openvidu-server:
|
openvidu-server:
|
||||||
image: openvidu/openvidu-server-pro:2.17.0
|
image: openvidu/openvidu-server-pro:2.18.0-beta5
|
||||||
restart: on-failure
|
restart: on-failure
|
||||||
network_mode: host
|
network_mode: host
|
||||||
entrypoint: ['/usr/local/bin/entrypoint.sh']
|
entrypoint: ['/usr/local/bin/entrypoint.sh']
|
||||||
|
@ -109,10 +109,15 @@ services:
|
||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
- OPENVIDU_PRO_ELASTICSEARCH_HOST=${OPENVIDU_PRO_ELASTICSEARCH_HOST:-http://127.0.0.1:9200}
|
- OPENVIDU_PRO_ELASTICSEARCH_HOST=${OPENVIDU_PRO_ELASTICSEARCH_HOST:-http://127.0.0.1:9200}
|
||||||
|
- OPENVIDU_PRO_STATS_MONITORING_INTERVAL=${OPENVIDU_PRO_STATS_MONITORING_INTERVAL:-10}
|
||||||
volumes:
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- ./beats/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:ro
|
- ./beats/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:ro
|
||||||
|
- /proc:/hostfs/proc:ro
|
||||||
|
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
|
||||||
|
- /:/hostfs:ro
|
||||||
command: >
|
command: >
|
||||||
/bin/bash -c "metricbeat -e -strict.perms=false
|
/bin/bash -c "metricbeat -e -strict.perms=false -e -system.hostfs=/hostfs
|
||||||
`if [ ! -z $ELASTICSEARCH_USERNAME ]; then echo '-E output.elasticsearch.username=$ELASTICSEARCH_USERNAME'; fi`
|
`if [ ! -z $ELASTICSEARCH_USERNAME ]; then echo '-E output.elasticsearch.username=$ELASTICSEARCH_USERNAME'; fi`
|
||||||
`if [ ! -z $ELASTICSEARCH_PASSWORD ]; then echo '-E output.elasticsearch.password=$ELASTICSEARCH_PASSWORD'; fi`"
|
`if [ ! -z $ELASTICSEARCH_PASSWORD ]; then echo '-E output.elasticsearch.password=$ELASTICSEARCH_PASSWORD'; fi`"
|
||||||
logging:
|
logging:
|
||||||
|
|
|
@ -130,6 +130,17 @@ new_ov_installation() {
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_previous_env_variable() {
|
||||||
|
local ENV_VARIABLE_NAME=$1
|
||||||
|
echo $(grep -E "${ENV_VARIABLE_NAME}=.*$" "${OPENVIDU_PREVIOUS_FOLDER}/.env" | cut -d'=' -f2)
|
||||||
|
}
|
||||||
|
|
||||||
|
replace_variable_in_new_env_file() {
|
||||||
|
local ENV_VARIABLE_NAME=$1
|
||||||
|
local ENV_VARIABLE_VALUE=$2
|
||||||
|
[[ ! -z "${ENV_VARIABLE_VALUE}" ]] && sed -i "s|#${ENV_VARIABLE_NAME}=|${ENV_VARIABLE_NAME}=${ENV_VARIABLE_VALUE}|" "${OPENVIDU_PREVIOUS_FOLDER}/.env-${OPENVIDU_VERSION}"
|
||||||
|
}
|
||||||
|
|
||||||
upgrade_ov() {
|
upgrade_ov() {
|
||||||
# Search local Openvidu installation
|
# Search local Openvidu installation
|
||||||
printf '\n'
|
printf '\n'
|
||||||
|
@ -336,14 +347,42 @@ upgrade_ov() {
|
||||||
OLD_MODE=$(grep -E "Installation Mode:.*$" "${ROLL_BACK_FOLDER}/docker-compose.yml" | awk '{ print $4,$5 }')
|
OLD_MODE=$(grep -E "Installation Mode:.*$" "${ROLL_BACK_FOLDER}/docker-compose.yml" | awk '{ print $4,$5 }')
|
||||||
[ ! -z "${OLD_MODE}" ] && sed -i -r "s/Installation Mode:.+/Installation Mode: ${OLD_MODE}/" "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml"
|
[ ! -z "${OLD_MODE}" ] && sed -i -r "s/Installation Mode:.+/Installation Mode: ${OLD_MODE}/" "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml"
|
||||||
|
|
||||||
# In Aws, update AMI ID
|
# Update .env variables to new .env-version
|
||||||
AWS_REGION=$(grep -E "AWS_DEFAULT_REGION=.*$" "${OPENVIDU_PREVIOUS_FOLDER}/.env" | cut -d'=' -f2)
|
AWS_REGION=$(get_previous_env_variable AWS_DEFAULT_REGION)
|
||||||
if [[ ! -z ${AWS_REGION} ]]; then
|
if [[ ! -z ${AWS_REGION} ]]; then
|
||||||
|
|
||||||
|
# Get new AMI ID
|
||||||
NEW_AMI_ID=$(curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/CF-OpenVidu-Pro-${OPENVIDU_VERSION//v}.yaml --silent |
|
NEW_AMI_ID=$(curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/CF-OpenVidu-Pro-${OPENVIDU_VERSION//v}.yaml --silent |
|
||||||
sed -n -e '/KMSAMIMAP:/,/Metadata:/ p' |
|
sed -n -e '/KMSAMIMAP:/,/Metadata:/ p' |
|
||||||
grep -A 1 ${AWS_REGION} | grep AMI | tr -d " " | cut -d":" -f2)
|
grep -A 1 ${AWS_REGION} | grep AMI | tr -d " " | cut -d":" -f2)
|
||||||
[[ -z ${NEW_AMI_ID} ]] && fatal_error "Error while getting new AWS_IMAGE_ID for Media Nodes"
|
[[ -z ${NEW_AMI_ID} ]] && fatal_error "Error while getting new AWS_IMAGE_ID for Media Nodes"
|
||||||
sed -i "s/.*AWS_IMAGE_ID=.*/AWS_IMAGE_ID=${NEW_AMI_ID}/" "${OPENVIDU_PREVIOUS_FOLDER}/.env" || fatal_error "Error while updating new AWS_IMAGE_ID for Media Nodes"
|
|
||||||
|
# Get previous values
|
||||||
|
PREV_AWS_DEFAULT_REGION=$(get_previous_env_variable AWS_DEFAULT_REGION)
|
||||||
|
PREV_AWS_INSTANCE_TYPE=$(get_previous_env_variable AWS_INSTANCE_TYPE)
|
||||||
|
PREV_AWS_INSTANCE_ID=$(get_previous_env_variable AWS_INSTANCE_ID)
|
||||||
|
PREV_AWS_KEY_NAME=$(get_previous_env_variable AWS_KEY_NAME)
|
||||||
|
PREV_AWS_SUBNET_ID=$(get_previous_env_variable AWS_SUBNET_ID)
|
||||||
|
PREV_AWS_SECURITY_GROUP=$(get_previous_env_variable AWS_SECURITY_GROUP)
|
||||||
|
PREV_AWS_STACK_ID=$(get_previous_env_variable AWS_STACK_ID)
|
||||||
|
PREV_AWS_STACK_NAME=$(get_previous_env_variable AWS_STACK_NAME)
|
||||||
|
PREV_AWS_CLI_DOCKER_TAG=$(get_previous_env_variable AWS_CLI_DOCKER_TAG)
|
||||||
|
PREV_AWS_VOLUME_SIZE=$(get_previous_env_variable AWS_VOLUME_SIZE)
|
||||||
|
|
||||||
|
# Replace variables in new .env-version file
|
||||||
|
replace_variable_in_new_env_file "AWS_DEFAULT_REGION" "${PREV_AWS_DEFAULT_REGION}"
|
||||||
|
replace_variable_in_new_env_file "AWS_INSTANCE_TYPE" "${PREV_AWS_INSTANCE_TYPE}"
|
||||||
|
replace_variable_in_new_env_file "AWS_INSTANCE_ID" "${PREV_AWS_INSTANCE_ID}"
|
||||||
|
replace_variable_in_new_env_file "AWS_KEY_NAME" "${PREV_AWS_KEY_NAME}"
|
||||||
|
replace_variable_in_new_env_file "AWS_SUBNET_ID" "${PREV_AWS_SUBNET_ID}"
|
||||||
|
replace_variable_in_new_env_file "AWS_SECURITY_GROUP" "${PREV_AWS_SECURITY_GROUP}"
|
||||||
|
replace_variable_in_new_env_file "AWS_STACK_ID" "${PREV_AWS_STACK_ID}"
|
||||||
|
replace_variable_in_new_env_file "AWS_STACK_NAME" "${PREV_AWS_STACK_NAME}"
|
||||||
|
replace_variable_in_new_env_file "AWS_CLI_DOCKER_TAG" "${PREV_AWS_CLI_DOCKER_TAG}"
|
||||||
|
replace_variable_in_new_env_file "AWS_VOLUME_SIZE" "${PREV_AWS_VOLUME_SIZE}"
|
||||||
|
|
||||||
|
# Replace new AMI
|
||||||
|
replace_variable_in_new_env_file "AWS_IMAGE_ID" "${NEW_AMI_ID}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue