Docker UCP介绍
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-proxy
和ucp-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介绍相关推荐
- docker 感性介绍
docker 感性介绍 Docker 允许开发者们将他们的应用打包放在云端的"容器"中,无需再修改就可以发布到任何流行的 Linux 机器上.由于采用沙盒机制,各应用之间没有任何接 ...
- Docker教程介绍
Docker教程介绍 教程环境准备 linux 系统 virtualbox 软件安装 教程介绍 0-安装Vagrant,安装 centos 系统. 1-docker 介绍 2-docker 安装 3- ...
- Docker 基础介绍及配置安装 [一]
Docker 基础介绍及配置安装 [一] Docker 基础介绍及配置安装 [一] Docker 时间:2016年11月2日 Docker介绍 Docker是Docker.lnc公司开源的一个基于LX ...
- Docker之介绍与安装
Docker 说明 本章,我们主要从Docker简介.Docker中几个核心概念和Docker安装这几个方面对Docker进行介绍! 1.
- docker原理介绍以及部署使用
docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...
- docker简单介绍、安装使用、常用命令、docker构建springboot项目、k8s安装
docker简单介绍 docker的意义 把事情简单化 Docker友好的基于CLI的工作流使各种技能水平的开发人员都可以访问构建,共享和运行容器化应用程序. 快速移动 从单个软件包安装即可在几分钟内 ...
- docker容器介绍(3)
接上篇docker容器介绍 镜像迁移 保存一台宿主机上的镜像为tar文件,然后可以导入到其他的宿主机上: save 将镜像打包,与下面的load命令相对应 [root@yixuan ~]# doc ...
- 学习Mysql过程中拓展的其他技术栈:Docker入门介绍
一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...
- 02@Docker网络介绍及网络模式的使用
文章目录 Docker网络的介绍 一.Docker网络原理 1.docker网络介绍 2.Docker网络原理 二.docker网络基础 [网络命名空间] 1.Veth 设备对 2.网络原理实验的实现 ...
最新文章
- 比尔盖茨护犊子 称iPad让大批用户沮丧
- zg手册 之 python2.7.7源码分析(1)-- python中的对象
- 原生JavaScript实战之搜索框筛选功能
- 连接myeclipse和mysql数据库,MyEclipse与Mysql数据库的连接
- 智慧交通day01-算法库02:imutils
- 【java机器学习】svm入门十讲
- 笔记:git常用操作,git使用,git命令行
- 我是学渣,但是我零基础自学web前端成功了
- scrollLeft. float
- 每天工作16个小时,如果辞职,会不会显得自己没责任心呢?
- 实例化Spring容器的两种常用方式
- VC动态库可以嵌套调用
- TR外汇黑平台资金盘深度揭秘,谨防上当受骗,迟早会跑路
- 如何从零开始学android?
- Unity 窗口界面的简单介绍
- 计算机4级学那些课程,计算机四级考试科目是什么
- 三阶魔方大中小魔公式_三阶魔方花样玩法 公式汇总大全
- Windows数字签名 数字签名(代码签名)流程
- 这才是索罗斯暴富的真实秘密
- Qt组件-QLabel
热门文章
- 烤仔观察 | wēi?wéi!wěi?wèi?
- 基于ESP32-CAM的RSTP协议网络摄像头
- mysql zfs快照_ZFS for MySQL
- 联想系列笔记本无法更改电源使用方案解决办法(附图解)
- STM32F4 | SYSTEM文件夹介绍 | delay文件夹 | sys文件夹 | usart文件夹
- Mybatis学习笔记【part03】增删改查
- AutoGPT:自主完成任务工具
- 拍照翻译在线使用软件有什么?
- 2021年3月15日:螺纹/橡胶合约 策略体验日记
- VM虚拟机 运行openglES egl崩溃的问题