quinta-feira, 18 de junho de 2015

Linux usando macOS+boot2docker

Tenho usado faz algum tempo mac no trabalho e fazendo scripts já encontrei dificuldades com sed, a sintaxe difere o que nos leva a ter que instalar o gsed. Então utilizando docker eu criei um script para facilitar minha vida, espero que ajude mais alguém:

# Script
https://github.com/abargiela/scripts/blob/master/docker-ubuntu-start.sh

Eu o adicionei a meu profile fazendo um alias: 
alias linux="/opt/docker-ubuntu-start.sh"

Basicamente ele baixa o ubuntu 14.10, mas você pode trocar para o latest enfim, ele monta o /opt/docker-volume-ubuntu da imagem do boot2docker para que você tenha persistência dos dados, portanto caso necessite recuperar algo ele sempre estará la independente de você matar o container e subir novamente. Para ver a persistência:
boot2docker ssh
E acesse: cd /opt/docker-volume-ubuntu todo conteúdo estará lá.

Importante ressaltar que a persistência nesse meu exemplo vale apenas para o que for criado dentro do /opt do container, caso você crie fora o dado não persistirá.

quinta-feira, 30 de outubro de 2014

SSH locked sessions


Bom uma vez um grande amigo me passou um comando para sair de uma sessão travada de ssh, sempre usei, porém nunca fui pesquisar se haviam outras formas ou outros comandos para, até hoje quando tive outra necessidade relacionada e então achei o seguinte:

A sequencia seria basicamente(as vírgulas utilizadas não devem ser digitadas): enter, ~, ?
A sequência para facilitar se sua busca aqui for simplesmente como fechar a sessão, é a em vermelho.

root@local:~# ~?
Supported escape sequences:
 ~.   - terminate connection (and any multiplexed sessions)
 ~B   - send a BREAK to the remote system
 ~C   - open a command line
 ~R   - request rekey
 ~V/v - decrease/increase verbosity (LogLevel)
 ~^Z  - suspend ssh
 ~#   - list forwarded connections
 ~&   - background ssh (when waiting for connections to terminate)
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

Como sempre, espero que seja útil para alguém :)

segunda-feira, 21 de julho de 2014

quarta-feira, 12 de março de 2014

Installing Varnish with libvmod-digest

Tive a necessidade de fazer uma instalação personalizada do varnish com um de seus vmods, logo para facilitar a minha vida em futuras atualizações de pacotes do varnish ou do próprio vmod, eu fiz um script simples para automatizar esse processo, segue abaixo.


Lembrando que o script foi funcional para o meu caso, espero que ele possa ajudar no seu.

terça-feira, 23 de julho de 2013

varnishd invoked oom-killer [ Out Of Memory no Varnish ]

Hoje nos deparamos com um problema que já vinha ocorrendo porém não havia sido pego, mas graças a uma outra monitoração adicionada, foi detectado  que o varnish estava consumindo mais memória do que poderia ou tinha disponível para ele, e ocasionando um OOM, segue a saída do dmesg e do syslog:

- dmesg:

[22804397.963962] Out of memory: Kill process 1316 (varnishd) score 976 or sacrifice child
[22804397.976351] Killed process 1316 (varnishd) total-vm:52876488kB, anon-rss:31908748kB, file-rss:0kB
[22811179.340584] varnishd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
[22811179.340590] varnishd cpuset=/ mems_allowed=0-1
[22811179.340594] Pid: 12535, comm: varnishd Tainted: G         C   3.2.0-23-generic #36-Ubuntu
[22811179.340597] Call Trace:


- /var/log/syslog
 varnishd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0

Percebemos após análise que o problema poderia ser referente ao uso do amazenamento transiente:  https://www.varnish-cache.org/docs/trunk/users-guide/storage-backends.html#transient-storage

Em nosso caso ele estava setado: 
# varnishadm -T localhost:79 param.show  shortlived
shortlived                  10.000000 [s]
                            Default is 10.0
                            Objects created with TTL shorter than this are
                            always put in transient storage.

E percebemos lendo sobre  o armazenamento transiente: 

"Transient Storage

If you name any of your storage backend "Transient" it will be used for transient (short lived) objects. By default Varnish would use an unlimited malloc backend for this."
Ou seja, o Varnish irá utilizar toda a memória se não limitarmos, então decidimos por segurança, setar um limite.

Em meu caso, respeitando a regra do: https://www.varnish-cache.org/trac/wiki/Performance
De utilizar: 
  • -s malloc,(YOURMEMORY-20%)G
Em meu caso, tinha 32GB de memória RAM, então separei 24GB para o malloc, e 2GB para o Transient=malloc, ficando da seguinte forma no /etc/default/varnish:

                -s Transient=malloc,2G \
                -s malloc,24G \

Aparentemente após essa limitação, nossos problemas com OOM(Out of Memory) acabaram, e a vida voltou ao normal :)

Referências:  https://www.varnish-cache.org / http://google.com
Participação/ajuda Especial: Valter Lisboa (GigaNerds) http://giganerds.wordpress.com/

sexta-feira, 15 de fevereiro de 2013

vclreload varnish reload VCL


Olá,
Fiz alguns ajustes para suprir algumas necessidades que tenho em meu ambiente e o script que basicamente lê a VCL nova e verifica a sintaxe, se houver algum erro, logicamente ela não sobe.

As mudanças que fiz foram:

# Ele pega automaticamente o arquivo vcl a ser compilado, não havendo a necessidade de intervenção manual, logo, se você possui um ambiente com varnishs separados e vcls com nomes diferentes, você pode colocar o script na automação sem se preocupar com ajustes finos :)
FILE=$(grep "\-f" /etc/default/varnish |head -1| awk '{print $2}')

# Aqui ele basicamente pega o valor do varnishadm para poder executar os comandos para carregar a nova vcl.
HOSTPORT=$(grep "\-T" /etc/default/varnish | awk '{print $3}')

Segue o script originalmente criado por Kristian Lyngstol e modificado para minha necessidade.

https://github.com/abargiela/scripts/blob/master/vclreload.sh

Essas modificações foram extremamente úteis para mim, espero que para você também seja :)