devops工具大全

运维 Geek小A 发表了文章 0 个评论 12186 次浏览 2015-10-27 01:12 来自相关话题

包&产品管理 []Chocolatey:Chocolatey是Windows下一款开源的命令行包管理软件 ,简单说这相当于Windows的apt-get;[/][]FPM:全称 ...查看全部
dev-ops.jpg


包&产品管理


dops1.png

    []Chocolatey:Chocolatey是Windows下一款开源的命令行包管理软件 ,简单说这相当于Windows的apt-get;[/][]FPM:全称是Effing package management,他就是个软件包管理器,极大的缓解了多个平台构建软件包(deb,rpm,等)的痛苦;[/][]Herd:是一个基于Twitter Murder的文件分布系统;[/][]Vagrant Cachier:Vagrant的一个插件,用于缓存包方面的管理;[/][]WiX Toolset:提供一组最强大的工具集来帮助你创建Windows安装包。该工具集从XML源代码构建你的Windows安装程序包,可以无缝集成到构建过程;[/][]Boxstarter:利用Chocolatey包管理工具来自动化安装软件和创建可重复、脚本化的Windows环境;[/][]Elita:Elita是一个利用git和salt进行持续部署(部署作为服务)和API-driven基础设施的引擎/框架;[/][]Fig:主要用来跟Docker一起来实现的快速隔离的开发环境;[/][]Pulp:Pulp是一个用来管理软件库以及相关内容的平台;[/][]Veewee:Veewee是一个开源工具,用来创建和配置轻量级、可再生、便捷式虚拟机环境。[/]
 

日志记录&监控

dops2.png
    []AmonOne:现代化的自托管服务器监控工具;[/][]Anthracite:一个事件/日志改变/管理应用程序;[/][]collectd3:是一个可视化的collectd系统性能统计工具;[/][]collectd:是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制;[/][]Cronitor:监控cron工作,守护进程,和其他的一切;[/][]Datascope:可视化使用pg_stat_statements postgresql查询性能;[/][]Diamond:是一个基于Python的守护程序,主要用来收集系统指标,并且把它们发布到Graphite(或其它)工具中;[/][]Errbit:是一个用于收集和管理程序错误的开源工具;[/][]FnordMetric:是一个基于redis/ruby的实时事件跟踪应用,是个收集和可视化时间序列数据的框架,用户可以在几分钟内创建漂亮的实时分析仪表盘;[/][]Ganglia:Ganglia是一个跨平台可扩展的、高性能计算系统下的分布式监控系统,如集群和网格;[/]
其他:
dops3.png
dops4.png

云&PAAS环境

dops5.png

进程管理

dops6.png
    []Bouncy:可以作为HTTP路由主机;[/][]Supervisor:是一个客户端服务器系统,允许用户监控和控制类Unix操作系统上的进程数;[/][]God:由Ruby实现的进程监控框架。[/][]bluepill:bluepill[/]

服务发现

dops7.png
    []Consul:简化了分布式环境中的服务的注册和发现流程,通过HTTP或者DNS接口发现。支持外部SaaS 提供者等;[/][]etcd:是一个高可用的Key/Value存储系统,主要用于分享配置和服务发现;[/][]Apache ZooKeeper:是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题;[/][]Weave:创建一个虚拟网络并连接到部署在多个主机上的Docker容器。[/]

源代码管理

dops8.png

持续集成和交付

dops9.png
    []Buildbot:是一个系统的自动化编译/测试周期最需要的软件,以验证代码的变化。通过自动重建和测试每次发生了变化的东西,在建设迅速查明之前,减少不必要的失败;[/][]Cabot:是一个开源,自我托管的监控工具;[/][]Jenkins:是基于Java开发的一种持续集成工具,用于监控持续重复的工作;[/][]Hubot:基于脚本具有很高的灵活性,任何人都可以编写自己的脚本来扩展基本功能;[/][]Hudson:是一个可扩展的持续集成引擎,主要用于:持续、自动地构建/测试软件项目、监控一些定时执行的任务;[/][]CruiseControl.rb:是一个持续集成服务器,它可以让团队里的每个人随时了解项目的健康状况和进度;[/][]OpsBot:是一个开源的、可插入的改善通信的机器人。[/]


配置管理


dops10.png


希望大家有收获,查看原文可以获取到更多了解,原文中列表会持续更新。
翻译原文地址:https://dev-ops-tools.zeef.com/richard.kraayenhagen#block_41685_process-management


