sexta-feira, 20 de fevereiro de 2009

Novo conteúdo para as provas Linux ( em abril )

Pessoal o conteúdo das provas de certificação a partir de abril é o que está descrito aqui: https://group. lpi.org/publicwi ki/bin/view/ Examdev/LPIC- 10x

quarta-feira, 18 de fevereiro de 2009

Uso de vários caminhos de rede IP em um sistema do Solaris com regiões instaladas - Solaris 10

Como usar vários caminhos de rede IP em regiões não globais com IP exclusivo - Solaris 10.

Vários caminhos de rede IP (IPMP) em uma região de IP exclusivo é configurada da mesma maneira que na região global.

Você pode configurar uma ou mais interfaces físicas em um grupo de vários caminhos IP, ou grupo IPMP. Após configurar IPMP, o sistema monitora automaticamente as interfaces no grupo IPMP para verificar falhas. Se uma interface no grupo falhar ou for removida para manutenção, IPMP migrará automaticamente, ou falhará, os endereços IP da interface falha. O recipiente desses endereços é uma interface funcional no grupo IPMP da interface falha. O recurso de falha de IPMP preserva a conectividade e impede a interrupção de quaisquer conexões existentes. Adicionalmente, IPMP melhorar o desempenho geral da rede ao propagar automaticamente o tráfego de rede no conjunto de interfaces no grupo IPMP. Este processo é chamado de propagação de carga.

  1. Torne-se superusuário ou assuma a função de administrador principal.

    Para criar a função e atribuí-la a um usuário, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Configure grupos IPMP como descrito em Configuring IPMP Groups no System Administration Guide: IP Services .

Como estender a funcionalidade de vários caminhos de rede IP para regiões não globais com IP compartilhado

Use este procedimento para configurar IPMP na região global e estenda a funcionalidade de IPMP para regiões não globais.

Cada endereço, ou interface lógica, deve ser associada a uma região não global quando você configura a região. Consulte Uso do comando zonecfg e Como configurar a região para obter instruções.

Este procedimento realiza o seguinte:

  • As placas bge0 e hme0 são configuradas em um grupo.

  • O endereço 192.168.0.1 é associado à região não global my-zone.

  • A placa bge0 é defina como interface física. Assim, o endereço IP é hospedado no grupo que contém as placas bge0 e hme0.

Em uma região em execução, você pode usar o comando ifconfig para fazer a associação. Consulte Interfaces de rede com IP compartilhado e a página do manual ifconfig(1M).

É necessário ser administrador global na região global para executar este procedimento.

  1. Torne-se superusuário ou assuma a função de administrador principal.

    Para criar a função e atribuí-la a um usuário, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Na região global, configure grupos IPMP como descrito em Configuring IPMP Groups no System Administration Guide: IP Services.

  3. Use o comando zonecfg para configurar a região. Quando você configurar o recurso net, adicione o endereço 192.168.0.1 e a interface física bge0 e a configuração do roteador padrão à região my-zone:

    zonecfg:my-zone> add net
    
    zonecfg:my-zone:net> set address=192.168.0.1
    zonecfg:my-zone:net> set physical=bge0
    zonecfg:my-zone:net> set defrouter=10.0.0.1
    zonecfg:my-zone:net> end

    Somente bge0 deve ser visível na região não global my-zone.

Se bge0 falhar subseqüentemente

Se bge0 falhar subseqüentemente e o endereço de dados bge0 falhar em hme0 na região global, os endereços de my-zone também migrarão.

Se o endereço 192.168.0.1 se mover para hme0, somente hme0 será visível agora na região não global my-zone. Esta placa será associada ao endereço 192.168.0.1 , e bge0 não será mais visível.

Configuração de IPMP (Multipath - Failover virtual de interfaces de rede) - Solaris

O IPMP (Multipath - Failover virtual de interfaces de rede) é uma ferramenta que foi disponibilizada a partir do Solaris 8 para garantir uma maior disponibilidade da conexão de rede.

Importante:
Duas placas de rede ( caso das placas QUAD-GIGA será necessário 2, pois senão não terá redundância)
3 endereços IP (1 para alta disponibilidade, os outros 2 serão usados um em cada interface)
Os 3 endereços IP devem ser cadastrados no arquivo /etc/hosts com .

Exemplo:

10.0.0.1 serv IP que será colocado em “alta disponibilidade”
10.0.0.2 serv_int1 # IP interno da primeira interface
10.0.0.3 serv_int2 # IP interno da segunda interface

É necessário a criação do grupo relacionadas as interfaceis de redes fisicas:

Usando como exemplo as interfaces hme0 e hme1 e o grupo PUB, temos:

Estando a interface hme0 já configurada como o IP de “alta disponibilidade”, digite os comandos:

# ifconfig hme0 group pub
# ifconfig hme0 addif serv_int1 netmask + -failover deprecated up

Obs.: após esse comando será criado uma interface virtual hme0:1 com o ip de serv_int1. O ip de serv já deverá estar na hme0.

Para a interface standby (hme1) digite os comandos:

# ifconfig hme1 plumb *(habilita a placa)
# ifconfig hme1 group pub
# ifconfig hme1 serv_int2 netmask + -failover deprecated standby up

Obs.: Os ip´s de serv e serv_int1 estarão na interface hme0 e o ip de serv_int2 estará na interface hme1. Caso a interface serv_int1 cair, o ip de serv passará para a interface hme1:1.
Quando o problema for sanado, o IP voltará automaticamente para a interface default.

Exemplo de ifconfig -a após a configuração do failover:


ce0: flags=9040843 mtu 1500 index 2
inet 10.0.0.1 netmask fffff000 broadcast 10.4.15.255
groupname pub
ether 0:3:ba:3:ca:b2

ce0:1: flags=1000843 mtu 1500 index 2
inet 10.0.0.2 netmask fffff000 broadcast 10.4.15.255

ce1: flags=69040843 mtu 1500 index 3
inet 10.0.0.3 netmask fffff000 broadcast 10.4.15.255
groupname pub
ether 0:3:ba:3:ca:7a


Obs.: Uma das interfaces fica em modo STANDBY, INACTIVE, ela será ativada e receberá o ip de alta disponibilidade caso ocorra algum problema na interface principal.

/var/adm/messages quando ocorre a troca:

Feb 15 16:24:14 amon genunix: WARNING: ce0: fault detected external to device; service degraded
Feb 15 16:24:14 amon genunix: WARNING: ce0: xcvr addr:0×01 - link down
Feb 15 16:24:14 amon in.mpathd[118]: The link has gone down on ce0
Feb 15 16:24:14 amon in.mpathd[118]: NIC failure detected on ce0 of group pub
Feb 15 16:24:14 amon in.mpathd[118]: Successfully failed over from NIC ce0 to NIC ce1

