Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119803
  • 博文数量: 12
  • 博客积分: 369
  • 博客等级: 一等列兵
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-02 08:26
文章分类

全部博文(12)

文章存档

2013年(1)

2012年(11)

分类: 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所提供的一切服务。



阅读(2158) | 评论(0) | 转发(0) |
0

上一篇:一个一线IT经理的管理工作(未完待续...)

下一篇:没有了

给主人留下些什么吧!~~