rxysg

一.简介

腾讯蓝鲸智云,简称蓝鲸,是腾讯互动娱乐事业群(Interactive Entertainment Group,简称 IEG)自研自用的一套用于构建企业研发运营一体化体系的 PaaS 开发框架。安装参照蓝鲸平台5.1.2.9社区版单机部署这篇文档。

蓝鲸平台有多个组件组成,可以根据需求进行安装,默认必装为PAAS(管理权限和开发平台)、配置平台(cmdb)、节点管理(管理操作客户端)。这3块组成基础的资源调用,提供数据库、机器信息、CPU内存等基础资源,后续可以部署其它的模块使用对应功能。

版本:社区版(部分组件开源)、商业版
官网:https://bk.tencent.com/index/
文档地址:https://bk.tencent.com/docs/document/5.1/20/647
官方解答Q群:495299374
解答时间:周1-周5,9:00-17:00

结构图

解决的问题

1.最初记录现有的主机信息,上面部署的服务、域名对应的负载均衡、负载均衡对应哪些主机。这里体现出2个需求,一个是每个资源它自身的信息,另一个是不同资源的关联信息。

蓝鲸中的配置平台的可以解决这个问题,形成关联图。可以手工录入信息,也可以搭配python脚本去更新关联图和资源信息,达到事实更新的目的。

2.在运维过程中需要编写大量脚本,例如【Mysql定期备份】、【定期ECS快照】、【定期磁盘清理】等等脚本,这些会运行在不同机器。当脚本数量繁多时,很难记住都在哪些机器放了这些脚本,看他们的执行情况也需要挨个登陆查看。

蓝鲸中的作业平台可以进行很好的脚本管理,可以将要执行的脚本进行归纳存放(有版本记录类似git),定期执行或立即执行,执行后会有记录和执行记录,日志可以进行关键字搜索。

3.工单系统,运维不仅要对外部做出反应,更多是内部其它岗位的需求,例如添加权限、配置服务、调整配置文件等等,这就需要内部工单系统。

这个还包含知识库录入,将文档进行录入加标签,后续进行快速方便的查询解决方法

4.其它应用
PAAS平台带有开发框架,可以自行开发应用,也可在商店下载其它开发者编写的模块,例如风险检测、checklist、ci/cd、代码托管、镜像管理等等。

特性

优势:
1.模块化,可以根据自己的需要进行安装

2.可开发,依托框架和magicbox,可以快速简单的开发出自己需要的模块应用,进行图形操作。避免重头再开发,浪费精力和时间

3.开放的社区,有很多人写的模块会免费放到应用市场里,基本你想用的功能全都有了

4.售后,在群中进行问答会快速回复,在正常工作时间里多名客服都会在线解决

5.文档齐全,包括迁移、重启、扩增节点、一些调试都会有详细文档

6.如果只使用5.1.29版本资源消耗并不太高,4c8g可以稳定运行

7.分为企业版和社区版,社区版为免费使用,部分组件是开源的可以自行进行二次开发

8.相比其它开源产品,腾讯的团队明显更庞大,在使用中产品遇到的问题会更少

缺点:
1.社区版依然存在不少的问题,虽然有客户解答,但遇到了阻断性BUG(功能缺陷)不会进行修复,而是放到最新版本上去修复,当前6.x最新

2.基本不能更新,目前就5.1.29版本使用基本没问题,重启也不会大面积组件瘫痪,6.x版本重启可能就再也起不来了

3.部署安装困难,除了5.1.29版本,最新的6.x版本部署需要3台4c16g的机器,系统必须7.6或往上,即使这样安装也80%几率可能安装失败,某个组件需要调整

4.5.1.29版本的大部分API无法使用,只能自己从修改数据库进行数据录入

5.即使是旧版的5.1.29稳定版,组件依然会很多,像cmdb自身就有redis、mongodb、zookeeper,维护会相对麻烦

6.社区版存在是为了企业版做小白鼠实验,所以别妄想用新版本,后患无穷,只用稳定版即可

7.目前5.1.29版本是最新的稳定版,更老的稳定版已经不开放下载,所以这里复刻了一套这个版本的包和对应文档,防止后续也关闭通道

8.部署了就不能去更换ip迁移了,问了官方客服说需要修改的部分非常多,只能ip不变的进行迁移。好在平台里大部分资源都可以导出excel再导入

9.开源版本组件单独部署是没法使用的,因为都缺少登陆验证模块,所以没法多用户,只能admin默认的操作

细节和注意事项:
1.最好只部署5.1.29这个稳定版

2.导出好对应的文档https://bk.tencent.com/docs/document/5.1/20/647 ,下载对应的安装包和各种插件增强包,防止未来被下架

3.每次操作模块时,先进行业务选项的切换,默认是【蓝鲸】这个业务

4.在操作时发现找不到这个业务,要先在CMDB中将【当前账号】添加到业务的【运维】角色中

二.PAAS使用

蓝鲸的PAAS

具体文档:https://bk.tencent.com/docs/document/5.1/1/1

PAAS的作用:
1.它是进入蓝鲸体系的第一个产品,提供了通用的基础服务,如登录认证、消息通知、其他产品的快捷入口(工作台)、获取更多产品的应用市场等

2.提供了很多的 “SaaS 开发者服务”,让开发者可以简单、快速地创建、部署和管理应用,它提供了完善的前后台开发框架、API 网关(ESB)、调度引擎、公共组件等模块,帮助开发者快速、低成本、免运维地构建支撑工具和运营系统。PaaS 平台为一个应用从创建到部署,再到后续的维护管理提供了完善的自助化和自动化服务,如日志查询、监控告警、运营数据等,从而使开发者可以将全部精力投入到应用的开发之中。

3.提供了用户管理(含角色管理)、服务器基本信息维护、第三方服务可视化管理、API 权限控制等功能,更好地维护和管理平台的可用性。

用户管理

1.从管理员右上角的【用户管理】进入系统

2.可以创建一个用户后,先导出EXCEL,然后批量编辑添加账号,再导入进行达到批量创建用户的目的

3.工作台为当前PAAS这个界面,【开发者中心】是用来编写saas应用的,在蓝鲸体系中,应用这个平台的可能是几十或上百人,所以有人会单独去做开发者,只开发这些应用。

应用

1.安装新的应用可以点击【S-mart应用】,从应用商店下载包并上传安装,如果有的应用例如打开【节点管理】显示404或者错误,可以把应用重装,数据都是存在数据库不会丢失。

2.添加外链应用,将常用的zabbix、elk等链接加进去,会很方便查看。进入http://paas.bk.shop/admin/

普通链接”将会显示在面板的“常用链接”。“SaaS 链接”将会显示在工作面板中,所以需要上传一个 logo。

自行开发应用

1.创建一个应用,比如写一个查询gitlab每月每个用户提交代码行数显示的应用,他要有个前端界面,可以筛选查看过滤某个用户的信息。

2.用MajicBox可以画出前端界面来,再查看新手指南进行后端的开发,蓝鲸提供了开发框架,按照提示填写数据库等信息,后续再发布上去让其运行即可。这里开发语言都是python,本地可单独运行即可,蓝鲸会进行启动,并在Nginx反向代理来提供访问页面,像其它saas应用一样。

3.具体实例后续进行填充

三.CMDB

需求说明

现有资源:
1.阿里云上的ECS、RDS、高防等产品
2.阿里云上的域名、SSL证书
3.ECS中部署了各种服务,zk、kafka、tomcat、nginx等等
4.阿里云SLB上配置了反向代理

记录表:
1.服务清单,记录每台ECS上部署了哪些服务。ECS的名称、ip、部署的服务、服务版本、服务位置、启动端口
2.服务发布表,jenkins上的job对应的服务和机器。jenkins-job名、部署的机器IP、部署的位置
3.域名对应表。域名、对应的负载均衡、负载均衡对应的IP

这些资源如果是万年不变的还好,但业务是会随时更改的,会有新的应用、新加入的机器、新的配置。所以需要一套可以自动提取这些信息,并展示出关联图的CMDB。

针对蓝鲸的配置如下:
1.创建业务,根据现有的环境进行业务区分

2.创建业务拓扑,将机器分类,例如订单系统有10台机器,将其加入到订单模块中,方便查看

3.根据实例的字段建立模型,例如服务器需要cpu等字段,而域名只需要域名信息+解析地址2个字段即可

4.创建模型关联信息,用于形成关联图。例如服务器前面是SLB/域名,后面是部署的服务这样

5.进行手动添加实验,后续编写脚本进行自动更新数据

6.编写搭配脚本,从CMDB中取数据进行其它服务的联动更新

添加业务

1.指定好业务名称和运维人员

其它人员对应的权限是在权限控制中进行的配置,默认【运维人员】可以做任何配置,其它【任何人员】都只能去查看被分配了权限的业务不能做其它选项,这块的权限配置也比较鸡肋,基本不会让其它人员去做配置的。

2.配置业务拓扑,业务资源-》业务拓扑-》选择新建的业务-》新建集群。在蓝鲸中集群+模块的方式展现这台机器属于哪里,例如【运维集群】下有监控模块、CI/CD发布模块、知识库模块、工单模块,基本上一个模块部署着一套进程,像监控模块就部署着zabbix

最终效果如下,按照具体业务划分

添加模型

1.模型管理-》模型中可以看到目前内置的模型,可以修改也可以新建模型

例如一台主机需要的不仅仅是这内置的字段,根据个人需求还需要内核版本、所属的阿里云VPC、阿里云上配置的名称等等字段

2.模型的新建主要是字段的区分,例如对于数据库这个分组中,不同的数据库字段不一样,像Redis有是否开启aof、rdb持久化,而Mysql有允许最大连接数、建立三次握手的超时时间等参数的配置

3.字段的类型可以选择多种,根据需求进行搭配,像版本比较固定的情况下可以设置为【枚举】,设立几个版本,后续再筛选时可以固定选择哪些redis是3.2版本的,而不是进行字符串搜索

4.添加模型间的关联关系,Redis等数据库都是部署在主机中的,所以这里添加关系为源模型也就是上层是主机、下层是Redis、类型为关联、约束为N-N

这里为了方便均选择上联,也就是在【逻辑图】中看到的层级关系,域名是负载均衡的上联,负载均衡是主机的上联,方便理清逻辑。源-目标约束有1-1、1-N、N-N,代表着上下联能选择几个实例绑定。例如域名和负载均衡就是1-1的关系,因为域名这里一般只填写一个IP地址,而负载均衡到主机就是1-N,下方可以多个主机。但为了方便这里都写N-N,上下联都不做限制了。

5.效验这里根据需求进行配置,是否要求某个字段是全局唯一的

6.字段分组是根据需求对配置的字段进行分组调整,影响的是在查看【实例】时,字段的显示

这样就方便查看了,尤其是参数比较多的情况下

添加实例

1.从首页进入,选择模型进行【实例】添加

2.填入对应的值即可创建

3.选择刚才创建的实例,进行关联的添加,后续就可以进行正常的关联信息查看了

在应用关联较为复杂时,可以屏蔽某些关联,也可以查看树形图。点选后可以查看具体某个实例的详细信息。也可以点击那个实例,查看它后方是否还有关联图,最终可以形成一条线的关联,从域名一直到部署的机器与这台机器部署的应用。

添加主机

1.主机的添加在页面上只能通过【模板导入】和【节点导入】,一般是在【节点管理】中,对服务进行导入,访问http://paas.bk.shop/o/bk_nodeman/#/

2.随后在CMDB-》业务资源-》业务主机中,选择对应业务可以看到导入的主机信息了,会默认收集系统自带的cpu、内存等基本信息。这里只会同步一次信息到CMDB中,节点管理中删除机器,CMDB中还会留存。

3.默认机器会在业务的【空闲机】中存在,需要在【业务拓扑】中将机器转移到对应的模块中,可以一台机器加入多个模块

4.也可以讲机器加入到资源池,将不属于任何业务,可以在基础资源-》主机中查看到【未分配的主机】,可以将其分配到其它业务中

四.CMDB信息同步

1.脚本选用python-3.6编写,这里主要是从阿里云取数据,例如SLB的信息、域名信息、RDS信息等等。如果你是用其它云或本地环境,也可以参考对应结构进行更改,项目地址:https://gitee.com/rxys/bkms

2.将项目中lib文件夹下的文件都复制过去,里面是相关类和配置文件
git clone https://gitee.com/rxys/bkms
mv bkms/lib /usr/local/lib

3.登陆阿里云,创建一个秘钥

4.在paas平台首页的开发者中心-》应用中心-》我的应用-》创建应用,里面内容随意填写,主要用于API的使用

5.创建后复制应用TOKEN

6.访问通道管理http://paas.bk.shop/admin/bkcore/functioncontroller/ ,将刚才创建的应用名称加入其中,用于跳过API调用时的验证

这里是w17

当前使用的5.1.29社区版API无法使用,需要读取cmdb使用的mongodb数据库的信息,进行数据存储,在CMDB服务器执行获取账号密码。
grep "MONGODB" /data/install/globals.env

7.修改配置文件
vim /usr/local/lib/script_conf.cfg

[aliyun]
aliyun_user_ak = LTAasdasdasxasdsasx #阿里云的ak
aliyun_user_sk = AEasdasdxasxxxxsadadasd #阿里云的sk
region_id = cn-beijing #产品所在地区
ddos_id = ddoscoo-cn-stsds343dasd #DDOS高防产品的实例id
waf_id = waf-cn-mpxasdsd3rdas #WAF产品的实例id

[bk]
bk_url = http://paas.bk.shop #paas的地址
bk_app_code = w17 #应用名称
bk_app_secret = 9ds0608-9bs0-48bc-9d34-37dsdsax #应用TOKEN
bk_username = admin #用户名
data_ip = 10.0.1.1 #mongodb所在地址
data_port = 27017 #mongodb所在端口
data_user = root #mongodb账号
data_pass = asdasdsadsada #mongodb密码
allow_cmdb_sync = bk_slb,bk_slb_strategy,bk_waf,bk_ddos,bk_domain,bk_edas,bk_redis,bk_rds,bk_drds #要进行更新的模型

[bk_mod_field] #这里是模型id和对应的关联字段id
host = bk_aliyun_id,bk_host_innerip
bk_slb = bk_ip

8.安装模块
pip3.6 install -r bkms/lib/mypackages.txt

9.下载并导入对应模型和创建关联关系

网络分组:
bk_domain,关联DDOS、负载均衡、主机
bk_slb,关联主机、转发策略
bk_ddos,关联WEB防火墙、主机
bk_slb_strategy,关联主机
bk_waf,关联负载均衡、主机

数据分组:
bk_rds
bk_drds
bk_redis

应用分组:
bk_edas

10.运行脚本即可更新,有报错会输出对应的报错信息
bkms/cmdb/cmdb-aliyun-update.py

11.对于云主机ECS上运行了哪些服务是从标准化入手,将服务均部署在固定几个目录下。这样读取目录后可以获取很多信息,针对不同具体服务,例如Mysql的配置信息,要单独进行配置读取。

目录结构:

用途 目录位置 目录命名
公司业务应用Tomcat、Jar包等 /home/admin tomcat_user_8080
公共服务Nginx、Zabbix、Mysql等 /opt mysql_order_cfg_3309
软件Node、Maven、Jdk等 /usr/local jdk_1.8.0

12.修改同步脚本,改成当前机器的地址,进行监听
vim bkms/cmdb/cmdb-master.py
vim bkms/cmdb/cmdb-agent.py

13.本地运行master,其它服务器运行agent,进行信息同步

分类:

技术点:

相关文章:

  • 2021-11-26
  • 2021-07-27
  • 2021-11-11
  • 2022-02-21
  • 2021-05-12
  • 2021-08-24
  • 2021-08-09
  • 2022-01-08
猜你喜欢
  • 2022-12-23
  • 2021-09-29
  • 2022-12-23
  • 2021-12-31
  • 2021-10-31
  • 2021-05-23
  • 2021-06-18
相关资源
相似解决方案