As configurações via linha de comando são esquecidas após um reboot do servidor, para preservar essas configurações no boot, edite /etc/hostname.hme0 e /etc/hostname.hme1.
Por exemplo:

/etc/hostname.hme0
serv_int1 netmask + broadcast + group pub deprecated -failover up
addif serv netmask + broadcast + failover up

/etc/hostname.hme1
serv_int2 netmask + broadcast + group pub deprecated -failover standby up

Depois reinicie o servidor e verifique se está funcionando corretamente retirando um cabo de rede de cada vez.

Dica: Se sua rede estiver com escassez de endereços IP, configure os IPs de serv_int1 e serv_int2 com IPs de outra rede, por exemplo 192.168.0.1 e 192.168.0.2, enquanto que serv fica com o IP 10.0.0.1 . Você perderá a funcionalidade de pingar em cada placa individualmente, mas economizará 2 IPs.

terça-feira, 17 de fevereiro de 2009

Configuração de failover ( Linux)

Irei postar hoje, como fazer uma configuração de placa de rede com alta disponibilidade.
A configuração é bem simples, mas também muito eficaz !
Esta configuração, foi testada no redhat 5 RHE, sendo que, basta seguir o mesmo conceito para que funcione em outras versões. Caso não ! É necessário recompilar o kernel com o módulo de bonding habilitado.

Para esta configuração é necessário existir mais de uma placa de rede e termos três IP's !
Bom vamos a configuração:
As duas placas de rede irão responder por uma única virtual chamada aqui de bond0.

Criação do arquivo do bond /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=
NETMASK=
USERCTL=no
GATEWAY=

Edite o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0 (faça uma cópia antes de alterar)e altere por:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Edite o arquivo /etc/sysconfig/network-scripts/ifcfg-eth1 (faça uma cópia antes de alterar) e altere por:

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

No arquivo /etc/modprobe.conf inclua a seguinte linha abaixo:

alias bond0 bonding
options bond0 mode=1 miimon=100 max_bonds=1 primary=eth0



mode=1 -> failover

miimon=100 -> tempo em milissegundos para ativar o failover

max_bonds=1 -> quantidade de bonds (failovers) que serão feitos. Se o servidor for um proxy por exemplo é interessante ter dois bonds (4 placas de rede), um para a internet e um para a lan.

primary=eth0 -> interface de rede que ficará ativa quando tudo estiver ok.

PS: Cada cabo de rede, deverá está conectado em switch diferentes para que exista a redundância, pois caso um apresente problema o outro está no ar. Caso coloque os dois cabos das duas placas no mesmo switch todo o trabalho será perdido, pois não irá existir a redundância.
É necessário fazer o restart do serviço de rede:
service network restart

Para verificar o status da configuração:

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:19:b9:eb:23:86

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:19:b9:eb:23:88



sexta-feira, 13 de fevereiro de 2009

Script de mudança de configuração dos parâmetros de rede ( Servidores Sun Fire)

Importante: Antes de alterar a configuração da placa de rede para full ou half de 10 para 100 ou 1GB, verifique as configurações. No tópico; Script para verificação de configuração da placa de rede ( Modelo Sun Fire ), você poderá pegar o script para verificação da configuração da sua placa de rede.
Lembrando que terá que verificar qual a placa ( ce, qfe, hme e etc ) para realizar a mudança.
Exemplo: Caso sua placa seja: hme1 terá que retirar todas as # como exemplo abaixo:

PATH=/usr/bin:/usr/sbin

case "$1" in
'start')
echo "Implementing Solaris Network Tuning."

# hme-Interfaces
# hme0
#ndd -set /dev/hme instance 0
#ndd -set /dev/hme adv_100T4_cap 0
#ndd -set /dev/hme adv_100fdx_cap 1
#ndd -set /dev/hme adv_100hdx_cap 0
#ndd -set /dev/hme adv_10fdx_cap 0
#ndd -set /dev/hme adv_10hdx_cap 0
#ndd -set /dev/hme adv_autoneg_cap 0
# hme1
ndd -set /dev/hme instance 1
ndd -set /dev/hme adv_100T4_cap 0
ndd -set /dev/hme adv_100fdx_cap 1
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_10fdx_cap 0
ndd -set /dev/hme adv_10hdx_cap 0
ndd -set /dev/hme adv_autoneg_cap 0


Salvar com wq! e executar o script. Segue o script abaixo:

#!/sbin/sh
# /etc/rc2.d/S68net-tune /etc/init.d/net-tune
# Copyright (c) 2000 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident "@(#)net-tune 1.6.4 030416 SMI ES-PTS-NET/Lor"
#
# Edit the following example code to suit your needs.
# Depending on your changes, this script overwrites the Sun recommended default
# values (To use the default values, you do not need this script). See Product
# Documentation and SunSolve Infodocs for proper use first (e.g. Infodocs 17416,
# 23041, 41665). Most parameters must be set on both sides to have effect
# (e.g. check switch and IP partner settings).
# To install:
# 1) cp S68net-tune to /etc/rc2.d
# 2) perform edits on the sript as required
# 3) chmod 744 /etc/rc2.d/S68net-tune
# 4) chown root:sys /etc/rc2.d/S68net-tune
# 5) ln /etc/rc2.d/S68net-tune /etc/init.d/net-tune

PATH=/usr/bin:/usr/sbin

case "$1" in
'start')
echo "Implementing Solaris Network Tuning."

# hme-Interfaces
# hme0
#ndd -set /dev/hme instance 0
#ndd -set /dev/hme adv_100T4_cap 0
#ndd -set /dev/hme adv_100fdx_cap 1
#ndd -set /dev/hme adv_100hdx_cap 0
#ndd -set /dev/hme adv_10fdx_cap 0
#ndd -set /dev/hme adv_10hdx_cap 0
#ndd -set /dev/hme adv_autoneg_cap 0
# hme1
#ndd -set /dev/hme instance 1
#ndd -set /dev/hme adv_100T4_cap 0
#ndd -set /dev/hme adv_100fdx_cap 1
#ndd -set /dev/hme adv_100hdx_cap 0
#ndd -set /dev/hme adv_10fdx_cap 0
#ndd -set /dev/hme adv_10hdx_cap 0
#ndd -set /dev/hme adv_autoneg_cap 0

# eri-Interfaces
# eri0
#ndd -set /dev/eri instance 0
#ndd -set /dev/eri adv_100T4_cap 0
#ndd -set /dev/eri adv_100fdx_cap 1
#ndd -set /dev/eri adv_100hdx_cap 0
#ndd -set /dev/eri adv_10fdx_cap 0
#ndd -set /dev/eri adv_10hdx_cap 0
#ndd -set /dev/eri adv_autoneg_cap 0

# qfe-Interfaces
# qfe0
#ndd -set /dev/qfe instance 0
#ndd -set /dev/qfe adv_100T4_cap 0
#ndd -set /dev/qfe adv_100fdx_cap 1
#ndd -set /dev/qfe adv_100hdx_cap 0
#ndd -set /dev/qfe adv_10fdx_cap 0
#ndd -set /dev/qfe adv_10hdx_cap 0
#ndd -set /dev/qfe adv_autoneg_cap 0
# qfe1
#ndd -set /dev/qfe instance 1
#ndd -set /dev/qfe adv_100T4_cap 0
#ndd -set /dev/qfe adv_100fdx_cap 1
#ndd -set /dev/qfe adv_100hdx_cap 0
#ndd -set /dev/qfe adv_10fdx_cap 0
#ndd -set /dev/qfe adv_10hdx_cap 0
#ndd -set /dev/qfe adv_autoneg_cap 0

# dmfe-Interfaces (Netra X1)
# dmfe0
#ndd -set /dev/dmfe0 adv_100fdx_cap 1
#ndd -set /dev/dmfe0 adv_100hdx_cap 0
#ndd -set /dev/dmfe0 adv_10fdx_cap 0
#ndd -set /dev/dmfe0 adv_10hdx_cap 0
#ndd -set /dev/dmfe0 adv_autoneg_cap 0
# dmfe1
#ndd -set /dev/dmfe1 adv_100fdx_cap 1
#ndd -set /dev/dmfe1 adv_100hdx_cap 0
#ndd -set /dev/dmfe1 adv_10fdx_cap 0
#ndd -set /dev/dmfe1 adv_10hdx_cap 0
#ndd -set /dev/dmfe1 adv_autoneg_cap 0

# vge-Interfaces (Gigabit 1.x)
# vge0
#ndd -set /dev/vge instance 0
#ndd -set /dev/vge fdr_filter 1
#ndd -set /dev/vge link_negotiation 0
# vge1
#ndd -set /dev/vge instance 1
#ndd -set /dev/vge fdr_filter 1
#ndd -set /dev/vge link_negotiation 0

# ge-Interfaces (Gigabit 2.x and 3.x)
# example: forced 1000 Mbit/s, 802.3x Flow Control send and receive
# check if your NIC is 802.3x capable (ndd parameter pause_cap, asm_dir_cap)
# ge0
#ndd -set /dev/ge instance 0
#ndd -set /dev/ge adv_1000fdx_cap 1
#ndd -set /dev/ge adv_1000hdx_cap 0
#ndd -set /dev/ge adv_pauseTX 1
#ndd -set /dev/ge adv_pauseRX 1
#ndd -set /dev/ge adv_1000autoneg_cap 0
# ge1
#ndd -set /dev/ge instance 1
#ndd -set /dev/ge adv_1000fdx_cap 1
#ndd -set /dev/ge adv_1000hdx_cap 0
#ndd -set /dev/ge adv_pauseTX 1
#ndd -set /dev/ge adv_pauseRX 1
#ndd -set /dev/ge adv_1000autoneg_cap 0

# ce-Interfaces (GigaSwift 1.0 UTP)
# example: forced 1000 Mbit/s, 802.3x Flow Control send and receive
# ce0
#ndd -set /dev/ce instance 0
# Master values, change in forced 1000 Mbit/s back-to-back config only:
#ndd -set /dev/ce link_master 0 # one link partner 1, the other 0 (ce <=1.118) #ndd -set /dev/ce master_cfg_enable 1 # enable usage of master_cfg_value (ce >1.118)
#ndd -set /dev/ce master_cfg_value 0 # one link partner 1, the other 0 (ce >1.118)
# Speed/Mode values, set the desired to 1, all other to 0:
#ndd -set /dev/ce adv_1000fdx_cap 1
#ndd -set /dev/ce adv_1000hdx_cap 0
#ndd -set /dev/ce adv_100fdx_cap 0
#ndd -set /dev/ce adv_100hdx_cap 0
#ndd -set /dev/ce adv_10fdx_cap 0
#ndd -set /dev/ce adv_10hdx_cap 0
#ndd -set /dev/ce adv_asmpause_cap 0
#ndd -set /dev/ce adv_pause_cap 1
#ndd -set /dev/ce adv_autoneg_cap 0
# ce1
#ndd -set /dev/ce instance 1
# Master values, change in forced 1000 Mbit/s back-to-back config only:
#ndd -set /dev/ce link_master 0 # one link partner 1, the other 0 (ce <=1.118) #ndd -set /dev/ce master_cfg_enable 1 # enable usage of master_cfg_value (ce >1.118)
#ndd -set /dev/ce master_cfg_value 0 # one link partner 1, the other 0 (ce >1.118)
# Speed/Mode values, set the desired to 1, all other to 0:
#ndd -set /dev/ce adv_1000fdx_cap 1
#ndd -set /dev/ce adv_1000hdx_cap 0
#ndd -set /dev/ce adv_100fdx_cap 0
#ndd -set /dev/ce adv_100hdx_cap 0
#ndd -set /dev/ce adv_10fdx_cap 0
#ndd -set /dev/ce adv_10hdx_cap 0
#ndd -set /dev/ce adv_asmpause_cap 0
#ndd -set /dev/ce adv_pause_cap 1
#ndd -set /dev/ce adv_autoneg_cap 0

# switch MTU path discovery off
#ndd -set /dev/ip ip_path_mtu_discovery 0
# TCP/UDP buffer tunings
#ndd -set /dev/tcp tcp_xmit_hiwat 65536
#ndd -set /dev/tcp tcp_recv_hiwat 65536
#ndd -set /dev/udp udp_xmit_hiwat 65536
#ndd -set /dev/udp udp_recv_hiwat 65536
# TCP congestion window size, for Solaris <= 2.5, only
#ndd -set /dev/tcp tcp_cwnd_max 65535
# Change TCP maximum retransmission interval, for Solaris <= 7, only
#ndd -set /dev/tcp tcp_rexmit_interval_max 60000
# Change number of TCP slow start initial packets to work arround
# slow start bug in BSD stack and Windows. For Solaris <= 7, only
#ndd -set /dev/tcp tcp_slow_start_initial 2