WOT软件技术峰会,自动化运维专场现场视频

学习资源 OpenSkill 发表了文章 0 个评论 3453 次浏览 2015-10-15 12:34 来自相关话题

快乐运维-常景志 运维有人说苦逼,但是我们需要苦中作乐,找到真正的运维乐点!   360运维自动化平台之大规模服务监控平台-刘浩 看看大规模 ...查看全部


快乐运维-常景志


运维有人说苦逼,但是我们需要苦中作乐,找到真正的运维乐点!


 


360运维自动化平台之大规模服务监控平台-刘浩


看看大规模的服务监控平台体系,学习大体系服务监控的思路!



游戏虚拟化运维实践-肖力


在这个云计算的时代,虚拟化可谓正值青年。看力哥如何利用虚拟化技术玩转游戏运维!这里推荐一下力哥著作:深度实践KVM:核心技术、管理运维、性能优化与项目实施一书



字节码和网络抓包在应用性能管理中的实践-黄东


网络可谓是运维者必修一课,如果你不了解网络,你不知道攻击你的人,是怎么发起,怎么进入的,那只好等死,抓包就是我们常用的分析手法!查看你应用性能再网络方面的缺陷和可优化之地!



基于Python构建可扩展的自动化运维平台-刘天斯


近几年Python可谓成了运维者必修课程了,随着DevOps再国内的盛行!看大神如何设计、玩转自动化运维之路!




大会PPT资料下载地址:http://pan.baidu.com/s/1o69vgZw
 
OpenSkill.CN 开源技术社区 基于51cto整理分享!
开源技术社区QQ群号:372476089  欢迎加入互相学习
扫码关注微信订阅号:
opsk.jpg

运维杂谈微信群:
witops.png

怎么限制docker容器的磁盘和带宽

大数据 Ansible 回复了问题 2 人关注 1 个回复 7312 次浏览 2015-10-12 18:10 来自相关话题

运维人,你应该了解的三张武功心法图

科技前沿 空心菜 发表了文章 0 个评论 8199 次浏览 2015-10-11 15:04 来自相关话题

一、运维技能图 做为一个运维工程师,你知道你应该学习什么?怎么学习吗?朝哪个方向发展吗?下面一张运维工程师技能图,让你了解! 二、自动化运维路线图 ...查看全部


一、运维技能图


做为一个运维工程师,你知道你应该学习什么?怎么学习吗?朝哪个方向发展吗?下面一张运维工程师技能图,让你了解!
运维技能图.png


二、自动化运维路线图


运维自动化在国内已经声名远躁了,随着互联网快速的发展,运维不单单是几个脚本,几个文档可以胜任的!DevOps在国内很受热捧,但是真正的自动化之路,你走到了哪?你知道该怎么走吗?下面的武功心法图告诉你该怎么走!
自动化运维路线图.png


三、云计算知识大宝典


从2013年开始,我国云计算持续快速发展,产业规模不断扩大,产业链日趋完善,产业环境不断优化。在这种情况下,不少创业者看到了市场,不少云计算公司崛起。但是人才在哪里,哪些是真正的云计算人才?云计算人才他应该会什么,下面Cloud computing image告诉你
云计算知识图.png

 上图不清晰,扩大可清晰看到!
天下武功唯快不攻,这句话运用到互联网,就是你最快、最好、最早的掌握了互联网的最新技术,你就是比较吃香的人才!就像最新比较人们的容器Docker技术一样,如果你是先行者,你现在至少是一家Docker生态技术创业服务的合伙人!革命还未胜利,同志还需努力,各位苦逼的互联网工作者,加油!

Apache Couldn't start ErrorLog process

运维 Geek小A 回复了问题 2 人关注 2 个回复 7665 次浏览 2015-09-20 12:39 来自相关话题

控制Elasticsearch分片和副本的分配

大数据 OpenSkill 发表了文章 1 个评论 19804 次浏览 2015-09-15 00:04 来自相关话题

    ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多 ...查看全部
    ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。
 
    为了进行分片和副本的操作,ES需要确定将这些分片和副本放到集群节点的哪个位置,就是需要确定把每个分片和副本分配到哪台服务器/节点上。
 


一、显式控制分配


生产情景:
比如生产环境有三个索引分别为 man、woman、katoey
希望达到的效果:
man索引放置在一些集群节点上
woman索引又单独放置到集群的另外一些集群节点上
katoey索引希望放置在所有放置man索引和woman索引的集群节点上

