User Tools

Site Tools


marfeel:test

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
marfeel:test [2020/03/16 12:23] dodgermarfeel:test [2020/10/23 09:50] (current) – removed dodger
Line 1: Line 1:
-====== Marfeel Test ====== 
- 
-====== App server ====== 
- 
-===== Why do you think different cache times for the nginx cache and for the browser were defined? ===== 
-General answer: Caching is mandatory for performance.  
- 
-  * Particular answer to proxy cache: 
-    * I've configured nginx proxy_cache on ''/dev/shm'' for performance (on ram cache). 1 minute for proxy_cache should be fine if the content is changing constantly, cause nginx will "rebuild/compile" the cache after 1 minute but inside that minute, it will use the already compiled version of the file. 
-  * Particular answer to static content: 
-    * Static content to 1 hour maybe is aggressive, normally I set it up to 1day or more, also depends on the type of application. 
-  * Particular answer to proxied content: 
-    * I Think we must include a header like "If-Modified-Since" to invalidate local cache if the file has been changed on the server. 
- 
-====== Auto-scaling ====== 
-===== Ami and UserData ===== 
-I did some mistakes, so I create some versions of it: 
-  * name : ''dodger_marfeel_test_003'' 
-  * id : ''ami-0bc1be25784321fc1'' 
- 
-===== Which code have you added to the user-data on launching the instance? ===== 
-<code yaml> 
-#cloud-config 
- 
-runcmd: 
-  - [ mkdir, -p, /opt/test ] 
-  - [ wget, -O/opt/test/master.tar.gz, "https://bitbucket.org/Marfeel/appserverpythontestapp/get/master.tar.gz" ] 
-  - [ tar, xzfv, /opt/test/master.tar.gz, -C, /opt/test/ ] 
-  - [ systemctl, start, marfeel_test ] 
-  - [ systemctl, restart, nginx ] 
-</code> 
- 
-===== Security group ===== 
-I create the 001 group with https, then I remove it in the 2nd version: 
-  * name: ''dodger_launch_002'' 
- 
-===== auto-scaling Group ===== 
- 
-    * name: ''marfeel_scalinggroup_001'' 
- 
- 
-====== Load balancer ====== 
- 
-===== Dynamic set up ===== 
- 
-Done as required with a very simple bash script.\\ 
-Dependencies for running the script: 
-  * ''aws-cli'' 
-  * ''jq'' 
- 
- 
-<WRAP center round info 60%> 
-''aws-cli'' must be configured!!! 
-</WRAP> 
- 
-\\ 
-This script should be run by root. 
- 
-Code: 
-<file bash make_it_cool.sh> 
-#!/bin/bash 
- 
-# Exit codes: 
-#  1 : 
-#  2 : 
-#  3 : 
-#  4 : 
- 
- 
-######################################################################## 
-# INIT 
-######################################################################## 
-CONFIGFILE="$(dirname $(readlink -f $0))/$(basename $(readlink -f $0) .sh).config" 
- 
-######################################################################## 
-#/INIT 
-######################################################################## 
- 
-######################################################################## 
-# 
-# CONSTANTS 
-# 
-######################################################################## 
- 
-# colors 
-BOLD="\e[1m" 
-GREEN="\e[32m" 
-LIGHTGREEN="${BOLD}${GREEN}" 
-RED="\033[1;31m" 
-LIGHTRED="\033[1;31m" 
-BLUE="\e[34m" 
-LIGHTBLUE="${BOLD}${BLUE}" 
-YELLOW="\e[33m" 
-LIGHTYELLOW="${BOLD}${YELLOW}" 
-WHITE="\033[0;37m" 
-RESET="\033[0;00m" 
- 
-NOW="$(date +%Y%m%d%H%M%S)" 
- 
- 
-######################################################################## 
-# 
-# / CONSTANTS 
-# 
-######################################################################## 
- 
- 
- 
- 
-######################################################################## 
-# 
-# VARIABLES 
-# 
-######################################################################## 
- 
- 
-SCRIPTLOG="$(dirname `readlink -f $0`)/logs/$(basename $0 .sh)_script_${NOW}.log" 
-SCRIPTLOGERR="$(dirname `readlink -f $0`)/logs/$(basename $0 .sh)_script_${NOW}.err" 
- 
-TMPFILE=$(mktemp) 
-HADYNAMICCFG=$(mktemp) 
- 
-######################################################################## 
-# 
-# / VARIABLES 
-# 
-######################################################################## 
- 
- 
-########################################################################                                                                                                                                [49/5875] 
-#                                                                                                                                                                                                                 
-# FUNCTIONS 
-# 
-######################################################################## 
- 
- 
-usage() 
-{ 
-    printf "%s${LIGHTRED}USAGE:${RESET} 
-    $0 
-      
- Read documentation here: 
- https://wiki.ciberterminal.net/doku.php?id=marfeel:test#dynamic_set_up" 
-    # VERY INITIAL CHECKS 
-} 
- 
-printmsg() 
-{ 
-   echo -e "$*" 
-} 
- 
-output_log() 
-{ 
-    if [[ "${QUIETOUTPUT}" == true ]]; then 
-        printmsg "$*" >> ${OUTPUTFILE} 
-    else 
-        printmsg "$*" | tee -a "${OUTPUTFILE}" 
-    fi 
-} 
- 
-abort_message() 
-{ 
-    printmsg "ERROR: $*" 
-    exit 1 
-} 
- 
-# debug_me uses variable ${DEBUGME} 
-debug_me() 
-{ 
-    if [[ "${DEBUGME}" && ${DEBUGME} -eq 0 ]] ; then  
-        echo -e "${LIGHTBLUE}DEBUG: ${RESET}$*" 
-    fi 
-} 
- 
- 
-######################################################################## 
-# 
-# / FUNCTIONS 
-# 
-######################################################################## 
- 
-######################################################################## 
-# 
-# MAIN 
-# 
-######################################################################## 
- 
-[[ ! -d $(dirname ${SCRIPTLOG}) ]] && mkdir -p $(dirname ${SCRIPTLOG}) 
- 
-# DETECTING if the script is run by cron 
-if [[ "$(tty)" = "not a tty" ]] ; then 
- set -x 
- exec > ${SCRIPTLOG} 
- exec 2> ${SCRIPTLOGERR} 
-fi 
- 
-if [[ ${DEBUG} -eq 0 ]] ; then 
-    echo -e "${BLUE}DEBUGMODE${RESET} is on" 
-    echo -e "\t SCRIPTLOG will be ${SCRIPTLOG}" 
-    echo -e "\t SCRIPTLOGERR will be ${SCRIPTLOGERR}" 
-    set -x 
-    exec 2> ${SCRIPTLOGERR} 
-fi 
- 
- 
-[[ ! -f ${CONFIGFILE} ]] && echo -e "${LIGHTRED} CONFIGFILE ${CONFIGFILE} NOT FOUND${RESET}" && exit 1 
-. ${CONFIGFILE} 
- 
-[[ ${DEBUG} -eq 0 ]] && DEBUGME="bash -x" 
- 
-${AWSCLI} ec2 describe-instances --filters Name=instance-type,Values=t2.nano Name=instance-state-name,Values=running > ${TMPFILE} 
-let x=0 
-for PRIVATEIP in $(cat ${TMPFILE} | ${JQ} '.Reservations[] | .Instances[] | "\(.PrivateIpAddress) \(.PublicIpAddress) \(.Tags)"' | egrep "${SCALINGTAG}" | awk 'BEGIN{FS="[ \"]"}{print $2}') ; do 
- echo -e "\tserver marfeel_nginx_${x} ${PRIVATEIP}:80 check maxconn 512" >> ${HADYNAMICCFG} 
- let x++ 
-done 
- 
-if [[ $(cat ${HADYNAMICCFG} | wc -l) -ge ${MINBACKENDS} ]] ; then 
- # ok, overwriting config 
- echo -e "#### WARNING THIS CONFIG WILL BE REWRITTEN BY CRONJOB" > ${HAPROXYCONFIG} 
- cat ${HAPROXYTEMPLATE} >> ${HAPROXYCONFIG} 
- cat ${HADYNAMICCFG} >> ${HAPROXYCONFIG} 
- echo -e "#### WARNING THIS CONFIG WILL BE REWRITTEN BY CRONJOB" >> ${HAPROXYCONFIG} 
- systemctl reload haproxy 
-fi 
- 
-rm -f ${TMPFILE} 
-rm -f ${HADYNAMICCFG} 
- 
-exit ${EXITCODE} 
- 
-######################################################################## 
-# 
-# / MAIN 
-# 
-######################################################################## 
- 
-</file> 
-\\ 
-Config file: 
-<file config make_it_cool.config> 
- 
-# Our template for re-generate the config 
-HAPROXYTEMPLATE=/etc/haproxy/haproxy.cfg.TMPL 
-# The configfile itself 
-HAPROXYCONFIG=/etc/haproxy/haproxy.cfg 
-# Minimum amount of backends that must be running, less than this, the config file won't be changed 
-MINBACKENDS=2 
- 
-# Tag for the scaling group (backend servers will be filtered by this tag) 
-SCALINGTAG="marfeel_scalinggroup_001" 
- 
-# generic setup 
-AWSCLI=/usr/bin/aws 
-JQ=/usr/bin/jq 
- 
-# SET to 0 for DEBUG 
-DEBUG=0 
-</file> 
- 
-\\ 
-Setup crontab with desired frequency for refresh, for example: 
-<code crontab> 
-*/3 *   * * *   root    /root/marfeel_auto_updater/make_it_cool.sh 
-</code> 
  
marfeel/test.1584361433.txt.gz · Last modified: 2020/03/16 12:23 by dodger