老文:从软件部署看运维的四种境界

首先,博文的名字很难取啊,叫什么都感觉不太对,这里就暂定这样吧。不可否认这里有点哗众取宠的动机,不谈境界总感觉格局不够大哈。

中国哲学家冯友兰先生说过,人生有四种境界:自然境界、功利境界、道德境界、天地境界。经过长期的部署安装软件服务,感觉最近手熟多了,通过实践可以得出一些方法,方法总结起来就可以组成一套方法论了,但作为国人,还是用格局,境界之类的词更有亲切感。

不多说废话了,下面上干货。(我所理解的干货,也可能不是,牛人请忽略)

下面通过具体的安装redis这个小软件来说明问题,我分别附上四种安装方法从而感悟出四种不同的境界。

一.传统手动安装

著名的三板斧

1
2
3
4
5
6
config
make
make install
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar -zxvf redis-2.8.17.tar.gz
cd redis-2.8.17.tar.gz

先安装tcl,否则下面会报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
yum install tcl -y
make MALLOC=libc
make test
make install
/root/redis-2.8.17/utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] /data/redis/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] /data/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /data/redis/redis_6379.log
Data dir : /data/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

这种传统安装方法主要是费时,例如想redis这个1M多的小软件安装多花费了半个多小时,这种方法类似冯友兰的自然境界。这种方法有一个好处就是能让你快速熟悉一个陌生的软件,第一次安装不得不走一遍这样的流程。

二.脚本安装

随着时间的推移,服务器越来越多,自己每天都重复这样的工作是不是觉得很烦,很没有技术含量不能提高呢?大部分运维人员都不会满足于现状,特别是当老板说找一个快速部署的方法奖励2K时,是不是动力来了,此时天时地利人和都来了,于是就开始想办法了,大部分人最先想到的就是脚本。

关于脚本呢,我本人bash都不是很熟,但是拷贝修改别人的还可以,更别说3P(别想错了,好多人说要学会(python,perl,php),如果你是天生的技术高手这些都会或者会一两种当然是最好了。

如果对3P不感兴趣或者力不从心也没关系,只要学会shell就行了,至少这个阶段够用。

只安装redis这一个服务弄一个脚本其实还显现不出脚本此时的好处,要是一个LNMP环境,脚本的优势就突显出来了,键盘Enter键一敲,你就可以去喝咖啡了,但是这时候一般你还有其他事情,两个小时后基本环境就完成了。

要是redis真写一个简单的脚本,就是上述命令行之前加一个#!/bin/bash就行了。

1
2
3
4
5
6
7
8
9
#!/bin/bash
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar -zxf redis-2.8.17.tar.gz
cd redis-2.8.17.tar.gz
yum install tcl -y |tail -n 6
make MALLOC=libc |tail -n 6
make test |tail -n 6
make install |tail -n 6
/root/redis-2.8.17/utils/install_server.sh

友情提示:这脚本我没有试用过,不一定能用。因为这时我对这种安装方式还不是很满意。

三.绿色安装

绿色安装,这个词我以前听到最多是windows环境下,linux下倒是很少听说,难道linux喜欢难度高的操作方法对简单易行的方法不感冒吗?哪这样是不是有点不道德啊?所谓的道德境界我觉得应该是这样的:把复杂的事情简单化,越简单越好。我不认为简单是没有技术含量,简单是我一生追求的最高境界。

说到这里,那有什么根基支持绿色安装了,其实我想我有一段时间忘记了一句含义很深的话:一切皆文件!我记得刚开始学习linux时候就听说过这句话,但是一直没有时常想起这句话。以至于曾经走过不少弯路。话说回来,不走这么多的弯路,对这句话的领悟也不会这么深。

回到正题,绿色安装就是把第一次在一个环境安装的软件包,打个包,拷贝过来就行了。比如这里的redis只需要拷贝二进制程序和配置文件即可,二进制程序唯一要依赖的就是一些开发库之类的软件,这个得提前安装。

1
2
3
4
5
6
7
8
yum install tcl -y
mkdir /etc/redis
ls /etc/redis
6379.conf
ls /etc/init.d
redis_6379
tar zxvf redis_data.tar.gz -C /
tar zxvf redis.2.7.17.tar.gz -C /

这里redis第一次安装分布了几个目录,如果第一次安装时指定了安装目录,只需要拷贝那一个整目录过来就行了。是不是很简单啊?

四.克隆模板

第四种境界叫天地境界,用在这里有点亵渎的感觉,但是管不了那么多了,为了博文的完整性我已经很拼了。天地境界我理解的是天人合一,难道让我们人机合一不成?那么深奥的问题我也考虑不了,都说了我很简单的。幸亏现在虚拟化技术很发达,千万不要说云计算啊我对哪个比较过敏,我还没有看到哪个搞云计算的活人在我面前呢。

其实这种方法和第三种差不多,只是这种连系统一块都部署了,操作系统不是最大的软件吗?对了,哪个谁不是说过mac和windows是最大的恶意程序嘛!

这种方法步骤也比较简单,但是格局大多了。比如各种所谓的云的各种SAAS,由于要那redis举例,我记得×××的redis云缓存服务器,应该比我这种说的高一个层次。这时我突然想把这个境界一分为二,因为我突然想加一种情况进去。

第一种我猜大家已经想到了: 1. 在虚拟机或者物理机上部署redis服务,可用第三种方法。

  1. PtoV或者VtoV的方法转换成模板。

  2. 下次要用到时候直接从模板部署虚拟机即可,目前哪一种虚拟化技术都支持这个。

第二种我这里讲的是分布式集群环境,这个不是每个软件都通用,正好这里举例的redis通用

  1. 部署redis集群(redis3.0支持,不过我没有试过redis集群,我试过codis集群)

  2. 下次有需求时,直接在集群上(这里以codis集群举例)扩展codis-group再添加codis-server实例即可

  3. 这个分布式集群环境支持横向扩展,在线伸缩,可以满足各种苛刻的话需求

话说到这里改结束了,本来还想说点什么可以是说不出来,那个天地境界确实不好理解啊。