这么做是因为katoey索引比其他两个索引小很多,因此我们可以将它和其他两个索引一起分配。
但是基于ES默认算法的处理方法,我们不能确定分片和副本的存放位置,但是ES允许我们对其做相应的控制!

1、指定节点的参数
epei1.png

    如上图所示,我们将ES集群划分为两个"空间"。当然你也可以叫做区域,随便命名。我们将左边的三台ES节点服务器放置到zone_one的空间上面,将右边的三台ES节点服务器放到zone_two的空间上。
 
配置
    为了做到我们需要的效果,我们需要将如下属性配置到左边三台ES集群节点服务器的elasticsearch.yml配置文件中
node.zone: zone_one
    将如下属性配置到右边的三台ES集群节点服务器elasticsearch.yml配置文件中
node.zone: zone_two
 
索引创建
    当所有节点配置文件属性配置完成后,我们就可以根据空间名称,我们就可以创建索引放到指定的空间。
    首先我们运行如下命令,来创建man索引:
# curl -XPOST "http://ESnode:9200/man'
# curl -XPUT "http://ESnode:9200/man/_settings' -d '{
"index.routing.allocation.include.zone" : "zone_one"
}'
    第一条命令是创建man索引;第二条命令是发送到_settings REST端点,用来指定这个索引的其他配置信息。我们将index.routing.allocation.include.zone属性设置为zone_one值,就是我们所希望的把man索引放置到node.zone属性值为zone_one的ES集群节点服务器上。
 
    同样对woman索引我们做类似操作:
# curl -XPOST "http://ESnode:9200/woman'
# curl -XPUT "http://ESnode:9200/woman/_settings' -d '{
"index.routing.allocation.include.zone" : "zone_two"
}'
    不同的是,这次指定woman索引放置在node.zone属性值为zone_two的ES集群节点服务器上
 
    最后我们需要将katoey索引放置到上面所有的ES集群节点上面,配置设置命令如下:
# curl -XPOST "http://ESnode:9200/katoey"
# curl -XPUT "http://ESnode:9200/katoey/_settings" -d '{
"index.routing.allocation.include.zone" : "zone_one,zone_two"
}'

 2、分配时排除节点
    跟我们上面操作为索引指定放置节点位置一样,我们也可以在索引分配的时候排除某些节点。参照之前的例子,我们新建一个people索引,但是不希望people索引放置到zone_one的ES集群节点服务器上,我们可以运行如下命令操作:
# curl -XPOST "http://EScode:9200/people"
# curl -XPUT "http://EScode:9200/people/_settings" -d '{
"index.routing.allocation.exclude.zone" : "zone_one"
}'
    请注意,在这里我们使用的是index.routing.allocation.exclude.zone属性而不是index.routing.allocation.include.zone属性。
 
使用IP地址进行分配配置
    除了在节点的配置中添加一些特殊的属性参数外,我们还可以使用IP地址来指定你将分片和副本分配或者不分配到哪些节点上面。为了做到这点,我们应该使用_ip属性,把zone换成_ip就好了。例如我们希望lucky索引分配到IP地址为10.0.1.110和10.0.1.119的节点上,我们可以运行如下命令设置:
# curl -XPOST "http://ESnode:9200/lucky"
# curl -XPUT "http://ESnode:9200/lucky/_settings" -d '{
"index.routing.allocation.include._ip" "10.0.1.110,10.0.1.119"
}'


二、集群范围内分配


    除了索引层面指定分配活着排除分配之外(上面我们所做的都是这两种情况),我们还可以指定集群中所有索引的分配。例如,我们希望将所有的新索引分配到IP地址为10.0.1.112和10.0.1.114的节点上,我们可以运行如下命令设置:
# curl -XPUT "http://ESnode:9200/_cluster/settings" -d '{
"transient" : {
"cluster.routing.allocation.include._ip" "10.0.1.112,10.0.1.114"
}
}'
    集群级别的控制后续还会分享transient和persistent属性介绍
 


三、每个节点上分片和副本数量的控制


    除了指定分片和副本的分配,我们还可以对一个索引指定每个节点上的最大分片数量。例如我们希望ops索引在每个节点上只有一个分片,我们可以运行如下命令:
# curl -XPUT "http://ESnode:9200/ops/_settings" -d '{
"index.routing.allocation.total_shards_per_node" : 1
}'
    这个属性也可以直接配置到elasticsearch.ym配置文件中,或者使用上面命令在活动索引上更新。如果配置不当,导致主分片无法分配的话,集群就会处于red状态。
 


四、手动移动分片和副本


    接下来我们介绍一下节点间手动移动分片和副本。可以使用ElasticSearch提供的_cluster/reroute REST端点进行控制,能够进行下面操作:
    []将一个分片从一个节点移动到另外一个节点[/][]取消对分片的分配[/][]强制对分片进行分配[/]

 
移动分片
    假设我们有两个节点:es_node_one和es_node_two,ElasticSearch在es_node_one节点上分配了ops索引的两个分片,我们现在希望将第二个分片移动到es_node_two节点上。可以如下操作实现:
# curl -XPOST "http://ESnode:9200/_cluster/reroute" -d  '{
"commands" : [ {
"move" : {
"index" : "ops",
"shard" : 1,
"from_node" : "es_node_one",
"to_node" : "es_node_two"
}
}]
}'
    我们通过move命令的index属性指定移动哪个索引,通过shard属性指定移动哪个分片,最终通过from_node属性指定我们从哪个节点上移动分片,通过to_node属性指定我们希望将分片移动到哪个节点。
 
取消分配
    如果希望取消一个正在进行的分配过程,我们通过运行cancel命令来指定我们希望取消分配的索引、节点以及分片,如下所示:
# curl -XPOST "http://ESnode:9200/_cluster/reroute" -d '{
"commands" : [ {
"cancel" : {
"index" : "ops",
"shard" : 0,
"node" : "es_node_one"
}
} ]
}'
    运行上面的命令将会取消es_node_one节上ops索引的第0个分片的分配
 
分配分片
    除了取消和移动分片和副本之外,我们还可以将一个未分配的分片分配到一个指定的节点上。假设ops索引上有一个编号为0的分片尚未分配,并且我们希望ElasticSearch将其分配到es_node_two上,可以运行如下命令操作:
# curl -XPOST "http://ESnode:9200/_cluster/reroute' -d '{
"commands" : [ {
"allocate" : {
"index" : "ops",
"shard" : 0,
"node" : "es_node_two"
}
} ]
}'
一次HTTP请求包含多个命令
    我们可以在一次HTTP请求中包含多个命令,例如:
# curl -XPOST "http://ESnode:9200/_cluster/reroute" -d '{
"commands" : [
{"move" : {"index" : "ops", "shard" : 1, "from_node" : "es_node_one", "to_node" : "es_node_two"}},
{"cancel" : {"index" : "ops", "shard" : 0, "node" : "es_node_one"}}
]
}'

zabbix怎么重置密码

运维 koyo 回复了问题 2 人关注 1 个回复 4820 次浏览 2015-09-10 11:30 来自相关话题

Docker镜像无法删除

大数据 空心菜 回复了问题 2 人关注 1 个回复 5242 次浏览 2015-09-10 11:09 来自相关话题

运行docker报错Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

大数据 Ansible 回复了问题 2 人关注 1 个回复 5883 次浏览 2015-09-01 20:53 来自相关话题

浅谈docker文件系统分层与隔离

大数据 空心菜 发表了文章 0 个评论 4882 次浏览 2015-08-28 01:27 来自相关话题

        Docker 的很多特性都表现在它所使用的文件系统上,比如大家都知道docker的文件系统是分层的,所以它可以快速迭代,可以回滚。下面就聊一下我对docker文件系统的理解       Docker 使用的支 ...查看全部
df1.png
   
    Docker 的很多特性都表现在它所使用的文件系统上,比如大家都知道docker的文件系统是分层的,所以它可以快速迭代,可以回滚。下面就聊一下我对docker文件系统的理解
 
    Docker 使用的支持的文件系统有以下几种: aufs、devicemapper、btrfs  Vfs 我们先来介绍一下aufs


一、  Aufs(advanced multi layered unification filesystem)


    Aufs直译过来就是高级分层统一文件系统。做为一种Union FS 它支持将不同的目录挂载到同一个虚拟文件系统下. 这个怎么理解呢。通过一条命令我们来看一下吧。
