UCP是一个基于Docker的集群管理工具,也即集群中每个节点都应该安装Docker Engine。

UCP集群包含两种节点:
- Controller: 管理集群,并持久化集群配置
- Node:运行容器

在一个节点上安装UPC时,它就是一个Controller节点。在Controller上会启动10个容器。

名称 描述
ucp-proxy TLS代理,用于保护访问本地Docker Engine的安全
ucp-controller UCP应用,使用kv store持久化存储配置
ucp-swarm-manager 提供集群能力,使用kv store选择primary主机和记录集群成员
ucp-swarm-join 提供Heartbeat功能,用于在kv store上记录心跳,表示此节点正常有效。如果节点宕机了,heartbeat停止,节点将从集群中移除
ucp-auth-api 被UCP和UTR用来身份识别和授权的核心API
ucp-auth-worker 按计划执行LDAP同步,清除ucp-auth-store中的数据
ucp-auth-store 为用户、组织和团队存储授权配置和数据
ucp-auth-kv 用于存储UCP配置,仅供UCP内部使用,不用于其它目的
ucp-cluster-root-ca 颁发证书的CA,在添加节点或使用客户端管理包时使用
ucp-cluster-client-ca 授权用户捆绑的CA,仅在没有外部根CA的环境中安装UCP时使用

当一个节点以Node加入UCP集群时,它将启动两个容器:ucp-proxyucp-swarm-join(作用见上表格)。

Docker UCP将使用如下的命名数据卷持久化数据:

适用节点 数据卷名称 主机/var/lib/docker/volumes/目录下的位置 描述
all ucp-client-root-ca ucp-client-root-ca/_data 用于UCP根CA的证书和密钥。如果要使用自己的证书就不要创建此数据卷。
all ucp-cluster-root-ca ucp-cluster-root-ca/_data 用于Swarm集群根CA的证书和密钥
all ucp-controller-client-certs ucp-controller-client-certs/_data 当前节点用于UCP管理的客户端证书
all ucp-controller-server-certs ucp-controller-server-certs/_data UCP web服务器使用的管理端证书
controller ucp-kv ucp-kv/_data 用于键值对存储的持久化
all ucp-kv-certs ucp-kv-certs/_data 集群kv的客户端证书,重复存在于集群中每个节点中
all ucp-node-certs ucp-node-certs/_data 当前节点的Swarm证书,重复存在于集群中每个节点中

controller备机数量与故障承受能力

你可以添加多个replica来保证UCP集群的高可用性:

  • 能够处理controller节点失败
  • 在controller和replica节点之间负载用户访问

    在controller宕机时,自动从replica中选举一个主机作为controller。
    要保证replica能够相同的功能,务必保证所有replica(包括controller)使用相同的CA根证书及密钥。(CA证书及密钥的复制请详看后面内容)

为保证集群承受故障的能力(提供高可用性),可以创建多个controller。replica总数与故障机的承受数量的关系如下

replica数量(包括controller) 故障机容忍数量
1 0
3 1
5 2
7 3

为什么必须满足这样的数量对应关系?《待解决》

当规划集群规模时,应该遵从以下规则:
- 不要创建只有一个replica的集群。这样的集群,起不到任何安全保证,而且性能也会降低。
- 一个replica宕机,会导致集群总体的故障承受能力的下降,因此应尽快处理有故障的replica
- 集群中的replica不是越多越好,replica越多会导致性能下降,应按需配置replica数量

在实现高可用性环境的主机间复制CA

更确切地说,在controller的replica间复制CA,由controller的多个replica实现UCP集群的高可用性。

UCP内部使用两种认证中心(Certificate Authority):
- ucp-cluster-root-ca: 在加入新节点或UCP管理客户端时使用的证书
- ucp-client-root-ca: 在非管理的客户端颁发的证书

配置UCP高可用性时,需要确保运行在每个controller上的CA是一样的。

如何保证集群中的每个controller节点使用相同的根证书和密钥?

1.当添加一个新的controller节点到集群时,直接使用安装第一个controller节点时生成的根证书及密钥的备份。

2.也可以在controller新节点加入集群后,还原备份的CA及密钥。

但是,需要注意的是,在使用backup命令备份CA的根证书及密钥时,会暂停UCP的CA容器。因此尽量不要在业务处理高峰期备份。

# 在安装第一个controller后,备份cA及密钥
docker run --rm -i --name ucp \-v /var/run/docker.sock:/var/run/docker.sock \docker/ucp backup --root-ca-only --interactive \--passphrase "secret" > /tmp/backup.tar
# 还原CA及密钥
docker run --rm -i --name ucp \-v /var/run/docker.sock:/var/run/docker.sock \docker/ucp restore --root-ca-only --interactive \--passphrase "secret" < /tmp/backup.tar

其中,

  • root-ca-only 指定只备份或还原CA用的数据卷
  • interactive 提供命令行消息提示
  • passphrase 指定加密或解密的密钥

备份与灾难恢复

UCP节点使用命名的数据卷持久化数据。运行用户容器的集群节点并不持久化数据,因此不需要为它们备份。
但是必须定期备份controller节点。

使用docker/ucp backup命令可以将controller节点数据卷打包成一个存档文件,并以流输出到控制台。

为保证备份的一致性,备份时会停止当前controller节点上的所有UCP容器。集群节点上的用户容器不受影响。
但是为最小化地影响你的业务,请在非商业运行时间备份,而且尽量使用controller高可用性的环境,这样可以用户请求可以均衡到其它的controller节点上去。

# 使用ucp工具备份并加密, 存储到指定的存档文件中
$ docker run --rm -i --name ucp \-v /var/run/docker.sock:/var/run/docker.sock \docker/ucp backup --interactive \--passphrase "secret" > /tmp/backup.tar# 查看存档文件内容时,会提示输入上面指定的secret密钥
$ gpg --decrypt /tmp/backup.tar | tar --list# 使用ucp工具还原
docker run --rm -i --name ucp \-v /var/run/docker.sock:/var/run/docker.sock  \docker/ucp restore < backup.tar

集群中配置多个controller可以承受一定数据提量的节点失败,当这些controller节点同时宕机时,集群就完成崩掉了。

假设你有A,B,C三个controller节点并定期备份,而A中存在最新备份,那么实现集群的还原该怎么办呢?

  • 使用stop命令停止B和C
  • 还原A
  • 从B和C上卸载UCP
  • 将B和C重新以controller添加到集群中

Docker UCP介绍相关推荐

  1. docker 感性介绍

    docker 感性介绍 Docker 允许开发者们将他们的应用打包放在云端的"容器"中,无需再修改就可以发布到任何流行的 Linux 机器上.由于采用沙盒机制,各应用之间没有任何接 ...

  2. Docker教程介绍

    Docker教程介绍 教程环境准备 linux 系统 virtualbox 软件安装 教程介绍 0-安装Vagrant,安装 centos 系统. 1-docker 介绍 2-docker 安装 3- ...

  3. Docker 基础介绍及配置安装 [一]

    Docker 基础介绍及配置安装 [一] Docker 基础介绍及配置安装 [一] Docker 时间:2016年11月2日 Docker介绍 Docker是Docker.lnc公司开源的一个基于LX ...

  4. Docker之介绍与安装

    Docker 说明 本章,我们主要从Docker简介.Docker中几个核心概念和Docker安装这几个方面对Docker进行介绍! 1.

  5. docker原理介绍以及部署使用

    docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...

  6. docker简单介绍、安装使用、常用命令、docker构建springboot项目、k8s安装

    docker简单介绍 docker的意义 把事情简单化 Docker友好的基于CLI的工作流使各种技能水平的开发人员都可以访问构建,共享和运行容器化应用程序. 快速移动 从单个软件包安装即可在几分钟内 ...

  7. docker容器介绍(3)

    接上篇docker容器介绍 镜像迁移 保存一台宿主机上的镜像为tar文件,然后可以导入到其他的宿主机上: save ​ 将镜像打包,与下面的load命令相对应 [root@yixuan ~]# doc ...

  8. 学习Mysql过程中拓展的其他技术栈:Docker入门介绍

    一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...

  9. 02@Docker网络介绍及网络模式的使用

    文章目录 Docker网络的介绍 一.Docker网络原理 1.docker网络介绍 2.Docker网络原理 二.docker网络基础 [网络命名空间] 1.Veth 设备对 2.网络原理实验的实现 ...

最新文章

  1. 比尔盖茨护犊子 称iPad让大批用户沮丧
  2. zg手册 之 python2.7.7源码分析(1)-- python中的对象
  3. 原生JavaScript实战之搜索框筛选功能
  4. 连接myeclipse和mysql数据库,MyEclipse与Mysql数据库的连接
  5. 智慧交通day01-算法库02:imutils
  6. 【java机器学习】svm入门十讲
  7. 笔记:git常用操作,git使用,git命令行
  8. 我是学渣,但是我零基础自学web前端成功了
  9. scrollLeft. float
  10. 每天工作16个小时,如果辞职,会不会显得自己没责任心呢?
  11. 实例化Spring容器的两种常用方式
  12. VC动态库可以嵌套调用
  13. TR外汇黑平台资金盘深度揭秘,谨防上当受骗,迟早会跑路
  14. 如何从零开始学android?
  15. Unity 窗口界面的简单介绍
  16. 计算机4级学那些课程,计算机四级考试科目是什么
  17. 三阶魔方大中小魔公式_三阶魔方花样玩法 公式汇总大全
  18. Windows数字签名 数字签名(代码签名)流程
  19. 这才是索罗斯暴富的真实秘密
  20. Qt组件-QLabel

热门文章

  1. 烤仔观察 | wēi?wéi!wěi?wèi?
  2. 基于ESP32-CAM的RSTP协议网络摄像头
  3. mysql zfs快照_ZFS for MySQL
  4. 联想系列笔记本无法更改电源使用方案解决办法(附图解)
  5. STM32F4 | SYSTEM文件夹介绍 | delay文件夹 | sys文件夹 | usart文件夹
  6. Mybatis学习笔记【part03】增删改查
  7. AutoGPT:自主完成任务工具
  8. 拍照翻译在线使用软件有什么?
  9. 2021年3月15日:螺纹/橡胶合约 策略体验日记
  10. VM虚拟机 运行openglES egl崩溃的问题