;;

'stop')
echo "No kernel parameters changed."
;;

*)
echo "Usage: $0 {start|stop}"
;;

esac
exit 0


Caso você queira forçar essa configuração sempre na inicialização do sistema operacional, basta fazer o seguinte:
Seu script chama mud_parametro.sh e está dentro do home /export/home/script
Faça o seguinte:

1) cp mud_parametro.sh /etc/init.d/S68net-tune
2) chmod 744 /etc/rc2.d/S68net-tune
3) chown root:sys /etc/rc2.d/S68net-tune
4) ln /etc/rc2.d/S68net-tune /etc/init.d/net-tune

Pronto agora sempre que reiniciar o seu servidor ele subirá com a configuração forçada como você desejou !

Script para verificação de configuração da placa de rede ( Modelo Sun Fire )

Importante: Esse script somente funciona em servidores solaris e máquinas Sun Fire, qualquer versão !
PS: Irei também postar para as máquina Txxxx no próximo tópico !

Segue o script:

#!/bin/sh



# $Id: speed_duplex,v 1.3 2007/02/20 20:35:57 hutch Exp $



PATH=/bin:/usr/bin:/usr/sbin



# Print column header information

echo "Interface\tSpeed\t\tDuplex"

echo "---------\t-----\t\t------"



# Determine the speed and duplex for each live NIC on the system

for INTERFACE in `netstat -i | egrep -v "^Name|^lo0" \

| awk '{print $1}' | cut -d: -f1 | sort | uniq`

do

# Only gather information for active interfaces

# Note: "ce" interfaces can be "UP" in "ifconfig" but have link down

ifconfig $INTERFACE | grep "^$INTERFACE:.* /dev/null 2>&1 || continue

# Skip "cip" ATM interfaces

echo $INTERFACE | grep "^cip" > /dev/null 2>&1 && continue

# "ce" interfaces

if [ "`echo $INTERFACE | awk '/^ce[0-9]+/ { print }'`" ] ; then

kstat > /dev/null 2>&1

if [ $? -ne 0 ] ; then

echo "The \"kstat\" command failed for interface $INTERFACE."

continue

fi

# Determine the ce interface number

INSTANCE=`echo $INTERFACE | cut -c 3-`

DUPLEX=`kstat ce:$INSTANCE | grep link_duplex | awk '{ print $2 }'`

case "$DUPLEX" in

0) DUPLEX="link down" ;;

1) DUPLEX="half" ;;

2) DUPLEX="full" ;;

esac

SPEED=`kstat ce:$INSTANCE | grep link_speed | awk '{ print $2 }'`

case "$SPEED" in

0) SPEED="link down" ;;

10) SPEED="10 Mbit/s" ;;

100) SPEED="100 Mbit/s" ;;

1000) SPEED="1 Gbit/s" ;;

esac

# "dmfe" interfaces

elif [ "`echo $INTERFACE | awk '/^dmfe[0-9]+/ { print }'`" ] ; then

# Only the root user should run "ndd"

if [ "`id | cut -c1-5`" != "uid=0" ] ; then

echo "You must be the root user to determine \

${INTERFACE_TYPE}${INSTANCE} speed and duplex information."

continue

fi

DUPLEX=`ndd /dev/${INTERFACE} link_mode`

case "$DUPLEX" in

0) DUPLEX="half" ;;

1) DUPLEX="full" ;;

esac

SPEED=`ndd /dev/${INTERFACE} link_speed`

case "$SPEED" in

10) SPEED="10 Mbit/s" ;;

100) SPEED="100 Mbit/s" ;;

1000) SPEED="1 Gbit/s" ;;

esac

# "bge" and "iprb" interfaces

elif [ "`echo $INTERFACE | awk '/^iprb[0-9]+|bge[0-9]+/ { print }'`" ] ; then

kstat > /dev/null 2>&1

if [ $? -ne 0 ] ; then

DUPLEX="The \"kstat\" command failed for interface $INTERFACE."

continue

fi

# Determine the bge|iprb interface number

INSTANCE=`echo $INTERFACE | tr -d '[a-z]'`

INTERFACE=`echo $INTERFACE | tr -d '[0-9]'`

DUPLEX=`kstat $INTERFACE:$INSTANCE | grep duplex | awk '{ print $2 }'`

SPEED=`kstat $INTERFACE:$INSTANCE | grep ifspeed | awk '{ print $2 }'`

case "$SPEED" in

10000000) SPEED="10 Mbit/s" ;;

100000000) SPEED="100 Mbit/s" ;;

1000000000) SPEED="1 Gbit/s" ;;

esac

# le interfaces are always 10 Mbit half-duplex

elif [ "`echo $INTERFACE | awk '/^le[0-9]+/ { print }'`" ] ; then

DUPLEX="half"

SPEED="10 Mbit/s"

# All other interfaces

else

INTERFACE_TYPE=`echo $INTERFACE | sed -e "s/[0-9]*$//"`

INSTANCE=`echo $INTERFACE | sed -e "s/^[a-z]*//"`

# Only the root user should run "ndd"

if [ "`id | cut -c1-5`" != "uid=0" ] ; then

echo "You must be the root user to determine \

${INTERFACE_TYPE}${INSTANCE} speed and duplex information."

continue

fi

ndd -set /dev/$INTERFACE_TYPE instance $INSTANCE

SPEED=`ndd -get /dev/$INTERFACE_TYPE link_speed`

case "$SPEED" in

0) SPEED="10 Mbit/s" ;;

1) SPEED="100 Mbit/s" ;;

1000) SPEED="1 Gbit/s" ;;

esac

DUPLEX=`ndd -get /dev/$INTERFACE_TYPE link_mode`

case "$DUPLEX" in

0) DUPLEX="half" ;;

1) DUPLEX="full" ;;

*) DUPLEX="" ;;

esac

fi

echo "$INTERFACE\t\t$SPEED\t$DUPLEX"

done




PS: Abaixo o resultado da execução do script:

Interface Speed Duplex
--------- ----- ------
ce0 100 Mbit/s full

quinta-feira, 12 de fevereiro de 2009

Compilar kernel no Linux

Passos para compilação de kernel:

Conhecer bem a sua máquina. Esse, com certeza, é o ponto mais importante.

Obter o código do kernel a ser compilado.

Obs.: Se for recompilar o kernel atual, o código deve estar em /usr/src. Se não, procurar no CD/DVD da distribuição o pacote kernel-source.

