在生产环境中我们应该注意什么?
(1)主机系统要求
(2)hostname策略
(3)静态IP地址
(4)负载均衡策略
(5)使用外部CA
(6)跨主机的传递CA证书:使用scp、rsync等命令行工具,或使借助网络系统实现主机间文件传递
主机系统要求
软硬件需求
不论是本地主机还是云主机,在安装UCP时所有节点要满足以下要求
- 2G内存
- 3G可用磁盘空间
- 静态IP
- 操作系统属于
- RHEL 7.0, 7.1, or 7.2
- Ubuntu 14.04 LTS
- CentOS 7.1
- SUSE Linux Enterprise 12
- Linux内核版本最低3.10
- CS Docker Engine版本最低1.10
此外,给controller添加备机时要复制CA证书密钥,系统最好能够提供远程复制或传输文件功能。
端口要求
主机 | 出入站方向 | 端口 | 目的 |
---|---|---|---|
controllers | in | 443/tcp (可配置) | 用于Web app及CLI客户端访问UCP |
controller | out | 443/tcp | 向Docker发送匿名使用的统计报告 |
controllers, nodes | in | 2375/tcp | 用于节点的Heartbeat,保证节点正常运行 |
controllers | in | 2376/tcp(可配置) | 被swarm manager用来接收来自controller的请求 |
controllers, nodes | in, out | 4789/udp | overlay网络 |
controllers, nodes | in, out | 7946/tcp, 7946/udp | overlay网络 |
controllers | in | 12376/tcp | TLS代理,提供对UCP、Swarm和Engine的访问 |
controller | in | 12379/tcp | 用于内部节点的配置,集群配置,高可用性 |
controller | in | 12380/tcp | 用于内部节点的配置,集群配置,高可用性 |
controller | in | 12381/tcp | TLS代理,提供对UCP的访问 |
controller | in | 12382/tcp | 管理TLS和来自swarm manager的请求 |
controller | in | 12383/tcp | 用于认证的后端存储 |
controller | in | 12384/tcp | 用于跨replica的身份认证存储后端 |
controller | in | 12385/tcp | 认证API暴露的端口 |
controller | in | 12386/tcp | 用于身份认证的worker |
主机命名规则(Hostname Strategy)
在安装Docker CS Engine之前,应该计划一个统一的主机命名规则。
可以使用短的主机名(hostname),如engine01
,也可以使用完全限定域名(Full Qualified Domain Names, FQDN),如engine01.docker.vm,
但是尽量主机命名规则的一致。
关于UCP负载均衡
UCP的安装并不包含负载均衡,但可以配置自己的负载均衡器,将用户请求均衡到多个controller replica。
如果你计划使用一个负载均衡器,需要做好决定:添加节点到负载均衡器中,到底使用IP地址还是FQDN。
负载均衡器中的多个节点尽量使用的一致的地址(IP地址或FQDN)。
UCP使用TLS,因此配置负载均衡时应该注意:
- 开放TCP的80和443端口
- 不要中断https连接
- 在每个controller上使用
/_ping endpoint
检查controller是否正常,是否应该保留在负载均衡池中。
使用外部CA
可指定UCP使用外部CA签发的证书,你应该考虑:
- 在安装过程中,需要在多个controller主机间复制
ca.pem
,cert.pem
,key.pem
ca.pem
是根CA的公开证书cert.pem
是服务器证书加上一些中间CA的公开证书cert.pem
应该包含指向UCP的所有地址的SAN(subject alternative name)key.pem
服务器私钥
所有controller节点共用一个SAN。