本系列文章演示如何快速搭建一个简单的云原生架构的实践环境。

基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力。

1 整体规划

1.1 拓扑架构

1.2 基础设置

硬件配置

最低:2核 CPU,4G 内存,30G 硬盘。

建议:8核 CPU,16G 内存,100G 硬盘。

编号 IP OS 主机名 角色 环境 说明
A 192.168.1.101 CentOS7.4 ddc_node01 Manager Global 运行UCP和Jenkins的节点
B 192.168.1.102 CentOS7.4 ddc_node02 Worker Global 运行DTR的节点
C 192.168.1.103 CentOS7.4 ddc_node03 Worker Data 运行有状态服务容器的节点
D 192.168.1.104 CentOS7.4 ddc_node04 Worker Dev 运行无状态服务容器和GFS Server的节点
E 192.168.1.105 CentOS7.4 ddc_node05 Worker Dev 运行无状态服务容器和GFS Server的节点

1.3 DDC

DDC是Docker Data Center的简称,是Docker公司推出的容器化数据中心管理平台,也称作Docker 企业版。它的编排核心是swarm,包含2个主要组件UCP和DTR。

与K8s和Mesos DC/OS对比,DDC更加简洁和易用;安装包都是免费的,商业许可按节点收费。

组件 全称 安装节点 版本 说明
UCP Universal Control Plane 192.168.1.101 3.0.0 管理节点,服务,镜像,容器,网络,数据卷等。
DTR Docker Trusted Registry 192.168.1.102 2.5.0 管理内部docker镜像库。

1.4 配套组件

组件名 安装节点 说明
Jenkins 192.168.1.101 配置CICD任务。
GlusterFS 192.168.1.104
192.168.1.105
为mysql容器提供持久化存储。
GitLab 192.168.1.102 源码库。
Nexus 192.168.1.102 Maven依赖库。
DNS 192.168.1.101 域名服务器。

1.5 域名配置

自定义域名 yourdomain.com
CNAME ucp.yourdomain.com 192.168.1.101
dtr.yourdomain.com 192.168.1.102
jenkins.yourdomain.com 192.168.1.101

1.6 镜像规划

基础镜像 通用镜像 应用镜像
base common app
openjdk rabbitmq
mysql
jhipster-registry
jhipster-console
jhipster-logstash
jhipster-elasticsearch
jhipster-alerter
jhipster-curator
jhipster-dashboard
jhipster-zipkin
base-uaa
base-identity
base-gateway

2 组件安装

2.1 准备工作

安装UCP和DTR时会从docker公共镜像库下载几十个镜像文件,如果不能访问store.docker.com,可以先把镜像文件下载到本地,然后离线安装。

如何离线安装UCP和DTR,请参考这里

2.2 UCP安装

安装节点 192.168.1.101
域名设置 https://ucp.yourdomain.com
管理账号 admin,密码会在安装时提示。

在安装节点上执行命令:

 $ docker container run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.0 install --host-address 192.168.1.101 --interactive

更加完整的UCP安装文档,请参考这里

2.3 DTR安装

安装节点 192.168.1.102
域名设置 https://dtr.yourdomain.com
管理账号 admin,密码和UCP一致。

在安装节点上执行命令:

$ docker run -it --rm docker/dtr:2.5.0 install --dtr-external-url https://dtr.yourdomain.com --ucp-node tx-aaw001 --ucp-username admin --ucp-url https://ucp.yourdomain.com --ucp-insecure-tls

更加完整的DTR安装文档,请参考这里

2.4 获取DTR认证

UCP会从DTR上拉取镜像来启动服务,UCP要获取DTR的CA证书;安装完UCP和DTR后,在UCP节点上执行以下命令:

$ curl -k https://dtr.devops.rootcloud.com/ca -o /etc/pki/ca-trust/source/anchors/dtr.devops.rootcloud.com.crt
$ update-ca-trust
$ systemctl restart docker.service

2.5 GlusterFS安装

安装模式 安装位置
宿主机 192.168.1.104 (master)
192.168.1.105

​更加完整的GlusterFS安装文档,请参考这里

2.6 Jenkins安装

a, 安装软件包
软件包 安装模式 版本 安装节点 安装路径
openjdk 宿主机 1.8 192.168.1.101 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.***
maven 宿主机 3.5.3 192.168.1.101 /usr/local/maven/apache-maven-3.5.3
docker 宿主机 17.06.2-ee-10 192.168.1.101 /usr/bin/
b, 安装jenkins
安装模式 安装节点 *端口
宿主机 192.168.1.101 8088

Jenkins安装明细,请参考这里