Criar em /usr/src um diretório com o código do kernel a ser compilado. Remover o link "linux" e criar outro com o mesmo nome (linux), apontando para o diretório recém criado.

Obs.: Se for recompilar, criar um diretório com nome diferente do que já existe e colocar o conteúdo do anterior dentro dele.

Dentro do diretório do código a ser compilado executar:

# make mrproper
ou
# make clean

Os comandos acima só necessitam ser executados quando for uma recompilação. Vale lembrar que "make mrproper" apaga tudo, inclusive o .config, coisa que o "make clean" não faz. É interessante utilizar o "make clean" para continuar com o .config anterior para somente modificar o que for necessário nele.

# make config
ou
# make menuconfig
ou
# make xconfig

e

# make

Obs.: Para um kernel da série 2.4 utilizar "make dep", "make bzImage", "make modules" ao invés do make.

# make modules_install

Em /etc/rc.d criar um arquivo rc.modules.

Em /boot criar um link para /usr/src/linux/arch/x86/boot/bzImage.

Editar o lilo.conf, acrescentando uma entrada para a nova imagem do kernel:

image = /boot/bzImage
initrd = /boot/initrd.gz (cf. 13)
root = /dev/
lable =

Executar em /boot o comando:

# mkinitrd -c -k -m

Esse comando irá gerar o initrd.gz que deve ser adicionado ao lilo.conf. Torna-se necessário se o sistema de arquivos for compilado como um módulo do kernel.

# lilo

Reiniciar a máquina e iniciar pelo kernel compilado.

Como configurar um relay de sendmail

Irei explicar como ativar um relay para o sendmail !

Levar em consideração: Onde estiver escrito servidor é o hostname do servidor.
PS: Esta configuração foi testada em Solaris 9 !

1) Criar um arquivo servidor.mc com o seguinte conteúdo
divert(0)dnl
include(../m4/cf.m4)
VERSIONID(`$Header$')
OSTYPE(`solaris8')
FEATURE(masquerade_envelope)dnl
MASQUERADE_AS(servidor.dominio.br)dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
FEATURE(`mailertable')dnl
FEATURE(`redirect')dnl
FEATURE(`access_db')
FEATURE(`accept_unqualified_senders')
MAILER(local)
MAILER(smtp)


2) Compilar o arquivo, gerando um ".cf"

# m4 servidor.mc >servidor.cf

3) Fazer backup do arquivo sendmail.cf original

# cd /etc/mail
# cp sendmail.cf sendmail.cf.bkp.`date "+%Y-%m-%d_%H%M"`

4) Copiar o arquivo gerado servidor.cf como /etc/mail/sendmail.cf

# cp /usr/lib/mail/cf/servidor.cf /etc/mail/sendmail.cf

5) Criar o arquivo /etc/default/sendmail, com a linha
MODE=-bd

6) Criar o arquivo /etc/mail/mailertable, com o conteúdo
dominio.com.br smtp:servidor exchange.dominio.br

6.1) Compilar a mailertable
# makemap hash /etc/mail/mailertable
7) Criar o arquivo /etc/mail/access, com o conteúdo
127.0.0.1 RELAY
dominio.com.br RELAY
dominio.br RELAY


7.1) Compilar a tabela de acesso
# makemap hash /etc/mail/access
8) Criar a tabela de servidores que estão os relay autorizado (/etc/mail/relay-domains) com o conteúdodo
servidor RELAY

(Obs.: Tem que ser o nome que o servidor reconhece como sendo o nome do host que quer fazer relay)

9) Verificar a configurações de DNS
# cat /etc/resolv.conf
nameserver xx.xx.xx.30
nameserver xx.xx.xx.30
domain dominio.br

10) Alterar a configurações do Name switch (/etc/nsswitch.conf)
== Na linha
hosts: files
== Alterar para
hosts: files dns

11) Alterar o arquivo /etc/hosts, eliminando o "." como alias do host
Linha original
xx.xx.xx.204 servidor loghost . servidor.dominio.br
Linha alterada
xx.xx.xx.204 servidor loghost servidor.dominio.br

12) Iniciar o sendmail e realizar os testes

# /etc/init.d/sendmail start
# mailx -v -s "Teste" e-maildeteste@yahoo.com.br
teste
.

Espero ter ajudado !

quarta-feira, 11 de fevereiro de 2009

Os comandos básicos do Linux

