Microcontrolador 8051 | Portal de entrada para o mundo dos microcontroladores
0

Instalação do OpenVZ no Debian Squeeze

Posted by admin on 17 de março de 2013 in Linux

OpenVZ_complete_logo

 

Virtualização é um assunto muito discutido e também muito interessante, o servidor que roda esse site está em uma VPS, neste post irei mostrar como instalar uma máquina Linux Debian com kernel OpenVZ, possibilitando a virtualização de várias máquinas Linux dentro de um host físico Linux.

Primeiramente iremos instalar uma versão enxuta do Debian que pode ser baixada no seguinte link:

http://cdimage.debian.org/debian-cd/6.0.7/i386/iso-cd/debian-6.0.7-i386-netinst.iso

Depois de instalar o mesmo podemos iniciar a instalação do novo kernel que permite a virtualização baseada em container.

Instalaremos o kernel OpenVZ e os pacotes vzctl e vzquota que estão disponíveis nos repositórios do Debian.

aptitude update

aptitude install linux-image-openvz-686 vzctl vzquota

Criamos um symlink para melhorar a usabilidade e compatibilidade.

ln -s /var/lib/vz /vz

Abrimos o arquivo /etc/sysctl.conf e colocamos as seguintes configurações:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp = 1

Agora podemos ver configuração corrente:

sysctl -p

Daremos um reboot para iniciar o novo kernel:

reboot

Depois do reboot, vamos ver se o novo kernel está ativo:

uname -a

Aparecerá o nome do kernel com a palavra openvz:

Posteriormente iremos criar o nosso primeiro container, os vários templates podem ser baixados no site oficial do OpenVZ no seguinte endereço:

http://download.openvz.org/template/precreated/contrib/

Escolha o template desejado e baixe no diretório de template /vz/template/cache

wget http://download.openvz.org/template/precreated/contrib/debian-6.0-i386-minimal.tar.gz

Depois do download, criaremos a primeira máquina virtual com o seguinte comando:

vzctl create 01 –ostemplate debian-6.0-i386-minimal
vzctl set 01 –ipadd 192.168.1.77 –save
vzctl set 01 –nameserver 192.168.1.1 –save
vzctl set 01 –hostname gitcher –save
vzctl start 01

ping 192.168.1.77
vzctl exec 01 passwd
vzctl enter 01

E é isso, segue alguns comandos interessantes:

vzlist
vzlist -a
vzctl stop 01
vzctl start 01
vzctl restart 01
vzctl status 01
vzctl umount 01
vzctl destroy 01
allocate disk space
vzctl set 01 –diskspace “10000000:11000000″ –save

Podemos também automatizar o processo de criação e configuração instalando uma interface web, com o seguinte comando:

wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh

Acesse no seu navegador: http://ip-do-servidor:3000/

Login: admin
Senha: admin

E é isso, com esses poucos comandos podemos transformar um máquina em vários servidores, utilizando energia e processamento de forma eficiente e com muitas facilidade de backup e restauração que só uma máquina virtual pode proporcionar.

 

Tags:

0

Redirecionamento de Portas Iptables

Posted by admin on 3 de março de 2013 in Linux

firewall-1Nesse post irei mostrar como criar regras no iptables que permitem o redirecionamento de portas para uma máquina que esteja atrás de um NAT.

Regra para redirecionar os pacotes que estão chegando na interface:


iptables -t nat -A PREROUTING -d $IP_PUBLIC -p tcp/udp --dport XXX -j DNAT --to-destination $IP_PRIVATE:XXX

Após o pacote entrar no kernel, e ser redirecionado para a máquina especificada temos que colocar uma regra determinando o caminho de volta do pacote.

Regra para redirecionar os pacotes que estão saindo da  interface:


iptables -t nat -A POSTROUTING -s $IP_PRIVATE -p tcp/udp --dport XXXX-j SNAT --to-source $IP_PUBLIC

Onde IP_PUBLIC é o IP verdadeiro que é reconhecido na internet e IP_PRIVATE é o IP Privado de acordo com a  RFC 1918.

Não esquecer de habilitar o encaminhamento de pacotes no kernel, escrevendo 1 no arquivo que habilita tal função:

echo 1 > /proc/sys/net/ipv4/ip_forward

O iptables é uma ferramenta formidável que permite ter um total controle dos pacotes que entram e saem da máquina.

0

Problema de resolução de nomes MySQL

Posted by admin on 27 de fevereiro de 2013 in Linux

mysql

Estou postando no meu site para quem também se deparar com o mesmo problema.

O MySQL e o DNS (servidor de nomes – domain name server) são dois caras que não se entendem muito bem não.  E, para reduzir esta briga ao máximo é preciso compreender como o MySQL interpreta e trata a resolução de nomes.

Primeiro, é importante dizer que a maioria das aplicações que rodam hoje em dia são do tipo servidor, ou seja, o cliente (usuário) executa a aplicação em um servidor de aplicação e não, diretamente, em seu desktop.

É razoável assumir que servidores de aplicação tenham IP fixo, ao contrário de desktops que, normalmente, em grandes redes tem IP dinâmico fornecido por um servidor DHCP.

Quando uma nova sessão (ou thread) é iniciada a partir de uma requisição de um cliente (normalmente, um servidor de aplicação) o MySQL precisa tomar várias providências, a que mais no interessa neste momento é a autenticação, validação do usuário.

O MySQL, então, verifica se o usuário existe, é válido. Um usuário válido é tão, somente, que ele exista na tabela mysql.user. E aí sim, começam os problemas com DNS. O MySQL então irá solicitar ao DNS que retorne o IP do nome do host, e, também o nome do host do IP de conexão, usando-se as funções: gethostbyaddr() e gethostbyname.

Até aí, e eu com isso? O que eu, DBA, tenho a ver com DNS? Ah, meu amigo. O DBA tem que se preocupar sim, pois, veja o tamanho do problema que podemos enfrentar.

O MySQL quer por que quer, saber de onde partiu a conexão, a requisição, para poder criar uma sessão (thread) para este usuário. Portanto, ele acha razoável pegar o hostname e o IP do computador de origem, e, solicitar ao DNS mais próximo que resolve estes nomes, fornecendo: hostname, IP, e Reverso (que normalmente é um FQDN – Full Qualified Domain Name). Não deixa de ser uma medida de segurança adicional.

Servidores DNS foram feitos para serem rápidos, mas, falham aos montes. Isto é notório e sabido. Rede maior ou menor, pouco ou muita requisição na porta 53 (porta do DNS), eles falham. Servidores DNS atendem a muitas requisições, e, não têem qualquer controle sobre a entrega do resultado. Falham! Não vamos aqui discutir os motivos e os pontos de falha, afinal, não é minha e talvez nem a sua praia. Mas, que falham, ah sim, eles falham. E mais, podem demorar a nos responder.

Comportamento típico de um servidor MySQL que está sofrendo com DNS: a) demora para autenticar usuário (pode-se notar várias threads com o status UNAUTHENTICATED USER (visível através do comando SHOW PROCESSLIST no console, ou, qualquer outra ferramenta de monitoração); ou, b) Usuários não conseguem se conectar.

“Usuários não conseguem se conectar”. O MySQL no intuito de evitar questionar o servidor DNS a toda nova conexão, ele mantém um registro dos últimos 128 IP’s & Hostnames em um CACHE chamado HOST CACHE. Este HOST CACHE também registra falhas de conexão, tentativas de conexão com erro (um destes erros pode ser senha inválida). Caso ultrapasse o número de conexões com erro estipulado no arquivo my.cnf, senhas erradas, etc, o IP & Hostname é marcado como RUIM (blacklist). E partir deste momento, não será permitido nenhuma conexão a partir daquela fonte. De duas uma: ou reinicializamos o servidor MySQL (que mau!), ou, executamos o comando FLUSH HOSTS, que irá “zerar” o HOST CACHE. Vida nova! O ruim disto é que o MySQL, agora, terá de se socorrer do DNS, novamente, e… segura peão!

Más notícias! Não existe forma como verificar quais são os IP’s & Hostnames gravados no HOST CACHE, tão pouco, sua situação: blacklist ou não. Seria tão simples ter uma comandinho SHOW HOST CACHE, SHOW CACHE HOST, ou até quem sabe um comandinho: MOSTRA AÍ PÔ… Seria legal ver os gringos usar estes acentos!

Agora, para os mais corajosos. Existe sim um plugin ou, um patch, que poderá lhe trazer esta funcionalidade. É lógico que eu não recomendo, a não ser que voce assuma que nunca mais irá usar os binários oficiais. Para quem quiser interesse, segue o link do plugin-patch-mágicoso:

http://jcole.us/blog/archives/2006/09/26/followup-on-ips-hostnames-and-mysql/

Eu usei só de farra, e, confesso que ficou bacana. Mas, ainda, sou fã do bom e velho binário fornecido pela Oracle/Sun/Mysql. É importante frisar que está documentando a solicitação de um comando SHOW HOST CACHE dentro da comunidade do MySQL, é questão de tempo termos esta funcionalidade. Faria muito mais sentido, em minha opinião que isto fosse disponibilizado na forma de uma tabela no catálogo do MySQL: INFORMATION_SCHEMA.

UNAUTHENTICATED USER é um problema sério. Neste ano de 2011, vivenciei experiências ruins. As famosas “até ontem funcionava tudo normal, hoje ninguém consegue se conectar no banco”. Tudo porque o DNS ficou maluco, saturou, deixou de responder, ou por pura viadagem, resolveu sacanear o banco.

Contar com o DNS a cada conexão pode ser traumático. Lembre-se, por mais que exista um HOST CACHE para evitar excesso de requisição ao DNS, não temos qualquer gerência sobre este cache, na verdade, nem sabemos o que tem dentro desta caixa preta.