c, Jenkins全局设置
菜单 项目 内容
系统管理 - 插件管理 搜索gitlab, git, maven,docker相关的插件 直接安装重要插件:Maven Integration,Maven Artifact ChoiceListProvider (Nexus),GitLab,Gitlab Hook,Build Authorization Token Root,CloudBees Docker Build and Publish,Docker-build-step,Docker。
系统管理 - 配置 配置gitlab插件和git插件 参考这里
系统管理 - 系统配置 Maven项目配置 - Local Maven Repository maven安装时设置的本地库:/var/lib/maven/repo
系统管理 - 全局工具配置 Maven Configuration - Default settings provider /usr/local/maven/apache-maven-3.5.4/conf/settings.xml
Maven Configuration - Default global settings provider /usr/local/maven/apache-maven-3.5.4/conf/settings.xml
JDK - JDK安装 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.***
Maven - Maven安装 /usr/local/maven/apache-maven-3.5.4/
Git - Git安装 /usr/local/git/bin/git
注意:路径里包括可执行文件的名字(最后那个git)
Docker - Docker 安装 name: docker17.06.2-ee-10,Installation root: /usr/bin/
d, 创建Jenkins任务

更加完整的任务配置说明,请参考这里

系列文章

Docker Data Center系列(一) - 快速搭建云原生架构的实践环境

Docker Data Center系列(二) - UCP安装指南

Docker Data Center系列(三) - DTR安装指南

Docker Data Center系列(四) - 离线安装UCP和DTR

Docker Data Center系列(五) - 使用自定义的TLS安全认证

Docker Data Center系列(一)- 快速搭建云原生架构的实践环境的更多相关文章

  1. Docker Data Center系列(二)- UCP安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 Linux内核版 ...

  2. Docker Data Center系列(四)- 离线安装UCP和DTR

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 离线安装UCP 1.1 可用版本 Version ...

  3. Docker Data Center系列(三)- DTR安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 成为UCP管理的 ...

  4. Docker Data Center系列(五)- 使用自定义的TLS安全认证

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 名词说明 CSR: Certificate Sig ...

  5. 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

    前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...

  6. 【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)

    书名:Docker+Kubernetes应用开发与快速上云 作者:李文强 出版社:机械工业出版社 出版时间:2020-01 ISBN:9787111643012 [山外笔记-云原生]<Docke ...

  7. 使用Velero Restic快速完成云原生应用迁移至ACK集群

    本文记录使用Velero Restic快速完成云原生应用迁移至ACK集群的实践过程. 0. 实践步骤概览 (1)创建GKE集群(或自建Kubernetes集群)(2)在GKE集群上部署示例应用Jenk ...

  8. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  9. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps 详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

随机推荐

  1. [Swift]LeetCode657. 机器人能否返回原点 | Robot Return to Origin

    There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its mov ...

  2. [Swift]LeetCode853. 车队 | Car Fleet

    N cars are going to the same destination along a one lane road.  The destination is target miles awa ...

  3. [Swift]LeetCode967. 连续差相同的数字 | Numbers With Same Consecutive Differences

    Return all non-negative integers of length N such that the absolute difference between every two con ...

  4. djang-异步——定时操作

    django本身是一个同步框架,flask也是,所以要把它变成异步操作的话还得专门设置一下 我的这个系统呢是windows系统,python3.7的 所以有的库是不可以兼容的 ,然后到时候会稍微修改一 ...

  5. 为什么说Java中只有值传递

    本文转载自公众号 Hollis 对于初学者来说,要想把这个问题回答正确,是比较难的.在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文 ...

  6. Java如何在运行时识别类型信息?

    在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得:但有一些知识不是的,需要在实践的时候才能得到真知——这或许就是王阳明提倡的“知行合一”. 在Java中,并不是所有的类型信息都能在编译阶段 ...

  7. 「造个轮子」——cicada 源码分析

    前言 两天前写了文章<「造个轮子」--cicada(轻量级 WEB 框架)> 向大家介绍了 cicada 之后收到很多反馈,也有许多不错的建议. 同时在 GitHub 也收获了 80 几颗 ...

  8. ThreadPoolExecutor线程池任务执行失败的时候会怎样

    接上一篇 <JDK1.8中的线程池> 1.  任务执行失败时的处理逻辑 1.1.  Worker Worker相当于线程池中的线程 可以看到,Worker有几个重要的属性: thread ...

  9. 知其所以然~mongodb副本集

    MongoDB 复制(副本集) MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您 ...

  10. RabbitMQ消息队列(二)-RabbitMQ消息队列架构与基本概念

    没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. RabbitMQ架构 说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃) 从图中 ...