r2 - 03 May 2007 - 12:35:10 - MarcoAndreFerreiraDiasYou are here: TWiki >  Main Web > LogBook > EntryDescriptionNo20

Upgrade da Farm

Description

A primeira idéia é construir um nó que fosse a imagem de um nó comum da rede, e testar a upgrade usando dns+pxe+kickstart para automatizar a upgrade dos nós.

Replicacão de disco-cobaia

Iremos copiar a imagem de um hd para um diretorio /export/linux/sda1.img:
[root@node15:/export/linux]# dd if=/dev/sda of=sda1.img
71687372+0 records in
71687372+0 records out
O próximo passo é ligar a porta ethernet sobrando da spgrid04 e ligá-la em qualquer porta de um switch do rack B. Assim podemos acessar a rede interna.

Logamos a spgrid04 e bootamos usando o CD 4.1 do scientific linux, usando a opcão linux rescue. Além do idioma (english), tipo do teclado (br-abnt2), nesse momento ele pedirá se você deseja configurar a rede. Configuramos a porta eth1 ligada ao switch com ip 192.168.1.104 e netmask 255.255.255.0. Não monte as particões.

Para acessar a sprace devemos ter acesso ssh. Logo modificamos momentâneamente o /etc/ssh/sshd_config, comentando as linhas:

#PermitRootLogin no
#PasswordAuthentication no
e reiniciamos:
[root@sprace ~]# /etc/init.d/sshd restart
Agora voltamos ao aquário, e no prompt digitamos:
mkdir teste
mount -t nfs 192.168.1.200:/export /teste
dd if=/teste/linux/sda1.img of=/dev/sda
Ou seja, exportamos a imagem na sprace, demos um dd verificando o arquivo sda1.img e mandamos para o /dev/sda da máquina clone. Depois de algum tempo, configure a rede do nó recém criado:
umount /teste
mount /dev/sda2 /teste
vim /teste/etc/sysconfig/network
vim /teste/etc/sysconfig/network-scripts/ifcfg-eth0
umount /teste
Temos que configurar o ip da spgrid04 (HOSTNAME=spg04 para a rede interna)-> 192.168.1.104, NISDOMAIN=grid, GATEWY=192.168.1.150. No outro arquivo, lembramos de modificar o HWADDR da eth0 (00:30:48:71:D2:48) Temos que configurar o ip da spgrid04 (HOSTNAME=spg04 para a rede interna)-> 192.168.1.104, NISDOMAIN=grid, GATEWY=192.168.1.150. No outro arquivo, lembramos de modificar o HWADDR da eth0 (00:30:48:71:D2:48),
NETWORKING=yes
HOSTNAME=spg04
GATEWAY=192.168.1.150
NISDOMAIN=grid
[mdias@spg04 mdias]$ more /etc/sysconfig/network-scripts/ifcfg-eth1
# Intel Corp.|82541GI/PI Gigabit Ethernet Controller
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=00:30:48:71:D2:48
IPADDR=192.168.1.104
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
[mdias@spg04 mdias]$ more /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corp.|82541GI/PI Gigabit Ethernet Controller
DEVICE=eth0 BROADCAST=192.168.1.255
HWADDR=00:30:48:71:D2:49
IPADDR=192.168.1.104
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=no   <---------------Só a eth1 é ativada!!!

A principio não temos que modificar o grub (ou seja mountar a /dev/sda1, que é a particão /boot na criada /teste, modificar o /teste/grub/menu.lst e dar um grub-install /dev/sda), pois tinhamos um scientific linux de mesma versão instalado antes.

Tiramos o cd e modificamos o Physical View do gmond:

[mdias@spg04 mdias]$ more /etc/gmond.conf
name "SPGRID Cluster"
owner "SPRACE-HEP"
url "http://spgrid.if.usp.br/"
num_nodes  5
setuid ganglia
location "6,0,0"
[root@spg04 mdias]$ /etc/init.d/gmond restart
para ficar num rack virtual 6.

Replicacão dos discos-Update

A replicacão dos discos não é necessária para a upgrade, e sim para nós de teste. Os procedimentos feitos a seguir foram aplicados ao nó 80: Na sprace:

  • Se logue em um nó que seja da mesma fase que o que você deseja replicar (no nosso exemplo o nó 78). Como o /raid0 dos nós é um diretório da spraid montado via nfs com bastante espaco vamos fazer uma imagem aí:
ssh node78
cd /raid0/fase1_bck
dd if=/dev/sda of=sda1.img
Depois de um bom tempo teremos a imagem pronta.
  • Verifique se o dhcpd esta ativo.
No aquário:

* Como foi colocado um disco novo, não era possível a maquina bootar e ele automaticamente entrou no boot remoto (isto deve ser habilitado na sprace; verifique se o dhcp esta inicializado

/etc/init.d/dhcpd start
). Lembre-se que F12 habilita o boot remoto na inicializacão.
  • Fique esperto quando aparecer a tela escrito itautec com as općões de boot. Coloque
linux single
automaticamente a rede é configurada. Peća para ele não montar os discos e ele abrirá um shell. As máquinas da rede estarão acessíveis pelo endereco de IP e não o nome.
  • monte o /raid0 nesta máquina:
mkdir teste
mount -t nfs 192.168.1.100:/raid0 /teste
dd if=/teste/fase1_bck/sda1.img of=/dev/sda
Mais um tempo de espera!
  • Feito isso desmonte o diretório /teste e reboote sem o cabo de rede. Modifique os arquivos necessários descritos acima. * O grub é instalado automaticamente!*

Upgrade dos nós

Vamos agora criar o mirror de instalacão do SL 4.4 no /export/linux/ (seguindo aproximadamente a receita encontrada em https://www.scientificlinux.org/download/mirroring/mirror.ftp)

[root@sprace ~]cd
[root@sprace ~]mkdir /export/linux/SL_44_i386
[root@sprace ~]# vim download.verbose
set ftp:list-options -a
open ftp.scientificlinux.org/linux/scientific/44/i386
lcd /export/linux/SL_44_i386
mirror --delete --exclude sites/Fermi --exclude errata/debuginfo
--exclude errata/obsolete --verbose=4
quit
[root@sprace ~] nohup lftp -f download.verbose &
O que demorou umas 3 horas, aproximadamente. Agora vamos comecar a ajustar o dhcp para entregar um ip logo de cara para o pxe:

[root@sprace ~]# more /etc/dhcpd.conf

# sample configuration file for DHCP ISC 3.0

ddns-update-style none;

# Definition of PXE-specific options
# Code 1: Multicast IP address of bootfile
# Code 2: UDP port that client should monitor for MTFTP responses
# Code 3: UDP port that MTFTP servers are using to listen for MTFTP requests
# Code 4: Number of seconds a client must listen for activity before trying
#         to start a new MTFTP transfer
# Code 5: Number of seconds a client must listen before trying to restart
#         a MTFTP transfer

option space PXE;
option PXE.mtftp-ip               code 1 = ip-address;
option PXE.mtftp-cport            code 2 = unsigned integer 16;
option PXE.mtftp-sport            code 3 = unsigned integer 16;
option PXE.mtftp-tmout            code 4 = unsigned integer 8;
option PXE.mtftp-delay            code 5 = unsigned integer 8;
option PXE.discovery-control      code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr   code 7 = ip-address;

# PXE specific options
class "pxeclients" {
  match if substring (option vendor-class-identifier, 0, 9) =
         "PXEClient";
  option vendor-class-identifier "PXEClient";
  vendor-option-space PXE;
  option PXE.mtftp-ip 0.0.0.0;
}

subnet 200.136.80.0 netmask 255.255.255.0
   {
   }
subnet 192.168.1.0 netmask 255.255.255.0 {
  deny unknown-clients;
  min-lease-time 300;
  default-lease-time 1800;
  max-lease-time 1800;
  use-host-decl-names on;
  option subnet-mask 255.255.255.0;
  option routers 192.168.1.200;

host spg04
{
        hardware ethernet 00:30:48:71:D2:48;
        fixed-address spg04;
        filename "/tftpboot/pxelinux.0";
}
   }
[root@sprace ~]# /etc/init.d/dhcpd start
Aqui só mostrei a linha da spg04. Observe que ela aponta para o /tftpboot/pxelinux.0 para acionar o pxe do nó.

Devemos configurar o xinet.d

[root@sprace ~]# more /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers,
#       \
#       and to start the installation process for some operating systems.
service tftp
{
        disable                 = no
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = /tftpboot
        per_source              = 11
        cps                     = 100 2
#       flags                   = IPv4
}
[root@sprace ~]# /etc/init.d/xinetd restart	
Basicamente é setar o disable como no, existia um -s no server_args e comentamos o flags.

Agora fomos no http://rpmfind.net e pegamos o tftp-hpa e instalamos na sprace:

[root@sprace ~]# rpm -ivh tftp-hpa-0.32-2.i386.rpm
E comecamos a construir a arvore de diretório do /tftpboot na mão:
[root@sprace ~]# cd /tftpboot
[root@sprace tftpboot]# mkdir pxelinux.cfg
[root@sprace tftpboot]# vim pxelinux.cfg/default
#SERIAL 1 19200

# Mensagem a ser apresentada
DISPLAY msgs/message.txt

# timeout de espera
TIMEOUT 100

# Sempre mostrar o prompt
PROMPT  1

# Default e' realizar a instalacão
DEFAULT linux

LABEL linux
    kernel vmlinuz
    append ks=nfs:192.168.1.200:/export/linux/kickstart/ks.cfg initrd=initrd.img  devfs=nomount ksdevice=eth0
#console=ttyS1,19200

LABEL boot
    LOCALBOOT 0
A linha append é um argumento passado para o kernel vmlinuz no diretorio /tftpboot que será bootado. Logo deve ser uma linha única. ele aponta para o ks.cfg. Como temos duas interfaces de rede, devemos setar o ksdevice para indicar por qual delas o kickstart ira "puxar" os arquivos de instalacão (mistério: a placa de rede ligado na rede interna é a eth1, mas instalacão só funcionou setando para eth0!).

Configuramos uma mensagem como se fosse o lilo ou o grub:

[root@sprace tftpboot]# mkdir msgs
[root@sprace tftpboot]# vim msgs/message.txt
Mensagem a ser apresentada no momento de boot

47                                              07
47               ITAUTEC CLUSTER                07
47               0741Boot Management0747                07
47                                              07
47   Press:                                     07
47      0741boot     0747 for normal boot               07
47      0741linux    0747 to install a new node         07
47                                              07

O mais importante é que o nó consiga buscar da sprace o pxelinux.0 (vem na instalacão do tftpboot), um kernel (vmlinuz) e o initrd.img que vamos pegar do repositório (na verdade acho que poderia ser qualquer kernel e initrd.img!!)

[root@sprace tftpboot]# cp  /export/linux/SL_44_i386/images/SL/pxeboot/vmlinuz /tftpboot/.
[root@sprace tftpboot]# cp /export/linux/SL_44_i386/images/SL/pxeboot/initrd.img /tftpboot/.
[root@sprace tftpboot]# cp /tftpboot/linux-install/pxelinux.0 .
[root@sprace tftpboot]# ls /tftpboot/
initrd.img  linux-install  msgs  pxelinux.0  pxelinux.cfg  vmlinuz

O ks.cfg foi criado usando uma interface gráfica na sprace, o Kickstart Configurator (no Applications->System Tools). Em qualquer um dos nós existe um arquivo /root/anaconda-ks.cfg que é feito pelo instalador do SL linux. Exporte ele para sprace, e carregue no aplicativo usando File-> Open File. O importante é ajustar o Instalation Method. O arquivo deve ficar como abaixo:

[root@sprace mdias]# more /export/linux/kickstart/ks.cfg
#Generated by Kickstart Configurator
#platform=x86, AMD64, or Intel EM64T

#System  language
lang en_SG
#Language modules to install
langsupport en_SG
#System keyboard
keyboard br-abnt2
#System mouse
mouse
#Sytem timezone
timezone America/Sao_Paulo
#Root password
rootpw --iscrypted $1$PaanCc7b$YxIe3kD9qpT0kGjyKBQSM.
#Upgrade existing installation
upgrade
#Use NFS installation Media
nfs --server=192.168.1.200  --dir=/export/linux/SL_44_i386/
#System bootloader configuration
bootloader --location=mbr
#System authorization infomation
auth  --useshadow  --enablemd5
#Network information
network --bootproto=static --ip=192.168.1.101 --netmask=255.255.255.0
--gateway=192.168.1.150 --nameserver=143.107.128.16,143.107.128.17
--device=eth0
network --bootproto=dhcp --device=eth1

Agora vamos entrar no aquário, rebootar o nó, entrar na bios e colocar a primeira placa de rede como primeiro boot device. Depois da instalacão devemos dar reboot e tirar a primeira placa de rede e voltar a configuracão original.

Basicamente isto subiu a spg04.

Depois da verificamos que o servico yum roda no cron atualizando o sistema automaticamente, o que não é desejado.

Updates

Marco em 03/05/2007

  • Todos os nós devem ter no /etc/sysconfig/network-scripts/ifcfg-eth1 a linha HWADDR preenchida senão a interface de rede é trocada depois da upgrade nestas versões do SL.
  • Para que a receita funcionasse no nós é necessario modifica, na sprace o ksdevice para eth1 no /tftpboot/pxelinux.cfg/default
  • Foi comentada a linha sobre configuracão de rede e colocada uma linha para desligar os servicos desnecessários após a instalacao no ks.cfg:
[root@sprace ~]# more /export/linux/kickstart/ks.cfg
#Generated by Kickstart Configurator
#platform=x86, AMD64, or Intel EM64T

#System  language
lang en_SG
#Language modules to install
langsupport en_SG
#System keyboard
keyboard br-abnt2
#System mouse
mouse
#Sytem timezone
timezone America/Sao_Paulo
#Root password
rootpw --iscrypted $1$PaanCc7b$YxIe3kD9qpT0kGjyKBQSM.
#Upgrade existing installation
upgrade
#Use NFS installation Media
nfs --server=192.168.1.200  --dir=/export/linux/SL_44_i386/
#System bootloader configuration
bootloader --location=mbr
#System authorization infomation
auth  --useshadow  --enablemd5
#Network information
#network --bootproto=static --ip=192.168.1.101 --netmask=255.255.255.0 --gateway=192.168.1.150 #--nameserver=143.107.128.16,143.107.128.17 --device=eth0
#network --bootproto=dhcp --device=eth1
%post
/sbin/chkconfig yum off
/sbin/chkconfig iiim off
/sbin/chkconfig ccsd off
/sbin/chkconfig pcmcia off
A linha %post desliga o yum, iiim ccsd e pcmcia.

  • Nos nos da primeira fase para fazer a upgrade mudavamos na Bios boot_> boot device priority-> IBA GE SLOT 310V. Nos nos da segunda fase o dispositivo era IBA GE SLOT 320V e nos nos da terceira IBA GE SLOT 0401. As vezes é necessário, se o boot remoto nao esta habilitado coloca-lo na bios na aba PCI. Importante : depois verificamos que o trabalho enorme de ficar modificando a bios pode ser suprimido apertando F12 na inicializacao! Assim não é necessário modificar a bios e ele vai para o boot remoto automaticamente!
  • Comentamos ainda a última linha do /etc/inittab
#co: 12345:respaw:/sbin/agetty ttyS0 9600 vt100_nat
dos nós com a porta serial ligada no nobreak. Assim o servico agetty nao entope os e-mails com erro na porta serial nestes nós por existir dois servicos usando a mesma porta. Devemos fazer com que o kernel leia este novo inittab:
telinit q

Ciclano em dd/mm/aaaa

Mais comentarios
Topic attachments
I Attachment Action Size Date Who Comment
elseEXT default manage 0.4 K 03 May 2007 - 12:35 MarcoAndreFerreiraDias arquivo para o tftpboot
elseconf dhcpd.conf manage 12.0 K 03 May 2007 - 12:20 MarcoAndreFerreiraDias Arquivo para o dhcp
elseimg initrd.img manage 3511.9 K 03 May 2007 - 12:28 MarcoAndreFerreiraDias initrd para bootar remoto
elsecfg ks.cfg manage 0.9 K 03 May 2007 - 12:23 MarcoAndreFerreiraDias configuracao para o kickstart
elserpm tftp-hpa-0.32-2.i386.rpm manage 17.0 K 03 May 2007 - 12:31 MarcoAndreFerreiraDias  
elseEXT vmlinuz manage 1469.1 K 03 May 2007 - 12:27 MarcoAndreFerreiraDias kernel para bootar remoto
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r2 < r1 | More topic actions
 
Home
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback