众所周知,运维很大的一部分时间都在安装软件,需要我们不停的重建测试环境而应对我们的部署流程。为了省下重建环境所需要的繁琐流程,我们可以使用虚拟化的快照功能,这样我们就可以快速的恢复已定义好的环境信息。如果说集群需要很多个机器,比如像 kubernetes 高可用集群,至少需要5台虚拟机才能搭建起来,我们按照恢复快照的方式进行一个一个的恢复,耗时不说,这也算是重复劳动力呀。所以,本人比较懒,想把这部分的时间也省下来。也就有了打造高效的运维测试环境这一文。
简而言之, 高效运维测试环境的需求就是:
使用ansible的role方式进行自动化安装rabbitmq单实例和集群。
从3.8.0版开始,RabbitMQ附带了内置的Prometheus&Grafana支持。3.8之前的RabbitMQ版本可以使用单独的插件 prometheus_rabbitmq_exporter
来向Prometheus公开指标。
只需开启rabbitmq_prometheus
插件,就可以启用prometheus的metrics接口,默认端口为15692
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce bash-completion
cp /usr/share/bash-completion/completions/docker /etc/bash_completion.d/
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
},
"live-restore": true,
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn/"
]
}
EOF
systemctl enable --now docker
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
官网: https://www.rabbitmq.com
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括:
如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论:
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。
本文的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。
本文综合了我们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何 避免软件污染 。
我们的初衷是分享在现代软件开发过程中发现的一些系统性问题,并加深对这些问题的认识。我们提供了讨论这些问题时所需的共享词汇,同时使用相关术语给出一套针对这些问题的广义解决方案。本文格式的灵感来自于 Martin Fowler 的书籍: Patterns of Enterprise Application Architecture , Refactoring 。
任何 SaaS 应用的开发人员。部署和管理此类应用的运维工程师。
作为一名苦逼运维,写软件部署文档时必不可少的一件事情,可以说:文档的好坏决定了运维能力的高低。
那我们在写部署文档的时候,要做哪些事情,要写关于软件的哪些步骤呢,本人结合自己常用的一些流程,整理了下列的模板,仅供大家参考!
作为一个苦逼运维人,在学习一门新软件的时候,要经历过哪些阶段,或者说要做哪些事情,才能算真的了解这个软件呢?下面就个人经历而言整理了一些步骤。
系统包
管理方式部署源码包
编译方式部署docker
容器部署docker-compose
方式部署kubernetes
方式部署单机
部署集群
部署centos
debian
安装软件
的存放目录软件日志
的存放目录软件数据
的存放目录软件进程
管理方式(service
,systemd
,supervistor
)软件日志
的切割方式shell
方式进行自动化部署ansible
方式进行自动化部署监控指标
数据收集zabbix
传统方式监控,并制定监控报警模板prometheus
方式监控,并制定监控报警模板grafana
展示监控面板短信
邮件
部署规模
,分别进行备份软件的数据故障场景
,对备份数据进行恢复
平滑
升级停机
升级部署方式
,分别进行升级版本操作宿主机
,分别进行升级版本操作宿主机
,分别进行相关优化操作部署规模
,分别进行相关优化操作学习途径的话
可通过下列方式去寻找软件相关的知识,帮助各位快速学习。
google.com
搜索软件的一切信息,如 pdf
,ppt
,cookebook
,awesome
,cheatsheet
,install
,gitbook
,问题
, Bug
亚马逊
京东
/当当
/闲鱼二手
商城购买实体书微信读书
技术名称 + cookbook
/ ebook
google
/baidu
/微信公众号
/个人博客
等等。https://www.slideshare.net/ | https://myslide.cn/ 中分享的ppt |
github
github.com
中搜索软件的awesome
,其整理了软件相关的知识点及工具清单。github.com
中搜索软件的cheatsheet
,其整理了软件相关的常用命令。github.com
中搜索软件的issues
,其整理了用户使用的问题以及软件的bug。写在最后
当然你大可不必将上面的每一种情况都操作一遍
,但是你一定要将上列的步骤都要做一遍
。
这真是最后了
最后,好记性不如烂笔头,统统都要记笔记,无论你记在哪里。都要记笔记。
这个要切记,不要怕麻烦!
最后,好记性不如烂笔头,统统都要记笔记,无论你记在哪里。都要记笔记。
这个要切记,不要怕麻烦!
最后,好记性不如烂笔头,统统都要记笔记,无论你记在哪里。都要记笔记。
这个要切记,不要怕麻烦!