cal: exibe um calendário;
cat arquivo: mostra o conteúdo de um arquivo. Por exemplo, para ver o arquivo bruno.txt, basta digitar cat bruno.txt;
cd diretório: abre um diretório. Por exemplo, para abrir a pasta /mnt, basta digitar cd /mnt. Para ir ao diretório raiz a partir de qualquer outro, digite apenas cd;
chmod: comando para alterar as permissões de arquivos e diretórios.
clear: elimina todo o conteúdo visível, deixando a linha de comando no topo, como se o sistema acabasse de ter sido acessado;
cp origem destino: copia um arquivo ou diretório para outro local. Por exemplo, para copiar o arquivo bruno.txt com o nome bruno2.txt para /home, basta digitar cp bruno.txt /home/bruno2.txt;
date: mostra a data e a hora atual;
df: mostra as partições usadas;
diff arquivo1 arquivo2: indica as diferenças entre dois arquivos, por exemplo: diff calc.c calc2.c;
du diretório: mostra o tamanho de um diretório;
emacs: abre o editor de textos emacs;
file arquivo: mostra informações de um arquivo;
find diretório parâmetro termo: o comando find serve para localizar informações. Para isso, deve-se digitar o comando seguido do diretório da pesquisa mais um parâmetro (ver lista abaixo) e o termo da busca. Parâmetros:
name - busca por nome
type - busca por tipo
size - busca pelo tamanho do arquivo
mtime - busca por data de modificação
Exemplo: find /home name bruno
finger usuário: exibe informações sobre o usuário indicado;
free: mostra a quantidade de memória RAM disponível;
halt: desliga o computador;
history: mostra os últimos comandos inseridos;
id usuário: mostra qual o número de identificação do usuário especificado no sistema;
kill: encerra processados em andamento.
ls: lista os arquivos e diretórios da pasta atual;
lpr arquivo: imprime o arquivo especificado;
lpq: mostra o status da fila de impressão;
lprm: remove trabalhos da fila de impressão;
lynx: abre o navegador de internet de mesmo nome;
mv origem destino: tem a mesma função do comando cp, só que ao invés de copiar, move o arquivo ou o diretório para o destino especificado;
mkdir diretório: cria um diretório, por exemplo, mkdir bruno cria uma pasta de nome bruno;
passwd: altera sua senha. Para um administrador mudar a senha de um usuário, basta digitar passwd seguido do nome deste;
ps: mostra os processos em execução.
pwd: mostra o diretório em que você está;
reboot: reinicia o sistema imediatamente (pouco recomendável, preferível shutdown -r now);
rm arquivo: apaga o arquivo especificado;
rmdir diretório: apaga o diretório especificado, desde que vazio;
shutdown: desliga ou reinicia o computador, veja:
shutdown -r now: reinicia o computador
shutdown -h now: desliga o computador
O parâmetro now pode ser mudado. Por exemplo: digite shutdown -r +10 e o sistema irá reiniciar daqui a 10 minutos;
su: passa para o usuário administrador, isto é, root (perceba que o símbolo $ mudará para #);
tar -xzvf arquivo.tar.gz: extrai um arquivo compactado em tar.gz;
telnet: ativa o serviço de Telnet em uma máquina. Para acessar esse computador a partir de outros por Telnet, basta digitar telnet nomedamáquina ou telnet IP. Por exemplo: telnet 192.168.0.10. Após abrir o Telnet, digite help para conhecer suas funções;
top: exibe a lista dos processos, conforme os recursos de memória consumidos;
uname: mostra informações do sistema operacional e do computador. Digite uname -a para obter mais detalhes;
useradd usuário: cria uma nova conta usuário, por exemplo, useradd wester cria o usuário wester;
userdel usuário: apaga a conta do usuário especificado;
uptime: mostra a quantas horas seu computador está ligado;
vi: inicia o editor de textos vi. Saiba mais aqui;
whereis nome: procura pelo binário do arquivo indicado, útil para conhecer seu diretório ou se ele existe no sistema;
w: mostra os usuários logados atualmente no computador (útil para servidores);
who: mostra quem está usando o sistema.
Finalizando
Praticamente todos os comandos citados possuem parâmetros que permitem incrementar suas funcionalidades. Por exemplo, se você digitar o comando ls com o parâmetro -R (ls -R), este mostrará todos os arquivos do diretório, inclusive os ocultos.
A melhor forma de conhecer os parâmetros adicionais de cada comando é consultando as informações de ajuda. Para isso, pode-se usar o recurso --help. Veja o exemplo para o comando ls:
ls --help
Também é possível utilizar o comando man (desde que seu conteúdo esteja instalado), que geralmente fornece informações mais detalhadas. Par usar o man para obter detalhes do comando cp, por exemplo, a sintaxe é:
man cp
Se você estiver utilizando o bash, pode-se aplicar o comando help ou info da mesma forma que o comando man:
help cp
info cp

Como configurar um Loadbalanced alta disponibilidade em Cluster com Apache

Este tutorial mostra como criar dois nós no servidor Web Apache em cluster que fornece alta disponibilidade. No Apache criaremos uma carga balanciada em cluster que divide-se entre os dois pedidos recebidos nodos do apache. Porque não queremos que a carga balanceada a tornar-se um ponto de falha, temos de proporcionar alta disponibilidade para a carga balanciada, também. Por isso a nossa carga balanciada irá consistir no fator das duas cargas balanceadas nos nodos que monitoram simultaneamente usando alta disponibilidade, e se uma carga balanceada falhar, o outro assume silenciosamente.

A vantagem de utilizar uma carga balanceada comparada a usar DNS round robin é que cuida da carga sobre o servidor web nodos e envia pedidos diretos para o nó com menor carga, e também cuida de conexões / sessões. Muitas aplicações web (por exemplo, fórum software, carrinhos de compras, etc) fazem uso de sessões.


Para esta configuração, temos quatro nodos (Apache dois nós e duas cargas balanceada nos nós) e cinco endereços IP: um para cada nó e um endereço IP virtual que será partilhado pela carga balanceada dos nodos e utilizados para as solicitações HTTP.


Vou usar a seguinte configuração aqui:


  • Apache node 1: webserver1.example.com (webserver1) - IP address: 192.168.0.101; Apache document root: /var/www

  • Apache node 2: webserver2.example.com (webserver2) - IP address: 192.168.0.102; Apache document root: /var/www

  • Load Balancer node 1: loadb1.example.com (loadb1) - IP address: 192.168.0.103

  • Load Balancer node 2: loadb2.example.com (loadb2) - IP address: 192.168.0.104

  • Virtual IP Address: 192.168.0.105 (used for incoming requests)

Veja a figura abaixo como exemplo:







Neste tutorial vou usar o Debian Sarge para todos os quatro nós. Eu presumo que você tenha instalado uma base instalação Debian em todos os quatro nós, e que você tenha instalado o Apache webserver1 e webserver2, com o / var / www sendo o documento raiz do site principal.

Quero dizer em primeiro lugar, que esta não é a única forma de criar um sistema desse tipo. Há muitas maneiras de configura, mas esta foi a base da minha configuração.


1: Ativar IPVS sobre a carga balanceada:


Primeiro temos de permitir IPVS em nossa carga balanceadas. IPVS (IP Virtual Server) implementa o transporte da camada de balanceamento de carga dentro do kernel do Linux, chamado Layer-4 switching.

loadb1/loadb2:

echo ip_vs_dh >> /etc/modules
echo ip_vs_ftp >> /etc/modules
echo ip_vs >> /etc/modules
echo ip_vs_lblc >> /etc/modules
echo ip_vs_lblcr >> /etc/modules
echo ip_vs_lc >> /etc/modules
echo ip_vs_nq >> /etc/modules
echo ip_vs_rr >> /etc/modules
echo ip_vs_sed >> /etc/modules
echo ip_vs_sh >> /etc/modules
echo ip_vs_wlc >> /etc/modules
echo ip_vs_wrr >> /etc/modules


Então fazemos assim:


loadb1/loadb2:

modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe ip_vs_lblcr
modprobe ip_vs_lc
modprobe ip_vs_nq
modprobe ip_vs_rr
modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr



Se você receber erros, então muito provavelmente o seu kernel não foi compilado com IPVS, você irá precisar compilar um novo kernel com IPVS (ou instalar uma imagem do kernel com suporte IPVS) agora.



2: Instalar Ultra Monkey On The Load Balancers



O que é o Ultra Monkey ?

É um projecto para a criação de carga balanceada e serviços disponíveis em uma rede local utilizando componentes de código aberto sobre o sistema operacional Linux .



Para instalar Ultra Monkey, temos que editar /etc/apt/sources.list, agora e adicionar estas duas linhas (não retire os outros repositórios):

vi /etc/apt/sources.list

deb http://www.ultramonkey.org/download/3/ sarge main deb-src http://www.ultramonkey.org/download/3 sarge main



Segue como instalar:

loadb1/loadb2:

apt-get update


loadb1/loadb2:

apt-get install ultramonkey



Irá aparecer a mensagem de atenção:


  ¦ libsensors3 not functional                                               ¦   ¦                                                                          ¦   ¦ It appears that your kernel is not compiled with sensors support. As a   ¦   ¦ result, libsensors3 will not be functional on your system.               ¦   ¦                                                                          ¦   ¦ If you want to enable it, have a look at "I2C Hardware Sensors Chip      ¦   ¦ support" in your kernel configuration.                                   ¦


Pode ignorar e seguir conforma abaixo:


Do you want to automatically load IPVS rules on boot?
<-- No

Select a daemon method.
<-- none


3: Habilitar o pacote de Load Balancers


A carga balanceada deve ser capaz de rotear o tráfego para o Apache nodos. Por isso, temos de permitir que os pacotes sejam encaminhados para o balanceamento. Adicione as seguintes linhas ao arquivo /etc/sysctl.conf:



loadb1/loadb2:

vi /etc/sysctl.conf

# Enables packet forwarding net.ipv4.ip_forward = 1


Em seguida, faça o seguinte:


sysctl -p


4: Configurar heartbeat e ldirectord


Agora temos que criar três arquivos de configuração para heartbeat. Eles devem ser idênticos em loadb1 e loadb2!


loadb1/loadb2:

vi /etc/ha.d/ha.cf

logfacility        local0 bcast        eth0                # Linux mcast eth0 225.0.0.1 694 1 0 auto_failback off node        loadb1 node        loadb2 respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster



Importante: Como nodenames temos de utilizar a saída:


uname -n


on loadb1 and loadb2.

loadb1/loadb2:

vi /etc/ha.d/haresources

loadb1        \         ldirectord::ldirectord.cf \         LVSSyncDaemonSwap::master \         IPaddr2::192.168.0.105/24/eth0/192.168.0.255


Logo após faça

uname -n

Irá aparecer:

loadb1

Importante: Não importa se você criou o arquivo no loadb1 ou loadb2! Após IPaddr2 colocamos o endereço IP virtual 192.168.0.105.

loadb1/loadb2:

vi /etc/ha.d/authkeys

auth 3 3 md5 somerandomstring



somerandomstring: é uma senha que os dois heartbeat daemons, usam para autenticar um com o outro. Você tem a escolha entre três mecanismos de autenticação. Eu uso md5 como é o mais segur.

/etc/ha.d/authkeys deve ser lido apenas pelo root:


loadb1/loadb2:

chmod 600 /etc/ha.d/authkeys


ldirectord: É o verdadeira balanceador. O que vamos fazer é configurar os nossas dois carga balanceada (loadb1.example.com e loadb2.example.com) em um ativo / passivo na configuração, o que significa que temos uma carga balanceada ativa, e os outros é um hot-standby e torna-se activo se a uma falha na ativa. Para fazê-la funcionar, temos de criar ldirectord o arquivo de configuração /etc/ha.d /ldirectord.cf o que mais uma vez deve ser idêntica em loadb1 e loadb2.



loadb1/loadb2:

vi /etc/ha.d/ldirectord.cf


checktimeout=10 checkinterval=2 autoreload=no logfile="local0" quiescent=yes virtual=192.168.0.105:80         real=192.168.0.101:80 gate         real=192.168.0.102:80 gate         fallback=127.0.0.1:80 gate         service=http         request="ldirector.html"         receive="Test Page"         scheduler=rr         protocol=tcp         checktype=negotiate


virtual = a linha virtual, colocamos nosso endereço IP virtual (192.168.0.105 neste exemplo)

real = linhas que lista os endereços IP dos nossos Apache nodos (192.168.0.101 e 192.168.0.102 neste exemplo).

request = linha que lista o nome de um arquivo em webserver1 e webserver2 que ldirectord irá pedir várias vezes para ver se webserver1 e webserver2 ainda estão vivos. Este arquivo (que vão criar mais adiante) deve conter a seqüência de caracteres listados na

receive = linha.

Depois teremos que criar o sistema de inicialização no heartbeat e remover o start do ldirectord, porque o ldirectord será iniciado pelo heartbeat.


loadb1/loadb2:

update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord remove


Finalmento o start será feito pelo heartbeat


loadb1/loadb2:

/etc/init.d/ldirectord stop
/etc/init.d/heartbeat start


5: Testando o Load Balancers


Vamos verificar se as duas cargas balanceadas estão funcionando como esperamos:


loadb1/loadb2:

ip addr sh eth0


A carga balanceada ativa deve listar o endereço IP virtual (192.168.0.105):


2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000     link/ether 00:16:3e:40:18:e5 brd ff:ff:ff:ff:ff:ff     inet 192.168.0.103/24 brd 192.168.0.255 scope global eth0     inet 192.168.0.105/24 brd 192.168.0.255 scope global secondary eth0   

O hot-standby deve mostrar isto:


2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000     link/ether 00:16:3e:50:e3:3a brd ff:ff:ff:ff:ff:ff     inet 192.168.0.104/24 brd 192.168.0.255 scope global eth0


loadb1/loadb2:

ldirectord ldirectord.cf status

Saída com a participação ativa carga balanceada:


ldirectord for /etc/ha.d/ldirectord.cf is running with pid: 1455




Saída sobre o hot-standby:


ldirectord is stopped for /etc/ha.d/ldirectord.cf



loadb1/loadb2:

ipvsadm -L -n


Saída partição ativa:


IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn TCP  192.168.0.105:80 rr   -> 192.168.0.101:80             Route   0      0          0   -> 192.168.0.102:80             Route   0      0          0   -> 127.0.0.1:80                 Local   1      0          0



Saída partição hot-standby:


IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn


loadb1/loadb2:

/etc/ha.d/resource.d/LVSSyncDaemonSwap master status


Saída partição ativa:


master running (ipvs_syncmaster pid: 1591)

Saída partição hot-standby:


master stopped



PS: Se o obteve sucesso no seu teste, agora vamos o Apache dois nodos.


6: Configurar o Apache com Dois Nodes


Finalmente, devemos configurar nosso cluster Apache nodos webserver1.example.com e webserver2.example.com a aceitar pedidos sobre o endereço IP virtual 192.168.0.105.


webserver1/webserver2:

apt-get install iproute


Adicionar a seguinte configuração dentro de /etc/sysctl.conf


webserver1/webserver2:

vi /etc/sysctl.conf

# Enable configuration of arp_ignore option net.ipv4.conf.all.arp_ignore = 1 # When an arp request is received on eth0, only respond if that address is # configured on eth0. In particular, do not respond if the address is # configured on lo net.ipv4.conf.eth0.arp_ignore = 1 # Ditto for eth1, add for all ARPing interfaces #net.ipv4.conf.eth1.arp_ignore = 1 # Enable configuration of arp_announce option net.ipv4.conf.all.arp_announce = 2 # When making an ARP request sent through eth0 Always use an address that # is configured on eth0 as the source address of the ARP request.  If this # is not set, and packets are being sent out eth0 for an address that is on # lo, and an arp request is required, then the address on lo will be used. # As the source IP address of arp requests is entered into the ARP cache on # the destination, it has the effect of announcing this address.  This is # not desirable in this case as adresses on lo on the real-servers should # be announced only by the linux-director. net.ipv4.conf.eth0.arp_announce = 2 # Ditto for eth1, add for all ARPing interfaces #net.ipv4.conf.eth1.arp_announce = 2

Em seguida, execute o seguinte:


webserver1/webserver2:

sysctl -p


Adicione o endereço IP virtual em /etc/network/interfaces


webserver1/webserver2:

vi /etc/network/interfaces

auto lo:0 iface lo:0 inet static   address 192.168.0.105   netmask 255.255.255.255   pre-up sysctl -p > /dev/null


Em seguida, execute o seguinte:


webserver1/webserver2:

ifup lo:0


Finalmente, temos de criar o arquivo ldirector.html. Este arquivo é solicitado pela Load Balancers nos dois nodos repetidamente para que eles possam ver se o Apache nos dois ainda estão sendo veiculados. Parto do princípio de que o documento raiz do site principal apache sobre webserver1 e webserver2 é /var/www, portanto, nós criamos o arquivo /var/www/ldirector.html


webserver1/webserver2:

vi /var/www/ldirector.html

Test Page


Mais Testes

Você já pode acessar o web site que está hospedado pelo Apache nos dois nodos http://192.168.0.105 escrevendo em seu navegador.

Agora, pare o Apache em ambos webserver1 ou webserver2. Você deve, ainda assim, consultar o site sobre a carga balanceada http://192.168.0.105 porque direciona os pedidos para o trabalho Apache nó. Claro, se você quer parar todos os Apaches, então o seu pedido falhará.

Agora vamos assumir que é o nosso ativo loadb1 com carga balanceada , e loadb2 é o hot-standby. Agora parar heartbeat em loadb1:


loadb1:

/etc/init.d/heartbeat stop


Aguarde alguns segundos e, em seguida, tente novamente http://192.168.0.105 no seu navegador. Você ainda deve ver o seu site porque loadb2 tomou o papel ativo agora.


Ative novamente o heartbeat no nó loadb1


loadb1:

/etc/init.d/heartbeat start


Se você também passou esses testes e, em seguida, o cluster loadbalanced Apache está funcionando como esperado. Divirta-se!

terça-feira, 10 de fevereiro de 2009

Este documento fornece informações sobre como configurar o arquivo ntp em um ambiente em cluster

Ao instalar o software Sun Cluster usando scinstall, um passo no processo é configurar NTP (Network Time Protocol) para o cluster. Sun Cluster software fornece um modelo de arquivo, ntp.cluster (veja / etc / inet / ntp.cluster instalado em um cluster node), que estabelece uma relação entre todos os pares do cluster.

Bom agora vamos a configuração !
Lembrado ! Esta configuração foi testada no Solaris 10

Importante: Para configurar o serviço do ntp, o serviço do cluster tem que está stopado !
Lembrando que essas configurações são sempre feitas com o usuário root.

Mãos a obra:

1: Como já falado acima stopar o serviço do cluster;
2: Verificar os hostname dos nós privado do cluster:

 # scconf -p|grep hostname
Node private hostname: clusternode1-priv
Node private hostname: clusternode2-priv

3: Editar o arquivo /etc/inet/ntp.conf.cluster

 # The local (undisciplined Solaris) clock is identified as 127.127.1.0.
#
# Some type of primary clock is important; but, it does not have
# to be the local kernel clock.
#
#server 127.127.1.0
server 10.22.1.123
server 10.21.2.123
server 10.21.3.123
driftfile /etc/ntp.drift

  
4: Remova qualquer private não utilizado (caso tenha) no hostname (consulte o passo 2), por exemplo:


 #
# One of the "peers" should be "preferred" over the others.
#
peer clusternode1-priv prefer
peer clusternode2-priv
#peer clusternode3-priv

PS: Este passo não é necessário se você estiver executando Sun Cluster 3.1 8/05 (AKA Sun Cluster 3.1 Update 4).

5: Personalize o arquivo como melhor suas necessidades individuais. Qualquer dúvida consultar as instruções no site: http://www.sunsolve.sun.com/show.do?target=home ( documento: <> NTP Information and Setup")

6: Copie o arquivo de configuração para NTP todos os nós do cluster. O conteúdo do arquivo de configuração NTP deve ser idêntica em todos os nós do cluster.

7: Renomear arquivo / etc / inet / ntp.conf arquivo em todos os nós. Como abaixo:

# mv /etc/inet/ntp.conf /etc/inet/ntp.conf.original

PS: No solaris 10 este arquivo não existe.
8: Pare o daemon NTP em cada nó. Como abaixo:

 # /etc/init.d/xntpd stop

PS: Aguarde até que o comando para parar de concluir com êxito em cada nó antes de prosseguir para a Etapa 9.
Caso queira ter certeza que o serviço está stopado, faça:

# svcs -a | grep ntp
legacy_run 15:21:05 lrc:/etc/rc2_d/S72sc_update_ntp
legacy_run 15:21:06 lrc:/etc/rc2_d/S74xntpd_cluster
disabled 15:20:45 svc:/network/ntp:default



Caso o serviço ainda esteja no ar, irá aparecer desta forma:

online Dec_03 svc:/network/ntp:default

Para desabilitar o serviço:

 # svcadm disable ntp

9: Reinicie o daemon NTP em cada nó.
 # /etc/init.d/xntpd.cluster start

10: Para verificar o sincronismo do horário nos nós do cluster:
 # ntpq -p                => Mostra a lista dos servidores.
# date => Verifica a data e hora.
# ps -ef | grep xntpd => Verifica se o serviço está no ar.