Малко въведение…
BMC (Baseboard management controller) е контролер, които е доста полезен, ако го имате на дъното си. Като част от BMC е IPMI (Intelligent Platform Management Interface). Няма да влизам в подробности кое как работи, защото това не е цел на тази статия.
На първо време преди да започнем трябва да се уверим, че имаме инсталирани някои инструменти
# rpm -qa |grep OpenIPMI
OpenIPMI-devel-2.0.16-7.el5
OpenIPMI-libs-2.0.16-7.el5
OpenIPMI-python-2.0.16-7.el5
OpenIPMI-perl-2.0.16-7.el5
OpenIPMI-tools-2.0.16-7.el5
OpenIPMI-libs-2.0.16-7.el5
OpenIPMI-2.0.16-7.el5
OpenIPMI-devel-2.0.16-7.el5
Също така ….
# rpm -qa |grep ipmi
freeipmi-bmc-watchdog-0.5.1-6.el5
freeipmi-0.5.1-6.el5
freeipmi-devel-0.5.1-6.el5
freeipmi-ipmidetectd-0.5.1-6.el5
freeipmi-0.5.1-6.el5
freeipmi-devel-0.5.1-6.el5
След като всичко, което ще ни е нужно е инсталирано… Може да пристъпим към конфигуриране.
Първа стъпка е да включим зареждането на IPMI модула със зареждането операционната система.
# chkconfig –level 345 ipmi on ( 3,4,5 са режимите при, които да се стартира модула, реално при нас ни е нужен само level 3 (все пак е сървър и не му нужно да стартира в level 5)
# service ipmi start или /etc/init.d/ipmi start (И двете команди зареждат модула за IPMI ).
Време е вече да проверим дали достъпваме контролера :) Ето един пример
# [root@centos~]# ipmitool sensor |grep Ambient
Ambient Temp | 19.000 | degrees C | ok | na | na | na | 38.000 | 41.000 | 45.000
[root@centos ~]#
Ето вижда, се че имаме комуникация и ни връща данни от сензорите ( В нашия случай показвам само околната температура на сървъра)
До тук всичко е супер :)
Вече трябва да започнем начинанието, което е в заглавието ;)
Трябва първо да направим мрежовите настройки за да може да достъпваме съответния сървър през мрежата ( Хубаво е да знаете, че BMC (IPMI) е закачено към eth0 т.е към първия ethernet интерфейс на сървъра).
[root@centos ~]# ipmitool lan print
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback :
: User : MD2 MD5 PASSWORD
: Operator : MD2 MD5 PASSWORD
: Admin : MD2 MD5 PASSWORD
: OEM :
IP Address Source : DHCP Address
IP Address : 169.254.0.2
Subnet Mask : 255.255.0.0
MAC Address : 00:1a:64:cc:c9:a5
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled
Gratituous ARP Intrvl : 2.0 seconds
Default Gateway IP : 0.0.0.0
Default Gateway MAC : 00:00:00:00:00:00
Backup Gateway IP : 0.0.0.0
Backup Gateway MAC : 00:00:00:00:00:00
802.1q VLAN ID : Disabled
802.1q VLAN Priority : 0
RMCP+ Cipher Suites : 0,1,2,3
Cipher Suite Priv Max : uaaaXXXXXXXXXXX
: X=Cipher Suite Unused
: c=CALLBACK
: u=USER
: o=OPERATOR
: a=ADMIN
: O=OEM
[root@centos ~]#
Ето така изглеждат настройките по подразбиране (на IBM x3650).
За да зададем IP адреса е нужно да изпълним следните команди
1. [root@centos ~]# ipmitool lan set 1 ipsrc static (С тази команда сменяме от динамично вземане на IP адреса за BMC на статично
2. [root@centos ~]# ipmitool lan set 1 ipaddr 192.168.44.33 (мрежовия адреса )
Setting LAN IP Address to 192.168.44.33
3. [root@centos ~]# ipmitool lan set 1 netmask 255.255.255.0 (мрежовата маска)
Setting LAN Subnet Mask to 255.255.255.0
4. [root@centos ~]# ipmitool lan set 1 defgw ipaddr 192.168.44.3 (шлюза по подразбиране)
Setting LAN Default Gateway IP to 192.168.44.3
5. [root@centos ~]# ipmitool lan set 1 access on (Разрешаваме достъпа до канал 1 през LAN)
6. [root@centos ~]# ipmitool lan set 1 user (Включваме потребителя, които е по подразбиране за този канал)
Сега да видим крайния резултат:
[root@centos ~]# ipmitool lan print
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback :
: User : MD2 MD5 PASSWORD
: Operator : MD2 MD5 PASSWORD
: Admin : MD2 MD5 PASSWORD
: OEM :
IP Address Source : Static Address
IP Address : 192.168.44.33
Subnet Mask : 255.255.255.0
MAC Address : 00:1a:64:cc:c9:a5
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled
Gratituous ARP Intrvl : 2.0 seconds
Default Gateway IP : 192.168.44.3
Default Gateway MAC : 00:00:00:00:00:00
Backup Gateway IP : 0.0.0.0
Backup Gateway MAC : 00:00:00:00:00:00
802.1q VLAN ID : Disabled
802.1q VLAN Priority : 0
RMCP+ Cipher Suites : 0,1,2,3
Cipher Suite Priv Max : uaaaXXXXXXXXXXX
: X=Cipher Suite Unused
: c=CALLBACK
: u=USER
: o=OPERATOR
: a=ADMIN
: O=OEM
Продължаваме :) Сега трябва да си добавим потребител, с които ще достъпваме отдаличено сървъра… Потребителя ще е с администраторски права :)
Нека първо да видим какви потребители имаме:
[root@centos ~]# ipmitool user list 1 (Това е за канал 1 (channel 1))
ID Name Enabled Callin Link Auth IPMI Msg Channel Priv Limit
1 true true false true ADMINISTRATOR
2 USERID true true false true ADMINISTRATOR
[root@centos ~]# ipmitool user list 2 (Това е за канал 2 (channel 2))
ID Name Enabled Callin Link Auth IPMI Msg Channel Priv Limit
2 USERID true true false true ADMINISTRATOR
До тук добре, но както се вижда има две потребителски имена, които са включени като ID 1 няма зададено потребителско име, а ID 2 е с потребителско име USERID , които си идва по подразбиране и е с парола PASSW0RD (буквичката О е заместана с нула“0″).
Лично аз препоръчам да ги изключим … ето така:
[root@centos ~]# ipmitool user disable 1
[root@centos ~]# ipmitool user disable 2
И след като ги спряхме вече изглежда така…
[root@centos ~]# ipmitool user list 1
ID Name Enabled Callin Link Auth IPMI Msg Channel Priv Limit
2 USERID false true false false ADMINISTRATOR
Готови сме !!! (Но има още)
Добавянето се прави ето така:
[root@centos ~]# ipmitool user set name 3 whatuwant ( 3 e следващото свободно ID, а whatuwant e потребителското име, което сме избрали)
[root@centos ~]# ipmitool user enable 3 (Включваме го )
[root@centos ~]# ipmitool user priv 3 4 1 (Добавяме му права: 3 е ID-то на потребителя, за които задаваме права; 4 е за администратор; 1 е канала, за които добавяме правата. )
[root@centos ~]# ipmitool user set password 3 (тук задаваме паролата)
Password for user 3: (първи път паролата) поне 8 символа е добре да слагате
Password for user 3: (повтаряме паролата)
Време е за конфигуриране на SOL ( Serial-over-LAN):
Нека първо да видим как изглеждат настройките по подразбиране…
[root@centos ~]# ipmitool sol info 1
Info: SOL parameter ‘Payload Channel (7)’ not supported – defaulting to 0x01
Set in progress : set-complete
Enabled : true
Force Encryption : true
Force Authentication : false
Privilege Level : USER
Character Accumulate Level (ms) : 150
Character Send Threshold : 200
Retry Count : 7
Retry Interval (ms) : 480
Volatile Bit Rate (kbps) : 19.2
Non-Volatile Bit Rate (kbps) : 19.2
Payload Channel : 1 (0x01)
Payload Port : 623
[root@centos ~]# ipmitool sol set volatile-bit-rate 115.2 1 (скоростта на комуникация 115 200 за канал 1 )
[root@centos ~]# ipmitool sol set non-volatile-bit-rate 115.2 1 (скоростта на комуникация 115 200 за канал 1)
[root@centos ~]# ipmitool sol payload status 1 3 (проверяваме дали потребителя, които ще използваме му е разрешено да прави отдаличена връзка (SOL)
User 3 on channel 1 is disabled ( За момента нямаме и трябва да го разрешим)
[root@centos ~]# ipmitool sol payload enable 1 3 (едно е канала, а три е ID-то на потребителя)
[root@centos ~]# ipmitool sol payload status 1 3
User 3 on channel 1 is enabled
Време е да пипнем малко по линукса :)
Нека да видим кои ни е серииния порт
[root@centos ~]# dmesg |grep ttyS
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Вижда, се че това е COM1 :)
Сега малко по конфигурацията на grub :)
Избираме си редактор и отваряме /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz
(Този ред го коментираме, за да изключим изображението при стартираме)
#Add this
serial –unit=0 –speed=115200
terminal –timeout=8 console serial
#End –unit=0 is ttyS0
hiddenmenu
title CentOS (2.6.18-194.11.3.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.11.3.el5 ro root=LABEL=/ console=tty1 console=ttyS0,115200n8
initrd /boot/initrd-2.6.18-194.11.3.el5.img
## Включваме комуникацията през tty1 и ttyS0 (серийния порт)
Добавяме само това в /etc/grub.conf, което е удебелено. При добавяне на тези линии внимавайте, че след рестарта да не стане така, че да не може да зареди линукса :)
Следва да редактираме и /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
#Start from here
s0:2345:respawn:/sbin/agetty -L 115200 ttyS0 vt100
## End here
Записваме промените във файла и за да станат активни без да рестартираме системата изпълняваме командата
[root@centos ~]# init q
Ако всичко сме направили както трябва … Можем да пробваме да се свържем отдаличено.
[root@remote-linux ~]# ipmitool -I lanplus -H 192.168.44.33 -U whatuwant -a sol activate
Password:
[SOL Session operational. Use ~? for help]
CentOS release 5.5 (Final)
Kernel 2.6.18-194.11.3.el5 on an x86_64
centos login:
Eто вече имаме Serial-over-LAN :) Но сега трябва да тестваме и след като рестартираме дали ще видим дали ще видим как стартира линукса …
Оставаме свързани през SOL и на пишем….
[root@centos ~]# reboot
Това разбира се го правим, ако няма да попречим на някои, които ползва този сървър (Затова 3-4 сутринта е най-удобното време за тези експерименти) :)
И след като сме видяли зареждането на линукс сме готови :)
Ако искаме през ttyS0 да влизаме с root ще трябва да добавим един ред в /etc/securetty
и това изглежда така
…
tty11
ttyS0
Добавяме само ttyS0 ( това е серииният порт, за които разрешаваме root да се логва в сървъра ни).
И това е то ….
Хубаво е да знаете, че като правите ъпдейт на kernel-а през yum той препокрива grub.conf и ще се налага всеки път да добавяте промените … Сигурно е възможно да се избегне това, но това по нататък :)
Както пиша всеки път … ПРАВЕТЕ резервни копия на файловете, които променяте!!! И всичко е на ВАША ОТГОВОРНОСТ!!!
И ако нещо съм пропуснал или съм сбъркал ме поправете :)