分类目录归档:DevOps

详解nginx及FPM平滑重启

平滑重启

GR是Graceful Restart(平滑重启)的简称,是一种在协议重启时保证转发业务不中断的机制。 GR机制的核心在于:当某设备进行协议重启时,能够通知其周边设备在一定时间内将到该设备的邻居关系和路由保持稳定。在协议重启完毕后,周边设备协助其进行信息(包括支持GR的路由/MPLS相关协议所维护的各种拓扑、路由和会话信息)同步,在尽量短的时间内使该设备恢复到重启前的状态。在整个协议重启过程中不会产生路由振荡,报文转发路径也没有任何改变,整个系统可以不间断地转发数据。这个过程即称为平滑重启。

nginx平滑重启

nginx进程分为master主进程和worker工作进程,nginx的平滑重启通过信号HUB控制。

hup.png | center | 827x338

注:在POSIX兼容的平台上,SIGUSR1和SIGUSR2是发送给一个进程的信号,它表示了用户定义的情况。

为了详细分析nginx的平滑重启过程,我们持续监控nginx进程变化。 发送HUP信号

kill -HUP `cat /home/git/nginx/logs/nginx.pid`

nginx_1.png | center | 827x126

nginx_2.png | center | 827x136

nginx_3.png | center | 827x83

通过观察,可以分析出大致的平滑重启过程为: 1. master使用新配置 fork出n-1个worker及新master 2. 新worker处理新情求,旧worker执行完退出 3. … 阅读全文

消息队列Rabbitmq与Kafka对比分析

什么是消息队列

在计算机科学中,消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。

实现

消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。消息队列是随内核持续的。

目前,有很多消息队列有很多开源的实现,包括JBoss Messaging、JORAM、Apache ActiveMQ、Sun Open Message Queue、RabbitMQ、IBM MQ、Apache Qpid、Apache Kafka和HTTPSQS。

AMQP与Rabbitmq

高级消息队列协议(AMQP)是一个异步消息传递所使用的应用层协议规范。作为线路层协议,而不是API(例如JMS2),AMQP客户端能够无视消息的来源任意发送和接受信息。现在,已经有相当一部分不同平台的服务器和客户端可以投入使用。

AMQP messaging 中的基本概念

  • Broker:

阅读全文

go docker与kubernetes实践

Go

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go的语法接近C语言 + Python。

安装

下载Go 1.10.2 版本,可执行文件,解压安装,并配置bin环境变量

tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz 
export PATH=$PATH:/usr/local/go/bin

创建go代码工作路径

mkdir /home/git/dh/go
阅读全文

使用ansible + git + python搭建部署系统

Ansible

ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:让我们自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理,基于 paramiko 开发。 这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。所以就不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

安装

以centos为例

sudo yum install ansible

安装完成,配置文件默认在/etc/ansible/ansible.cfg 为了方便后续的开发,需要修改配置文件

#失败后不在本地生成retry文件,终端也不输出
retry_files_enabled = 
阅读全文