mount -t aufs -o br=/tmp/dir1=ro:/tmp/dir2=rw none /tmp/newfs

    []-o 指定mount传递给文件系统的参数[/][]br 指定需要挂载的文件夹,这里包括dir1和dir2[/][]ro/rw 指定文件的权限只读和可读写[/][]none 这里没有设备,用none表示[/]

    这个结果是什么样子的呢。 就是把/tmp/dir1 t和/tmp/dir2  合并之后挂载到/tmp/newfs ,如果这时在/tmp/dir1 下创建一个文件a  /tmp/dir2下创建一个文件b 则  在/tmp/newfs 会看到a,b 这两个文件,并且a 是只读的, 如果有相同的文件则以先挂载的为准,后面挂载的操作会被忽略掉
 
   通过对Aufs的理解,大家可以想像一下docker所谓的“layer”的概念。还是实际的例子说明一下。

    一个镜像通过docker save  保存之后 会被打成一个tar 包,我们来看下这个tar包里都有些什么?
docker save cloud_jiankongbao:01.tar cloud_jiankongbao:01
    通过上面的语句我们把镜像保存出下来。可以看到,保存下来的是tar 包。 不是.iso文件^_^,镜像解压之后是什么呢?
ls . 
a005304e4e74c1541988d3d1abb170e338c1d45daee7151f8e82f8460634d329
d9bde94c518a16a886514758b6b4431200145ecd58e30c5633ac3c0256544d77
f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639
fb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f
repositories
    出现了四个目录文件,再通过
docker images --tree
└─f1b10cd84249 Virtual Size: 0 B
└─fb9cc58bde0c Virtual Size: 203.1 MB
└─a005304e4e74 Virtual Size: 203.1 MB
└─d9bde94c518a Virtual Size: 1.957 GB Tags: cloud_jiankongbao:01
    大家可以看到,4个目录其实分别是4个ID(注每次使用docker commit 提供对docker的修改之后就会产生一个新的id,就是通过这个ID可以实现对镜像的回滚)。每个目录下有json  layer.tar  VERSION 这三个文件。我们再看一下layer.tar 
cd fb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f;tar -xf layer.tar;ls

ls fb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f/
bin etc json lib lost+found mnt proc sbin srv tmp var
dev home layer.tar lib64 media opt root selinux sys usr VERSION
    这里存放的系统文件。

    我们再看一下镜像的4个不同ID的系统。

    f1b10cd84249 这个镜像是初始镜像,大小为0, fb9cc58bde0c 这个镜像是在f1b10cd84249基础上创建新的镜像,a005304e4e74是以fb9cc58bde0c为基础创建新的镜像。是树状继承的关系。我们再看下bin目录下的文件
ls a005304e4e74c1541988d3d1abb170e338c1d45daee7151f8e82f8460634d329/bin/
gtar tar
ls fb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f/bin/
arch cpio egrep gunzip logger mountpoint raw sleep true
awk cut env gzip login mv readlink sort umount
basename date ex hostname ls netstat rm stty uname
bash dd false ipcalc lsblk nice rmdir su unlink
cat df fgrep iptables-xml mkdir nisdomainname rpm sync usleep
chgrp dmesg find iptables-xml-1.4.7 mknod ping rvi taskset vi
chmod dnsdomainname findmnt kill mktemp ping6 rview touch view
chown domainname gawk link more ps sed tracepath ypdomainname
cp echo grep ln mount pwd sh tracepath6 zcat
    a005304e4e74 只有两个文件 fb9cc58bde0c包括了大部分bin下的文件,这就是Aufs,理解起来感觉有点像增量备份。


二、简单的说一下devicemapper 


    devicemapper是利用了Snapshot 和Thinly-Provisioned Snapshot两种原理。将多个快照挂在同一个卷下从而实现文件系统的分层。不过使用devicemapper 的话一个container的大小最大只能是10G。
 
    在启动docker daemon时用参数-s 指定:  docker -d -s devicemapper
 
    关于隔离是怎么实现的呢,当容器基于镜像启动之后,每个容器都会获得自己的写读可写的文件系统层。原镜像的那部分文件系统是只读的,从而实现每个容器的在文件系统上的离隔。
 
   平时大家都在说dokcer 是弱隔离的,为什么呢?因为他没有隔离的很彻底,比如内核,内核是跟大家共用的,跟宿主机共用同一个内核,SELinux、 Cgroups以及/sys、/proc/sys、/dev/sd*等目录下的资源是与宿主机共用的。

   如果要隔离的彻底那就是VM了,而且如果dockers要想实现这些隔离就必然要牺牲一下现在轻量级的特性。那还不如直接用虚拟机好了!
文章转载出处