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