引子
创业公司的生产资料主要集中在自己搭建的服务器上,由于一些客观因素(没钱,环境差)导致服务器经常断电,一般周末经常性的『技术性』断电重启,导致坑爹的一早来就要手动开机、手动启动虚拟机、手动启动后台进程,不知不觉中一上午就没有了,一次两次可以,次数多了之后难免烦躁,打算一劳永逸解决这件事情。
解决方案
解决这个问题其实就是分别解决下面几个问题:
- 自动开机
- 自动开启虚拟机
- 自动开启进程
通电自动开机
关于自动开机的原理及方式有很多,比如来电自动、鼠标键盘启动、局域网自动唤醒等等,我们这里打算用来电自动的方式。
通电自动开机依赖于服务器的主板支持该功能;对于支持该功能的主板,其BIOS设置里这个功能是一般默认关闭,我们需要在 BIOS 设置里开启该功能。至于具体的设置,由于不同主板设置选项各不相同,本文暂时不做论述,大家可以自行 google 或者在各厂家的产品页面寻求帮助。
虚拟机自启动
为了方便服务器的管理,一般需要在物理机上安装特定的虚拟机管理软件,比较知名的如 citrix 公司的 XenServer、vmware的 vSphere 等。自动开启虚拟机依赖具体的虚拟机管理软件。我们使用开源的XenServer,6.0之后的版本已经支持虚拟机随server启动而启动。XenServer 以 ISO 的形式提供,包含服务端、GUI客户端 XenCenter及命令行工具 xe-cli 等。详细的下载和安装可以参考 官网
通过命令行 xe-cli 可以设置虚拟机在物理机启动后自启动,xe-cli 在 ISO 镜像文件里,以 rpm 的形式提供。以 Centos6 环境为例,安装 xe-cli:
1 | $ rpm -ivh xe-cli-7.1.0-137263c.x86_64.rpm |
注意,这里的 xe-cli 可以安装在和服务器连接的内网机器上,可以是任意一台虚拟机系统里,其本质和 GUI 形式的客户端管理工具 XenCenter 类似,只不过是命令行形式而已。
我们设置需要连接的服务器物理机 ip (例如10.1.164.37)以及登录用户密码
1 | $ cat ~/.xe |
然后设置资源池 (vm-pool) 允许自动重启,先列出所有 pool 的 uuid,然后设置
1 | $ xe pool-list |
最后选择需要自动重启的虚拟机,然后设置为自动重启(同样使用 uuid 来设置):
1 | $ xe vm-list |
详细可以参看 这里
自动启动进程
自动启动进程就比较简单了,通过 chkconfig 命令或者修改 /etc/rc.local 文件就可以在系统启动时候做任何你想做的事情了,我们在这里添加一些启动数据库和服务器进程的操作。
使用 chkconfig
chkconfig 使用说明
1 | 用法: chkconfig [--list] [--type <type>] [name] |
以设置 mysqld 进程自动启动为例
或者
使用 rc.local
修改 /etc/rc.local
添加
/etc/init.d/mysqld start
结尾
至此,我们终于一劳永逸解决这些烦人的问题了,是时候泡杯咖啡好好享受生活了。。。。
参考资料