分类: LINUX
2013-01-15 17:22:34
中型企业机房停电时的开关机作业
什么是中型机房: 服务器数量100台以上1000台以下的企业自己建制的机房.
为什么要谈停电?
中型企业自建机房不可能像IDC那样,有那么高的冗余性,从而难免会遇到停电的时间,本人在深圳软件园和成都天府软件园一年最少2次都遇到停电事件, 那停电了IT要做那些事情呢?
有人会说我有UPS,发电机, 首先UPS 一般企业并不会买那么大的容量给你用个一天,其次就算机房有电?那机房空调 UPS 撑的住嘛? 发电机咱们不多谈,有钱建,有钱烧油那就另说了.
好了,解释完为啥停电,咱们就来谈苦B的IT 关机和开机 作业, (这还有啥好谈的?直接关就好了呗?且听我细细道来)
拿100台的服务器来说,一般企业应该都会有windows\linux机器,怎么样快速的关闭这些server (你的UPS能撑多久?你的空调停了机房温度多长时间能维持在30度以下?)
所以下文我们就来解决这个问题,
1、关机流程
所谓关机流程就是指规范你的机房内的设备应该先关什么后关什么.如果你的少量的服务器需要补间断作业需求,那还要分阶段关机
一般来说:
a、不常用OA\RD server,有clust的server, 举例来说 DHCP、Dns、Print、Antivirus、IAS等等和HA的其中一台,比如AD DC,
b、除AD DC、NIS、以外的所有服务器,。。。。。。。
c、AD DC、NIS、及需要手动关闭的server
d、VM esxi,
f、Sotrage(DAS、NAS)、Type Library、PBX、Network device、KVM
g、UPS
2、关机脚本与检查
a、Windows server
windows server 比较容易 使用shutdown 就好,
shutdown -m \\x.x.x.x -f -t 00 重复这些命令就好。
这条命令执行时需要你对所有涉及到的机器有admin 权限,最好是用domain admin 登陆到AD上 去执行该脚本,
而对于一些没有join domain 的机器可以使用先使用net use \\x.x.x.x\ipc$ password /user:username 先获取权限后在执行shutdown 命令。
b、Linux
方法1:对于使用ssh key 登录方式 相对简单
ssh key 免密码部分
目的让nis1 登录 nis2
产生key文件
[root@nis1 .ssh]# ssh-keygen -t rsa ------------->生成key 文件id_rsa.pub
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b8:d9:97:26:74:a3:0f:65:0a:99:3f:91:af:ec:17:e3 root@nis1
[root@nis1 .ssh]# ls
authorized_keys id_rsa id_rsa.pub known_hosts
[root@nis1 .ssh]# more id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvoab6CicZkl93QfDcQm4Kkmap4jVgbUXOQ+GuZLNDUo96gBltP1J3djMkrI0gfflM7T4mDFnymP3F
MOXxnasMHL0jkwwv0GlMGVOlDq5cFSxpY4nxJiLiDFxs8fqVLKedvvPym1frZxnNIDMhwUG8r1a3d+t/XSAjjTdRLQAFOVqDgBmDObiMltiKoKhSF
/MVEAsR9Yx7KpIWzqJvJc6OnRMWWYxRhhiBabViJBeKCqRy//bQ6JGAYCqPTbfd4DIE7D8h+9WFt3yu1PaKb142ekmr1wew0KpeSpHurYaP57dAXl
y0xCqcTKp5AUJJ3XqatpS3dLeO8LBu6tWhjJFow== root@nis1
将id_rsa.pub 内容 追加到nis2 的/root/.ssh/authorized_keys中
[root@nis1 ~]# scp id_rsa.pub root@nis2:/root/.ssh/
root@nis2:~/.ssh# cat id_rsa.pub >> authorized_keys
root@nis2:~/.ssh# more authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCOPnxdx4VDXGg+iACbjK7Vf9EgEs4eue2TCJxFrb8DDZpB1xdgtuYx+X9b6wvAOgQ00MRUEgcXem3fDmxLgux
FiYlUT33zkmg+lnC5MwZHIwFYTAMuVRN6/rzVApTqN18bG9/jQgDtYPUwKnS3l1EQps64i+4E7bwdoyKmzOzzyQ==
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvoab6CicZkl93QfDcQm4Kkmap4jVgbUXOQ+GuZLNDUo96gBltP1J3djMkrI0gfflM7T4mDFnymP3FMOXxnasMHL
0jkwwv0GlMGVOlDq5cFSxpY4nxJiLiDFxs8fqVLKedvvPym1frZxnNIDMhwUG8r1a3d+t/XSAjjTdRLQAFOVqDgBmDObiMltiKoKhSF/MVEAsR9Yx7KpIWzqJvJ
c6OnRMWWYxRhhiBabViJBeKCqRy//bQ6JGAYCqPTbfd4DIE7D8h+9WFt3yu1PaKb142ekmr1wew0KpeSpHurYaP57dAXly0xCqcTKp5AUJJ3XqatpS3dLeO8LBu
6tWhjJFow== root@nis1
root@nis2:~/.ssh#
这样就可以使用nis1 免密码登录nis2 了
找一台机器最好是NIS,可以免密码登陆所有的linux 机器,
×××××××××××××××××××××××××××××××
NIS1 #more shutdown.sh
#! /bin/sh
for i in `awk '{print $1}' iplist`
do
echo $i
ssh $i "shutdown -h now"
done
×××××××××××××××××××××××××××××××
[NIS1]# more iplist
×××××××××××××××××××××××××××××××
1.1.1.1
1.1.1.2
×××××××××××××××××××××××××××××××
方法2:对于使用用户名密码的登录方式
需要用到的几个文件
[NIS1]# ls
log.sh ping.sh shutdown.sh iplist
[NIS1]# more shutdown.sh
×××××××××××××××××××××××××××××××
#!/bin/bash
for i in `cat iplist`
do
N1=`echo $i|awk -F: '{print$1}'`
N2=`echo $i|awk -F: '{print$2}'`
N3=`echo $i|awk -F: '{print$3}'`
echo $1
echo $2
echo $3
expect log.sh $N1 $N2 $N3
done
×××××××××××××××××××××××××××××××
[NIS1]# more log.sh
×××××××××××××××××××××××××××××××
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set passwd [lindex $argv 2]
set timeout 5
spawn ssh $user@$ip
expect {
sleep 2
"*(yes/no)?" {send "yes\r";exp_continue}
sleep 2
"password:" {send "$passwd\r"}
}
expect {
sleep 2
"#" {send "shutdown -h now\r"}
}
expect {
sleep 2
"#" {send "exit\r"}
}
exit
expect eof
exit
×××××××××××××××××××××××××××××××
[NIS1]# more iplist
×××××××××××××××××××××××××××××××
1.1.1.1:root:password:
1.1.1.2:root:password:
×××××××××××××××××××××××××××××××
测试:ping 看是否关机
[NIS1]# more ping.sh
×××××××××××××××××××××××××××××××
#!/bin/bash
for i in `cat iplist`
do
# echo $i
N1=`echo $i|awk -F: '{print$1}'`
echo $1
pin_test=`ping -c 4 $N1 | grep ttl|wc -l`
if [ $pin_test -gt 2 ]
then
echo $N1 "is up"
else
echo $N1 "is down"
fi
done
×××××××××××××××××××××××××××××××
以上就是2中linux 关机的脚本,可以看看适合用哪一种,个人建议是用第一种,应为企业越大,就越要规范,越是要讲究速度。
3、开机流程
基本上就是 关机过程反过来
a、UPS
b、Network device、KVM
c、Sotrage(DAS、NAS)、Type Library、PBX
d、AD DC、NIS、
e、windows terminal license server 或其他 license server
f、剩余所有server
4、开机检查
这个就要很仔细了,基本上是开机流程做一步就检查一步,确保每问题了在进行下一步动作。
最后就要检查各项服务:比如client 能否获取IP,上网、打印,收发mail,等等 IT所提供的一切服务。