Pārlūkot izejas kodu

update by krrish

krrish 7 gadi atpakaļ
vecāks
revīzija
901c285205

+ 20 - 0
05-常见问题处理FAQ/01-DNS 域名原理及失效处理.md

@@ -0,0 +1,20 @@
+
+# 1. DNS 原理
+ 
+ - DNS 服务器:在外网搭建**PowerDNS**服务,提供名称解析服务(当然使用其它 DNS 服务器也可以,比如 Bind 等)。最好有自带对外的增、删、改、查 接口服务,通过 http API 暴露接口,否则只能自己开发了。
+  - 在域名控制台中,手动设置 svi.pub 域名解析,指向为我们自建的**PowerDNS**服务。后续的二级域名,都会在我们自建的 DNS 服务器上生成或解析啦。 :)
+  - 云平台 "基础设施" 中,部署一个 "powerdns-external-dns" 基础服务(我们暂称之为`DNS 客户端`吧)。
+  - DNS 客户端每隔一段时间(可配置),从云平台的 MetaData 元数据( http://rancher-metadata/ )信息中,获取 服务名、应用名(栈名)、服务所在主机等信息。
+  -  DNS 客户端通过提前配置好的域名规则 (默认是 <服务名>.<栈名>.<环境名>.<svi.pub>)将数据进行组合为 http Post 信息。
+  - DNS 客户端通过**Insert_Or_Update**接口,向 DNS 服务器 的 http API Post 数据,进行二级域名的增、删、改、查 。
+
+![](images/_1531404886_28206.png)
+
+
+# 2. 问题处理
+ 
+ 目前基本碰到的问题,都是由于网络延时造成 api 提交数据失败。解决方案有以下几种:
+
+   - 重启下 powerdns-external-dns 服务,查看日志如果没有出现错误即问题解决(80% 可以解决)
+   - 将 powerdns-external-dns 中的健康检测的 "超时时间" 适当增加(一般设置为 2-10 左右的值,网络越差值越大 )
+   - 优化下网络吧,目前线上暂时未发现有此问题 :-o

+ 39 - 0
05-常见问题处理FAQ/01-Jenkins 中常见失败的处理.md

@@ -0,0 +1,39 @@
+# 1. Jenkins 的作用
+
+Jenkins 实现了代码的拉取、编译、打包、传输、build 镜像、上传镜像、发布至测试环境 等功能。
+拉取、编译、打包  这些步骤由开发人员自行维护,主要联系人:@肖慧
+
+# 2. 传输失败定位 
+  - 查看 192.168.100.19 服务器上空间是否充足
+  - 查看 192.168.100.19 服务器上 FTP 服务是否正常
+
+![有输出  vsftpd 则表示 正常](images/_1531736590_11754.png)
+
+  - 查看 /var/log/syslog 及 /var/log/kern 日志
+
+# 3. build 镜像失败定位
+  - 登陆 192.168.100.19 服务器 /tmp 目录
+  - 可以看到 "网元名"  的文件夹,进入
+  - 查看 error.log 
+
+# 4. 上传镜像失败定位
+  - 尝试手动登陆镜像仓库并上传
+ 
+```sh
+#(用户:admin   密码:Changeme_123)
+docker login registry.svicloud.com
+
+# push image
+docker push registry.svicloud.com/powercloud/comm/server:V01R01B03-4267
+```
+
+# 5. 发布失败(deploy failed)定位 
+  - 检查 Jenkins 中的发布参数是否正确
+
+![](images/_1531738335_22654.png)
+
+  - 如果是新建的环境,需要联系 @董朝军 添加环境认证信息至部署脚本中
+  
+ ![](images/_1531738431_96.png)
+
+  - 查看 192.168.100.19 上的 /tmp 下的 *_deploy 目录日志

+ 24 - 0
05-常见问题处理FAQ/01-推送镜像至线上仓库.md

@@ -0,0 +1,24 @@
+# 1. 镜像仓库说明
+
+目前视维镜像仓库共有 2 个,一个在长沙,另一个在法国 151.106.8.135 上,二个镜像仓库域名均相同,都为 registry.svicloud.com。国内用户访问 registry.svicloud.com 会被转至长沙镜像仓库,国外转至法国镜像仓库。这个功能是通过 **DNS 解析不同地区用户的 IP 地址**实现的。
+
+# 2. 为何不直接全同步镜像仓库
+
+前期我们采用了 "全同步" 的方案,所有的镜像一提交至长沙本地仓库,立即会向法国复制,但存在以下问题:
+- 带宽不够。延时高、丢包率高,有时会影响员工上网办公
+- 并非所有的镜像在生产上都需要用。这也会造成线上空间的浪费
+
+所以,现在镜像采用手工 "推送" 的方案,有需要的镜像,由开发或运维人员手动推送至线上。
+
+# 3. 镜像手工推送方法
+
+目前二台服务器专门用来推送镜像,这二台服务器通过 『代理』将镜像传至法国,速度一般在 2-3 MB/s 左右;
+这二台服务器虽都是走了代理,但是出口使用了不同的线路
+  - 192.168.1.142(密码 123456)是通过 `深圳办公内网` 出口
+  - 183.47.46.186(密码请咨询 @李杰 或 @董朝军)是通过 `深圳 10M 专线` 出口
+
+登陆以上任意一台服务器,使用 ~/pushToRemote.sh <镜像名称>  进行推送
+
+```sh
+./pushToRemote.sh registry.svicloud.com/powercloud/oms/server:V01R01B18-3043
+```

+ 10 - 0
05-常见问题处理FAQ/01-数据路径的固化与查看.md

@@ -0,0 +1,10 @@
+# 1. 数据路径的固化与查看
+
+## 1.1. 查看固化数据
+### 1.1.1. 点击升级按钮
+![升级](images/_升级_1531703145_12038.png)
+
+### 1.1.2. 在卷里添加映射的路径
+![固化路径](images/_固化路径_1531703266_30903.png)
+
+格式为:**物理机路径:容器路径**

+ 17 - 0
05-常见问题处理FAQ/01-新增应用商店与应用刷新.md

@@ -0,0 +1,17 @@
+# 1. 添加新的 "应用商店"
+
+![](images/_1531739094_18564.png)
+
+![](images/_1531739047_12023.png)
+
+![](images/_1531739158_5805.png)
+
+![开始部署吧](images/_1531739274_16438.png)
+
+![](images/_1531739351_6718.png)
+
+
+# 2. 看不到商店里的修改过的内容
+
+![点这个就对了](images/_1531739490_10138.png)
+

+ 35 - 0
05-常见问题处理FAQ/01-新增或修改网元需要修改哪些文件.md

@@ -0,0 +1,35 @@
+# 1. 新增网元或修改网元需要修改哪些文件
+
+## 1.1. 1、编写dockerFile文件
+请参考 https://git.svicloud.com/svicloud/cloud-standard/src/master/Dockerfile.tpl
+
+![dockerfile样例](images/_dockerfile_1531705160_476.png)
+
+## 1.2. 2、编写compose编排文件
+请参考 https://git.svicloud.com/svicloud/catalog-wisecloud.git/templates
+注意配置文件之间传递的变量名要保持一致
+### 1.2.1. 1、编写docker-compose.yml文件
+
+举例
+
+![docker-compose](images/_dockercomp_1531705467_25782.png)
+
+### 1.2.2. 2、编写rancher-compose.yml文件
+
+举例
+
+![rancher-compose](images/_ranchercom_1531705653_28282.png)
+
+### 1.2.3. 3、编写answer.txt文件
+
+举例
+
+![问答文件](images/_问答文件_1531705716_29348.png)
+
+### 1.2.4. 4、编写config.yml文件
+
+举例
+
+![config](images/_config_1531705775_6262.png)
+
+

+ 102 - 0
05-常见问题处理FAQ/01-新建项目需要的操作及注意事项.md

@@ -0,0 +1,102 @@
+
+# 1. 新建 Git 仓库
+> Git 仓库用于存放 `编排文件代码`,它是 **描述应用部署架构的描述文件**,实际的应用代码是在 SVN 上的
+
+登陆 http://git.svicloud.com/ 新建一个编排文件项目,名称以 "catalog-" 开头(方便统一标识)。
+
+![](images/_1531396358_12959.png)
+
+设置项目人员权限:
+
+![](images/_1531396444_9446.png)
+
+![](images/_1531396554_23826.png)
+
+# 2. 新建镜像仓库
+
+> "镜像仓库" 提供容器镜像存储、下载(pull)及上传(push)功能。项目相当于最 "顶级目录",如镜像:registry.svicloud.com/tools/nginx:v0.1 就放在 registry.svicloud.com 这个仓库的 tools 项目中。
+
+登陆 http://registry.svicloud.com/ 根据需要决定是否新建一个镜像仓库项目。
+如果在`新的项目中,可以直接使用旧项目的镜像`,就不需要新建仓库项目;反之,则需要。
+
+![](images/_1531395639_16726.png)
+
+
+> 关于 镜像认证:镜像仓库采用 **JWT**(Json Web Token) 方式进行认证,云平台中存储镜像仓库认证信息,以避免每次拉取镜像都需要输入密码。
+
+云平台设置镜像仓库认证信息菜单如下:
+![](images/_1531401687_29366.png)
+
+![](images/_1531401985_16755.png)
+
+
+
+
+# 3. Jenkins 中网元配置变化
+
+将下图中的 "powercloud"  与上一步新建的 『镜像仓库项目』 中的 "项目名" 保持一致; 
+
+![](images/_1531395549_27498.png)
+
+![](images/_1531396076_22229.png)
+
+所有支持的部署参数,见下图。二个可选的参数说明如下:
+  - --git-branch="dev"  如果此项目中的编排文件,使用了 `Git 中的非 master 分支`,而是使用如 "dev"、"test" 之类的分支,需要指明分支名称。
+  - --compose_version=1  除了使用 --git-branch 来控制版本,编排文件自身也可以有 **多个不同的应用编排版本**(通常为 0 ,即只有一个编排版本,就不需要带上此参数),如果非 0,就要带上了。
+
+![](images/_1531399174_4005.png)
+
+![部署脚本所支持的所有参数](images/_1531398773_23987.png)
+
+# 4. 部署脚本的变化 
+
+部署文件负责将容器部署至指定的环境中,部署脚本主要功能为:
+  1. 从 Git 项目中拉取相对应的编排文件代码
+  2. 连接云平台,使用云平台提供的接口,将应用部署至对应的云平台环境中
+
+> 注意:上一步中调用到了 192.168.100.19 服务器上的 /opt/tools/deploy_latest.sh 这个部署脚本,如果是新项目,需做少量修改并另存为新的脚本,如 wms 项目的部署文件保存为 deploy_wms_latest.sh。
+如不熟悉此脚本,请联系管理员协助进行此操作。同时上一步的 "Exec command" 中,脚本名也需要修改。
+
+![](images/_1531397592_26041.png)
+
+
+# 5. 云平台新建环境
+
+![](images/_1531400932_17857.png)
+
+![](images/_1531400986_13256.png)
+
+![](images/_1531401082_24637.png)
+
+> 第 ① 处,请务必使用尽量短、简单的名称,不要带特殊字符,因为环境名会做为`外网域名`的一部分。 
+> 第 ② 处,使用 **Cattle** 做为默认的环境模板。
+> 第 ③ 处,如果此环境需要添加其它用户,可以添加用户并授予相应的权限(默认 admin 对所有环境有管理权限)。
+
+# 6. 增加 powerdns 基础服务
+云平台默认是没有**外网域名**的,只有**内网域名**。需要添加基础服务  `powerdns-external-dns` 
+
+![](images/_1531402563_6576.png)
+
+![](images/_1531402598_32460.png)
+
+![](images/_1531402632_5236.png)
+
+![](images/_1531402653_6451.png)
+
+![](images/_1531402700_15295.png)
+
+  ① :http://console.svicloud.com:8100/api/v1
+  ② :AKIAITPARJW7F4MWKSEA
+  ③ :svi.pub
+  ④ :299
+  ⑤ :启动......别着急,还没完 :(,继续向下看,我们还要将 PowerDNS 的镜像修改为我们自己做的镜像
+
+![](images/_1531402988_31730.png)
+
+![](images/_1531403015_21831.png)
+
+镜像 registry.svicloud.com/tools/rancher/external-dns:v1.0 修复了好多 BUG,官方的只支持 AWS 上的 Router53 服务!:)
+
+![](images/_1531403154_1835.png)
+
+

+ 37 - 0
05-常见问题处理FAQ/01-日志路径及查看方法.md

@@ -0,0 +1,37 @@
+
+# 1. 查看业务启动日志
+## 1.1. 云平台查看
+
+直接在云平台容器下拉菜单中,找到 "查看日志" ,打开即可查看启动日志。注意这里只能看启动日志,并非业务运行日志。
+![](images/_1531735268_3393.png)
+
+## 1.2. 到主机上查看
+  - 复制容器 ID
+
+![点击进行容器详细信息](images/_1531735695_25054.png)
+
+![点击复制容器 ID](images/_1531735764_2592.png)
+
+  - 找到该容器运行的主机,见上图 "主机" 列
+  - 点击主机名,可看到其 IP
+
+![](images/_1531735511_4907.png)
+
+  - 使用 xShell 登陆该服务器
+  - 运行  docker logs -f <已复制的容器 ID> 命令查看指定容器的日志,如:
+
+```sh
+docker logs -f 4ae6b170ef46e3730672bca495cb754a76305f8503fbed49a0db98ae377cd522
+```
+
+# 2. 查看业务运行日志
+  - 找到业务运行的容器(方法同上)
+  - 登陆进容器并查看
+  
+```sh
+# login to the container
+docker exec -it 4ae6b170ef46e3730672bca495cb754a76305f8503fbed49a0db98ae377cd522 bash
+
+# tailf the detail app log
+tail -f /opt/powercloud/aaa/aaa.log
+```

+ 48 - 0
05-常见问题处理FAQ/01-服务无法启动不断重启调试.md

@@ -0,0 +1,48 @@
+
+# 1. 服务无法启动后不断重启应该如何调试
+
+## 1.1. 现象
+### 1.1.1. 容器状态不断变为initializing,又变成Running
+![服务重启状态](images/_服务重启状态_1531390071_9043.png)
+
+### 1.1.2. 日志中记录了很多重启的记录
+![重启日志](images/_重启日志_1531390319_9272.png)
+
+## 1.2. 处理方法
+### 1.2.1. 启动 bash 模式
+由于容器在不断重启,无法看容器里的详细错误,可以让容器直接不启动应用而直接进入 "bash" 模式。 
+
+![点击升级按钮](images/_点击升级按钮_1531390639_26587.png)
+
+点击 "升级按钮",在命令中输入bash,容器启动后只执行该命令
+
+![输入bash命令](images/_输入bash命令_1531390788_15573.png)
+
+### 1.2.2. 去掉健康检查
+进入健康检查标签,类型选择  "无",然后点击升级
+![去掉健康检查](images/_去掉健康检查_1531390960_11608.png)
+
+等状态由Upgrading变为Upgraded
+![升级中](images/_升级中_1531391122_28584.png)
+
+如果加了bash都还是不断重启,可以先克隆一个服务后再按上面的步骤加bash。
+> 注意:Clone 后的服务名,不能与原服务名相同
+
+![克隆服务](images/_克隆服务_1531397770_30655.png)
+
+### 1.2.3. 查看容器日志
+点击日志按钮
+![点击查看日志](images/_点击查看日志_1531396668_1697.png)
+查看日志错误信息
+![查看日志错误信息](images/_查看日志错误信息_1531396693_7083.png)
+
+### 1.2.4. 进入容器调试
+点击执行命令行
+![点击执行命令行](images/_点击执行命令行_1531396857_13214.png)
+
+根据dockerfile文件执行CMD命令,结合日志查看是哪步出错
+根据各业务服务自己的日志信息调试
+
+
+### 1.2.5. 关闭 bash 模式
+参照 1.2.1,将 bash 命令去掉,升级即可。

+ 14 - 0
05-常见问题处理FAQ/01-查看当前的容器镜像版本号.md

@@ -0,0 +1,14 @@
+# 1. 查看当前的容器镜像版本号
+
+容器镜像由部分组成:镜像地址、镜像版本,中间使用『`冒号`』分隔。其中 `镜像版本` 由 `网元版本`-`SVN Build 号` 组成,如 `registry.svicloud.com/powercloud/ems/server`:`V01R01B03-1899` 
+
+可以使用如下几种方式查看镜像:
+## 1.1. 方法一:Jenkins 中查看镜像版本号
+
+打开 Jenkins 中"控制台输出",找到如下日志,`V01R01B03-1899` 即是镜像号
+![](images/_1526263181_17049.png)
+ 
+
+## 1.2. 方法三:在已运行的 OS 中通过查看应用生成
+![](images/_1526262920_14637.png)
+  

+ 9 - 0
05-常见问题处理FAQ/02-如何合并分支,什么时候合并.md

@@ -0,0 +1,9 @@
+
+现在分支开发后,需要注意,如何把这些修改合并至 master 上去,什么时候合等。
+
+添加参数,要在 Git 中添加以下几个位置后,再刷新应用商店生效:
+
+  1. rancher-compose 中 增加 question 段,此目的是让应用商店中有这些默认值 ,也可以按需修改
+  2. docker-compose 中,要引入上一个 question 中的 变量​,如果不引入就不会生效
+  3. answer.txt 文件。这个文件提供自动化部署默认值。
+

+ 11 - 0
05-常见问题处理FAQ/02-如何将配置文件变量动态化.md

@@ -0,0 +1,11 @@
+
+# 1. 修改 rancher-compose
+
+  1. rancher-compose 中 增加 question 段,此目的是让应用商店中有这些默认值 ,也可以按需修改
+  2. docker-compose 中,要引入上一个 question 中的 变量​,如果不引入就不会生效
+  3. answer.txt 文件。这个文件提供自动化部署默认值。
+
+# 2. 修改 docker-compose 
+
+
+# 3. 刷新应用商店 

+ 9 - 0
05-常见问题处理FAQ/02-新部署应用时出错的处理.md

@@ -0,0 +1,9 @@
+
+  - 错误场景:新建栈时会出现红色报错;只要栈不删除,此错误一直以醒目的红色字体存在
+  - 错误提示: Image is required when selectorContainer is not passed in
+  - 解决方法:
+此问题是由于 rancher-compose 中指定的 『services』 和 docker-compose 中指定的 『services』不一致导致。详见:https://github.com/rancher/rancher/issues/5917
+
+  1. 检查  rancher-compose 中的 services,并和 docker-compose 中的 services 进行比较
+  2. 90% 是由于 rancher-compose 中的 `services` 未更新造成的,修改以适配 docker-compose
+  3. 提交 Git,并**刷新应用商店**,**删除应用并重新部署**,错误消失

+ 10 - 0
05-常见问题处理FAQ/02-服务出现端口冲突处理.md

@@ -0,0 +1,10 @@
+# 1. 现象
+
+![](images/_1531902991_7681.png)
+
+# 2. 处理方法
+
+
+![](images/_1531903106_19261.png)
+
+

+ 10 - 0
05-常见问题处理FAQ/02-软件包是如何成为镜像的.md

@@ -0,0 +1,10 @@
+# 1. 软件包里面的内容
+
+
+
+# 2. build 镜像过程
+
+
+
+
+## 2.1. push