自动化部署
-
搭建ELK(Logstash+Elasticsearch+Kibana)日志分析系统: http://www.cenhq.com/2015/10/29/logstash-elasticsearch-kibana-analysis-system-build/
- Logstash:负责日志的收集,处理和储存
- Elasticsearch:负责日志检索和分析
- Kibana:负责日志的可视化
- openstack部署工具: http://www.chenshake.com/openstack-deployment-tool-summary/
- 自动部署Hadoop集群: http://www.cnlinuxgeek.com/2012/06/auto_deploy_hadoop_cluster/
pssh
pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh。
Ansible
- 自动化运维工具之ansible:http://os.51cto.com/art/201409/451927_all.htm
- ansible来了: http://ju.outofmemory.cn/entry/67581
- Ansible中文权威指南:http://ansible-tran.readthedocs.io/en/latest/index.html
SaltStack
Puppet注重于最终状态,SaltStack注重于实时命令的运行,SaltStack=Puppet+Func,且SaltStack还是使用Python开发的,入手以及后续的功能自定义开发都是非常方便的。
- 官网: http://www.saltstack.com/
- SaltStack自动化运维初涉--安装简用篇:http://clovemfong.blog.51cto.com/3297559/1347951
- http://outofmemory.cn/saltstack/
DevOps
DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
chef
- Chef的结构图
-
有一个中心服务器(运行chef-server)
- Chef将数据存储在CouchDB数据库里面
- RabbitMQ和chef-solo等提供搜索的功能
- Chef还提供了个图形的用户界面(cher-server-webui)
-
可以有多个Workstation(运行knife工具对Chef进行配置)
- Workstation上有一个pem文件,knift利用它作为认证来和chef-server通过REST API进行通信
- Workstation将配置(利用Recipe等描述各Client应该如何配置自己)上传到服务器
- Workstation和中心服务器可以在同一台机器
-
可以有多个Client(运行chef-server的被配置机器)
- Client上有一个pem文件,chef-client利用它作为认证来和chef-server通过REST API进行通信
- 当新加一个Client的时候,需要从中心服务器上拷贝validator.pem到新加的Client
- 它利用这个pem进行注册得到自己的client.pem进行以后的认证
- Client连到Chef服务器查看如何配置自己,然后进行自我配置
比较 | Puppet | Chef |
---|---|---|
历史 | 有一些 | 还年轻 |
用户 | 多,有名的公司也在用 | 还比较少,但我认为有37signals在使用 |
开发的活跃度 | 中等 | 活跃(感觉正在旺季) |
文档 | 多 | 也足够了 |
设定文件 | 用专用的文法书写(外部DSL) | 用Ruby书写(内部DSL) |
设定的构成 | 有点难懂 | 相对容易理解,命名等很合适 |
依存关系的处理 | 运行次序是根据状况由系统端决定的。 | 好像Makefile 基本上是书写顺序。相比Puppet更具脚本风格 |
必要的中间软件 | 没有 | 服务端需要有CouchDB、RabbitMQ |
安装 | 简单,用gem的安装就可以 | 服务端容易死。没有加入包中的话比较困难。客户端的话简单,只要gem就可以 |
和其他系统的协作 | 感觉基本上没有 | 因为使用RESTful的服务API,用JSON可以取值,所以好像能做许多事 |
puppet
Puppet是Puppet Labs 开发的自动化系统配置工具,是一个类似于Cfengine一样的工具,但是比Cfengine更简单,更容易使用…
- https://puppetlabs.com/
- puppet中文wiki: http://puppet.wikidot.com/
- Puppet使用方法总结: http://dongxicheng.org/cluster-managemant/puppet/
CFengine
- http://www.cfengine.org/
- 使用CFengine来实现服务器的自动化配置: http://os.51cto.com/art/200711/60043.htm
-
CFengine大概的功能有:
- 检查和配置网络接口
- 编辑系统和用户的文本文件
- 维护符号链接
- 检查和设置文件的权限
- 删除垃圾文件
- 检查重要文件和文件系统的存在
- 控制用户脚本和shell命令的执行
- 基于类的判定结构
- 进程管理
-
Cfengine是一个用于设置和维护计算机系统的工具,包含了以下几个组件:
- cfagent 自动配置代理(必须),其配置文件为cfupdate.conf和cfagent.conf
- cfservd 文件服务和远程激活服务(推荐),其配置文件为cfservd.conf
- cfexecd 计划和报告服务(建议)
- cfenvd 异常检测服务(强烈建议)
- cfrun 远程激活cfagent的方法(需要的时候用这个),其配置文件为cfrun.hosts
- cfshow 检查有帮助的数据库的内容的方法(辅助)
- cfenvgraph 异常检测服务cfenvd的附属工具(辅助)
- cfkey 密匙生成工具(每台主机运行一次)。
Juju
http://www.chenshake.com/design-of-the-razor/
Ubuntu的Maas,其实问题就更多。投入很大的力量去定制cobbler,加一个logo,就号称是Maas,在国人看来,也是有点山寨。并且还自己搞了一个JUJU类似的东西。到底puppet和juju有啥区别还是类似的东西,估计Canonical自己的员工,也说不清,好像也没几个人感兴趣,从邮件列表里也可以知道。
昨天刚看到juju邮件列表,提到Orchestra,未来很快就要去掉juju的支持,因为没几个人玩,我本来一直都比较欣赏Orchestra的理念,不重复造轮。不过现在看来,ubuntu是希望自己搞一套。
Cobbler
运维自动化安装方面,早期一般使用人工配置pxe+dhcp+tftp配合kickstart,现在开源工具就多了,如cobbler,OpenQRM和Spacewalk。
Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。
Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用。
和Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。
Razor
Razor 是一个很高级的部署程序,注意,是高级哦。它可以在裸机上和虚拟机上自动安装操作系统。它的目标是解决如何把新的机器添加到已有的管理系统中。然后让集中化管理来接管它。
Razor的工作流程是,新加的机器通过Razor提供的网络启动,加载一个微内核的小系统,小系统会检测新硬件的配置。并且反馈给Razor控制端,然后根据Razor的预定策略,来指导安装配置。目前支持 RH系, Debian系, ESXi 等
Docker
- http://www.docker.io/
- https://www.docker.com/
- https://github.com/boot2docker/boot2docker
- 使用 Docker/LXC 迅速启动一个桌面系统: http://www.vpsee.com/2013/07/use-docker-and-lxc-to-build-a-desktop/
- Docker的价值和应用场景分析: http://www.iamadmin.com/blog/read.php?560
- Docker 网络配置:http://www.oschina.net/translate/docker-network-configuration
- CentOS6.5下docker的安装及遇到的问题和简单使用: http://blog.csdn.net/wuzhilon88/article/details/41621285
- CentOS系统下docker的安装配置及使用详解: http://www.server110.com/docker/201411/11105.html
Docker 是 dotCloud 最近2013年宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。
docker run -d -it -p 9000:9000 -e ZK_HOSTS="slave1.uat:2181,slave2.uat:2181,slave3.uat:2181" -e APPLICATION_SECRET=letmein sheepkiller/kafka-manager docker run -d -it -p 9000:9000 \ --add-host hadoop1.uat:192.168.1.89 \ --add-host slave1.uat:192.168.1.22 \ --add-host slave2.uat:192.168.1.23 \ --add-host slave3.uat:192.168.1.24 \ --add-host hadoop1.uat:192.168.1.89 \ --add-host Slave1.pro:192.168.0.22 \ --add-host Slave2.pro:192.168.0.23 \ --add-host Slave3.pro:192.168.0.24 \ --add-host Slave4.pro:192.168.0.25 \ --add-host Slave5.pro:192.168.0.26 \ --add-host Slave6.pro:192.168.0.2 \ --add-host Slave7.pro:192.168.0.28 \ --add-host Slave8.pro:192.168.0.29 \ --add-host Slave9.pro:192.168.0.30 \ -e ZK_HOSTS="slave1.uat:2181,slave2.uat:2181,slave3.uat:2181" \ -e APPLICATION_SECRET=letmein \ sheepkiller/kafka-manager docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0d46d0308ad4 sheepkiller/kafka-manager "./km.sh" 2 minutes ago Up 16 seconds 0.0.0.0:9000->9000/tcp silly_fermat docker restart 0d46d0308ad4
-
升级内核(带aufs模块,记住一定要升级,要不然会出现很多莫名奇怪的问题,建议用yum安装)
-
1、yum安装带aufs模块的3.10内核(或到这里下载kernel手动安装:http://down.51cto.com/data/1903250)
cd /etc/yum.repos.d wget http://www.hop5.in/yum/el6/hop5.repo yum install kernel-ml-aufs kernel-ml-aufs-devel
- 2、修改grub的主配置文件/etc/grub.conf,设置default=0,表示第一个title下的内容为默认启动的kernel(一般新安装的内核在第一个位置)。
-
3、重启系统,这时候你的内核就成功升级了。
uname -r 3.10.5-3.el6.x86_64 # 查看内核是否支持aufs: grep aufs /proc/filesystems nodev aufs
-
1、yum安装带aufs模块的3.10内核(或到这里下载kernel手动安装:http://down.51cto.com/data/1903250)
-
安装docker
-
1、首先关闭selinux:
setenforce 0 sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
-
2、在Fedora EPEL源中已经提供了docker-io包,下载安装epel:
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo
-
3、yum安装docker-io:
yum -y install docker-io
-
1、首先关闭selinux: