você está aqui: Home  → Arquivo de Mensagens

Criando servidores virtuais com FreeBSD Jail

Colaboração: Valdomiro de O. Souza Jr.

Data de Publicação: 08 de Agosto de 2007

Segundo uma pesquisa realizada pela AMD, a maioria dos servidores opera com menos de 15% da capacidade. Acredito que este seja um dos motivos que levaram o assunto virtualização ao topo dos projetos da área de TI para 2007.

Até setembro passado eu tinha uma pendência antiga na minha agenda, utilizar o FreeBSD Jail em algumas aplicações da empresa, mas se eu soubesse que era tão fácil e prático a virtualização de servidores utilizando o FreeBSD Jail, eu já teria feito isso há muito tempo.

O FreeBSD Jail permite a virtualização de sistemas operacionais de uma forma muito fácil, o que possibilita a criação de diversos servidores virtuais e independentes, em um único servidor FreeBSD, também possibilitando que todos estes servidores virtuais compartilhem todos os recursos de hardware (processadores, memórias, discos e placas de redes).

Bom, chega de papo furado! Vamos meter a mão na massa, criando e configurando os ambientes virtuais.

1. Criando uma máquina virtual

A) Crie um arquivo "criando_ambiente_jail.sh" com as linhas abaixo

  D=/caminho/nome_do_jail   # Exemplo: /virtual/intranet
  cd /usr/src
  mkdir -p $D
  make world DESTDIR=$D
  cd etc
  make distribution DESTDIR=$D
  mount_devfs devfs $D/dev
  cd $D
  ln -sf dev/null kernel

B) Execute o arquivo "criando_ambiente_jail.sh"

  #> sh criando_ambiente_jail.sh

2. Configurando o servidor BASE

Servidor BASE é o sistema operacional principal onde serão instalados e inicializados os ambientes virtuais jail.

2.1. Editar o arquivo /etc/rc.conf

  sendmail_enable="NO"
  inetd_flags="-wW -a <IP do sistema BASE>"
  rpcbind_enable="NO"
  syslogd_flags="-ss"

2.2. Editar o arquivo /etc/ssh/sshd_config

Este passo deve ser executado em todas as máquinas virtuais que rodarem o daemon do SSH, preenchendo o campo <IP DO SISTEMA> com o IP da máquina virtual.

Habilite as linhas abaixo:

  Port 22
  Protocol 2
  ListenAddress <IP DO SISTEMA>

2.3. Criando, editando e copiando arquivos

2.3.1. Edite o arquivo /etc/sysctl.conf

  #> echo security.jail.set_hostname_allowed=0 >> /etc/sysctl.conf

Mais informações sobre este parâmetro podem ser encontradas utilizando o "man jail"

2.3.2. Criando e copiando arquivos

  #> cp -r /stand /caminho/nome_do_jail/
  #> touch /caminho/nome_do_jail/etc/fstab
  #> cp /etc/resolv.conf /caminho/nome_do_jail/etc/

3. Configurando os arquivos da nova máquina virtual

  #> vi /caminho/nome_do_jail/etc/rc.conf

Inserir a linha:

  network_interfaces=""

Opcionais

  rpcbind_enable="NO"
  sendmail_enable="NO"
  
  #> vi /caminho/nome_do_jail/etc/syslog.conf

Altere a linha:

de

  *.err;kern.warning;auth.notice;mail.crit                /dev/console

para

  *.err;kern.warning;auth.notice;mail.crit                /var/log/messages

Edite o rc.conf do sistema BASE e insira as linhas abaixo:

  #> vi /etc/rc.conf
  jail_enable="yes"
  jail_list="NomeDoJail01  NomeDoJail02 ... NomeDoJailNN"
  #
  # As linhas abaixo devem ser criadas para cada máquina virtual
  #
  jail_NomeDoJail01_rootdir="/caminho/nome_do_jail_01/"  # Jail's root directory
  jail_NomeDoJail01_hostname="nome_do_jail_01.exemplo.com"  # Jail's hostname
  jail_NomeDoJail01_ip="<IP do Servidor Virtual01>"  # Jail's IP number
  jail_NomeDoJail01_exec="/bin/sh /etc/rc" # command to execute in jail
  jail_NomeDoJail01_devfs_enable="YES" # mount devfs in the jail
  jail_NomeDoJail01_fdescfs_enable="YES" # mount fdescfs in the jail
  jail_NomeDoJail01_procfs_enable="YES" # mount procfs in jail
  jail_NomeDoJail01_fstab="" # fstab(5) for mount/umount
  jail_NomeDoJail01_flags="-l -U root" # flags for jail(8)

4. Acessando o ambiente virtual

4.1. Inicialização

  #> ifconfig <interface de rede> inet alias <IP do Servidor Virtual>/32

Não esqueça de incluir as configurações do <IP do Servidor Virtual> na <interface de rede> no /etc/rc.conf do sistemas BASE.

  #> mount -t procfs proc /caminho/nome_do_jail_XX/proc
  #> jail /caminho/nome_do_jail_XX nome_do_jail_01.exemplo.com <IP do Servidor Virtual> /bin/sh /etc/rc

4.2. Acessando o ambiente virtual

  #> jail /caminho/nome_do_jail_XX nome_do_jail_XX.exemplo.com <IP do Servidor Virtual> /bin/sh

Pronto, agora é só instalar os pacotes necessários para o seu servidor web, banco de dados, email, ldap, arquivos, ...

5. Dicas:

5.1. Removendo um JAIL:

  #> chflags -R noschg /caminho/jail
  #> rm -Rf /caminho/jail

5.2. Comandos de administração

  jls, jail e jkill

5.3. Inicializando e parando um ou mais Jails

Para todos os Jails

  # /etc/rc.d/jail stop
  # /etc/rc.d/jail start

Para um Jail

  # /etc/rc.d/jail stop <nome do jail>
  # /etc/rc.d/jail start <nome do jail>

6. Referências:

  1. man jail
  2. http://www.freebsddiary.org/jail-5.php
  3. http://www.onlamp.com/pub/a/bsd/2006/03/09/jails-virtualization.html
  4. http://memberwebs.com/nielsen/freebsd/jails/
  5. http://www.amd.com/br-pt/Processors/ProductInformation/030_118_8796_14287,00.html


Veja a relação completa dos artigos de Valdomiro de O. Souza Jr.

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script