Lembre-se ainda que, a maioria das aplicações ainda não descobriram a tal da conexão persistente. Então, cada novo comando é uma nova conexão. E a cada nova conexão, em teoria é uma nova requisição ao servidor DNS.

Agora, faça as contas. Um pouco de matemática nunca é demais. Vamos esquecer por um momento dois caches: HOST CACHE e THREAD CACHE. Quantos comandos por segundo são executados contra todos os servidores MySQL sob sua jurisdição?

5.000 QPS (queries por segundo)? 10.000 QPS? Em continha de português, só o banco de dados entope o servidor DNS com esta quantidade de requisições por segundo. Fora todo o resto da rede e de tantas outras aplicações que precisam fazer uso da resolução de nome.

Aonde eu quero chegar? Um servidor DNS já tem muito trabalho, e, se o MySQL ainda entupir ele com mais milhares de requisição por segundo, teremos problemas.

Resumão: Como o MySQL usa o DNS

cliente faz nova requisição de conexão -> Host Cache (consulta se já existe) -> DNS -> Host Cache (atualiza/insere) -> Autentica usuário (usuário + senha + host)

Dicas: Como apaziguar o MySQL e o DNS

Evite usar DHCP para servidores de aplicação. O IP pode mudar, e, entrar em conflito com o IP e Hostname armazenado no HOST CACHE;

Se não consegue conectar ao MySQL com determinado usuário e senha, e, tem certeza de que está tudo correto: FLUSH HOSTS;

Excesso de threads com UNAUTHENTICATED USER, demora para conectar, precisa usar o comando FLUSH HOSTS com frequência, utilize a opção skip-name-resolve no arquivo de configuração do MySQL. Esta operação necessita de reinicialização do servidor MySQL (mysqld) para que tenha efeito.

Implicação do uso da opção skip-name-resolve

Reforço que após escrever skip-name-resolve no seu arquivo de configuração do MySQL (my.cnf ou my.ini) é preciso reiniciar o servidor MySQL (só o serviço) para que tenha efeito.

Esta opção/configuração irá fazer com o MySQL desconsidere o uso do DNS. Também não existirá no HOST CACHE a equivalência IP <-> Hostname. Obviamente, haverá um ganho no tempo de conexão. As conexões ao banco ocorrerão de forma mais rápida. Contudo, ao criar um usuário não se deverá mais utilizar a forma <usuário>@<hostname>. A partir do uso de skip-name-resolve, os usuários novos e antigos deverão ser/estar registrados no formato: <usuário>@<ip>.

Minha recomendação é pelo uso de skip-name-resolve. Resolve uma série de problemas não tratados neste artigo, diminui o tempo de conexão, diminui a quantidade de tarefas do servidor MySQL durante a autenticação, e, extrai um ponto de falha (DNS).

Fonte: http://www.alexandremalmeida.com.br/2011/11/23/o-mysql-e-resolucao-de-nomes/

Tags:,

0

Problema de criação de Link Simbólico Samba

Posted by admin on 27 de fevereiro de 2013 in Linux

samba

Mais um post, que é mais uma dica, recentemente tive problemas na criação de um link simbólico dentro de /var/www apontando para uma pasta compartilhada no samba, assim conseguimos facilitar o acesso a pasta do apache pelo compartilhamento do Windows.
Porém verifiquei que estranhamente não funcionava nas versões mais atuais do samba, pesquisando na net descobri a solução, é só entrar no arquivo de configuração principal do samba e debaixo da seção Global, adicionar a seguintes linhas:

unix extensions = NO
wide links = yes

Pronto, os links simbólicos irão funcionar normalmente, desde que as permissões estejam corretas.

0

Carl Sagan Cosmos 13 Quem Pode Salvar A Terra (Dublado)

Posted by admin on 24 de fevereiro de 2013 in Série Cosmos - Carl Sagan

0

Carl Sagan Cosmos 12 Enciclopédia Galáctica (Dublado)

Posted by admin on 24 de fevereiro de 2013 in Série Cosmos - Carl Sagan

0

Carl Sagan Cosmos 11 A Persistência da Memória (Dublado)

Posted by admin on 24 de fevereiro de 2013 in Série Cosmos - Carl Sagan

0

Carl Sagan Cosmos 10 O Limiar da Eternidade (Dublado)

Posted by admin on 24 de fevereiro de 2013 in Série Cosmos - Carl Sagan

0

Carl Sagan Cosmos 9 As Vidas das Estrelas (Dublado)

Posted by admin on 24 de fevereiro de 2013 in Série Cosmos - Carl Sagan

0

Carl Sagan Cosmos 8 Viagens no Espaço e no Tempo (Dublado)

Posted by admin on 24 de fevereiro de 2013 in Série Cosmos - Carl Sagan

Copyright © 2013-2014 Microcontrolador 8051 All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.2, from BuyNowShop.com.