Docker 1.12 Swarm集群实战(第六章)

本章我们来介绍如何使用cAdvisor+InfluxDB+Grafana搭建一个简单的swarm性能监控平台.

  • cAdvisor用来分析运行中的Docker容器的资源占用以及性能特性的工具。用来收集swarm节点性能数据保存到infuxdb中.
  • InfuxDB是一个开源分布式时序数据库, 用来保存性能数据.
  • Grafana性能绘图仪表盘工具, 读取Influxdb性能数据,绘图展示.

Docker 1.12 Swarm集群实战(第五章)

提要

补充一些遗漏的问题.
本章主要内容:

  1. 使用constraints指定service约束.
  2. service挂载使用本地volume.
  3. ELK日志平台使用GELF日志驱动收集日志.

指定service约束

在前几章中, 我们创建的registry服务,是由swarm自动调度定义执行在某个节点上的. 这样的话我们如果我们重启service以后, registry服务可能会被启动再随机的节点.造成我们上传的镜像都不见了. 如何解决这个问题呢?
在创建service的时候可以使用--constraints参数,后面跟表达式,限制service容器在每个节点的调度情况.比如你想指定service运行在某个节点上等.
例如指定service运行在node01上:

1
2
docker service create --name registry --publish 5000:5000 \
--constraint 'node.hostname==node01' registry

Docker 1.12 Swarm集群实战(第三章)

第三章 在swarm集群上运行docker币应用

在第一章的我们在单节点环境下运行docker币应用的时候, 首先我们build的应用镜像, 这时候image是保存在本机的.
现在我们使用swarm集群来运行,docker币服务分布在很多不通的服务器节点上, 难道每个节点都要build镜像, 或者要把image拷贝到别的节点上?

当然不用, 这个时候我们要用到本地镜像仓库docker registry, 用于保存image. 每个节点从registry拉取需要的image就可以了.


当然还有别的方法, 可以使用docker Hub公用的镜像仓库, registry是一种开源的本地镜像仓库服务.

Docker 1.12 Swarm集群实战(第二章)

第二章 创建Swarm集群, scaling out应用

继续上一章的内容, 为了scale out我们的docker币应用, 产生更多的docker币, 我们要搭建一个docker swarm集群.

2.1 docker1.12 Swarm 模式简介

  1. Docker Engine 1.12 集成了Swarm集群工具.
  2. 主要使用三个新的命令行工具创建一个swarm集群:
  • docker swarm 开启swarm模式; 加入Swarm集群; 配置集群参数
  • docker node 查询集群节点信息; 提升/移除一个管理节点; 管理swarm节点主机
  • docker service 创建管理 service

Docker 1.12 Swarm集群实战(第一章)

第0章 前言

自从dockercon 2016发布docker1.12版本以来, 经历了几个RC版本, docker1.12终于迎来了第一个稳定版.
docker1.12展示了docker大统一平台的野心, 集成了swarmkit, 使你可以不用安装额外的软件包, 使用简单的命令启动创建docker swarm集群.
集成了swarm集群的安全特性, 集成了K-V存储, 你现在不需要额外部署etcd或者consul.

本文来自与Pycon2016的一个workshop笔记总结.
Deploying and scaling applications with Docker, Swarm, and a tiny bit of Python magic.
Docker最新版1.12为基础. 介绍了docker编排使用的最新情况.希望大家能有所所收获. 推荐直接观看视频讲解.
主要分以下及部分:

  • 第一章 环境准备, 主要准备实验环境, 安装docker, 使用docker-compose运行我们的示例应用docker币.
  • 第二章 创建swarm集群, 使用SwarmKit配置docker swarm集群. 创建swarm service.
  • 第三章 在swarm上运行app, 部署本地registry, overlay network介绍
  • 第四章 swarm集群运维.

CEPH存储集群快速指南(centos7)

一. Ceph简介

一个Ceph存储集群要求至少有一个Ceph监视器和两个Ceph OSD守护进程。当运行Ceph文件系统客户端时,必须要有Ceph元数据服务器。

  • Ceph OSD守护进程(OSDs):Ceph的OSD守护进程(OSD)存储数据,处理数据复制,恢复,回填,重新调整,并通过检查其它Ceph OSD守护程序作为一个心跳 向Ceph的监视器报告一些检测信息。Ceph的存储集群需要至少2个OSD守护进程来保持一个 active + clean状态.(Ceph默认制作2个备份,但你可以调整它)
  • Ceph监视器(Monitors): Ceph的监控保持集群状态映射,包括OSD(守护进程)映射,分组(PG)映射,和CRUSH映射。 Ceph维护一个历史记录(epoch), 保存Monitors, OSDs 守护进程, PGs的状态改变.
  • Ceph元数据服务器(MDS): MDS是Ceph的元数据服务器,代表存储元数据的Ceph文件系统(即Ceph的块设备和Ceph的对象存储不使用MDS)。Ceph的元数据服务器使用POSIX文件系统,用户可以执行基本命令如 ls, find,等,并且不需要在Ceph的存储集群上造成巨大的负载.

CentOS7编译RPM包安装Openvswitch

1. 安装编译工具

1
yum -y install wget openssl-devel gcc make python-devel openssl-devel kernel-devel kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool

2. 编译环境准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
### 创建编译用户
#adduser ovs
#su - ovs

### 创建编译目录,下载openvswitch源码包
$mkdir -p ~/rpmbuild/SOURCES
$wget http://openvswitch.org/releases/openvswitch-2.5.0.tar.gz

### 准备编译环境
$cp openvswitch-2.5.0.tar.gz ~/rpmbuild/SOURCES/
$tar xfz openvswitch-2.5.0.tar.gz
$ sed 's/openvswitch-kmod, //g' openvswitch-2.5.0/rhel/openvswitch.spec > openvswitch-2.5.0/rhel/openvswitch_no_kmod.spec
$rpmbuild -bb --nocheck ~/openvswitch-2.5.0/rhel/openvswitch_no_kmod.spec
$exit

安装openvswitch

1
2
3
4
5
6
#yum localinstall /home/ovs/rpmbuild/RPMS/x86_64/openvswitch-2.5.0-1.x86_64.rpm
### 验证安装
# ovs-vsctl -V
ovs-vsctl (Open vSwitch) 2.5.0
Compiled Apr 13 2016 06:52:00
DB Schema 7.12.1

启动 openvswitch

1
2
#systemctl start openvswitch.service
#chkconfig openvswitch on