1 整体规划
1.1 拓扑架构
1.2 基础设置
编号 | 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 名词说明
名词 | 说明 |
---|---|
Jenkins | DevOps工具。 |
任务视图 | Jenkins任务的逻辑分组。 |
Gitlib源码库 | 保存相关应用源码的gitlib仓库。 |
Docker Swarm | 基于docker引擎的容器集群编排工具。 |
1.4 任务清单
一套基础微服务体系结构,包含应用服务,数据库服务,监控服务,磁盘优化服务等。
任务名 | 所属任务视图 | 说明 |
---|---|---|
microservice1-app | yourcompany-app | 构建部署名为microservice1-app的docker service |
microservice1-mysql | yourcompany-database | 构建部署名为microservice1-mysql的docker service |
gateway-app | yourcompany-app | 构建部署名为gateway-app的docker service |
gateway-mysql | yourcompany-database | 构建部署名为gateway-mysql的docker service |
jhipster-elasticsearch | yourcompany-monitor | 构建部署名为jhipster-elasticsearch的docker service |
jhipster-logstash | yourcompany-monitor | 构建部署名为jhipster-logstash的docker service |
jhipster-console | yourcompany-monitor | 构建部署名为jhipster-console的docker service |
jhipster-dashboard | yourcompany-monitor | 构建部署名为jhipster-dashboard的docker service |
jhipster-zipkin | yourcompany-monitor | 构建部署名为jhipster-zipkin的docker service |
jhipster-alerter | yourcompany-monitor | 构建部署名为jhipster-alerter的docker service |
jhipster-curator | yourcompany-monitor | 构建部署名为jhipster-alerter的docker service |
jhipster-registry | yourcompany-monitor | 构建部署名为jhipster-registry的docker service |
clean-disk-worker | yourcompany-cleanup | 清理worker节点的无效image和container |
clean-disk-manager | yourcompany-cleanup | 清理manager节点的无效image和container |
2 任务配置
2.1 数据库服务
以microservcie1-mysql为例,类似任务都在yourcompany-app任务视图下。
General / 项目名称
#!/bin/bash
if [ "$(docker service ls -f 'name=base-uaa-mysql' | grep base-uaa-mysql)" ];
then
docker service update --image dtr.devops.rootcloud.com/common/mysql:5 base-uaa-mysql;
echo 'updated service for base-uaa-mysql.';
else
docker service create --name base-uaa-mysql --replicas 1 --network name=rootcloud_base-overlay,alias=base-uaa-mysql --constraint node.labels.rootcloud.node.type==worker --constraint node.labels.rootcloud.node.env==data --env
MYSQL_ROOT_PASSWORD=my-secret-pw --publish 32800:3306 --mount type=volume,source=base-gateway-mysql,destination=/var/lib/mysql dtr.devops.rootcloud.com/common/mysql:5
echo 'started service for base-uaa-mysql.';
fiGeneral / 丢弃旧的构建
勾选
策略:
保持构建的天数:7
保持构建的最大个数:10
配置模块 | 配置项 | 配置内容 |
---|---|---|
General | 项目名称 | microservcie1-mysql |
丢弃旧的构建 | 勾选 Strategy: 保持构建的天数:7 保持构建的最大个数:10 |
|
源码管理 | none | |
构建 | Execute shell | #!/bin/bash if [ "$(docker service ls -f 'name=base-uaa-mysql' | grep base-uaa-mysql)" ]; then docker service update --image dtr.devops.rootcloud.com/common/mysql:5 base-uaa-mysql; echo 'updated service for base-uaa-mysql.'; else docker service create --name base-uaa-mysql --replicas 1 --network name=rootcloud_base-overlay,alias=base-uaa-mysql --constraint node.labels.rootcloud.node.type==worker --constraint node.labels.rootcloud.node.env==data --env MYSQL_ROOT_PASSWORD=my-secret-pw --publish 32800:3306 --mount type=volume,source=base-gateway-mysql,destination=/var/lib/mysql dtr.devops.rootcloud.com/common/mysql:5 echo 'started service for base-uaa-mysql.'; fi |