多云纳管——如何使用蓝鲸实现跨云主机管理

蓝鲸管控平台和节点管理使用

Posted by 刘辉 on December 16, 2018

在上一篇文章《授人以渔——为什么选择蓝鲸来构建企业的自动化运维体系》中,我们介绍过蓝鲸的设计思想和体系架构。本文主要是进一步介绍蓝鲸的管控平台,并详细演示如何一步一步实现跨云主机的管理。

管控平台介绍

蓝鲸管控平台,是整个蓝鲸平台的底层管控系统,是上层运维服务体系与底层 IaaS 的连接器,它为蓝鲸其他平台提供了人机交互的通道与能力。蓝鲸管控平台主要提供了三种类型的服务能力:文件分发传输能力、命令实时执行与反馈的能力、大数据采集与传输的能力。在整个蓝鲸体系中,唯独蓝鲸管控平台没有直面用户,但蓝鲸管控平台在蓝鲸体系中却是不可或缺的。

蓝鲸管控平台是典型的两层分布式 C/S 结构,主要包含智能 Agent,提供各种服务的 Server,以及 zookeeper、redis、MySQL 等周边保障模块。其中Agent 是部署在业务机器上的程序,每台业务机器理论上只可以部署一个;其他模块部署无具体要求,用户可以单独部署,也可以混合部署。

蓝鲸管控平台同时也支持Proxy模式,当我们需要管控私有云或者公有云中隔离的网络区域的服务器时,可以通过一级或者多级proxy级联的方式进行纳管和统一的驱动。这样使得蓝鲸管控平台海量、跨云、全球节点管控的能力。Proxy模式架构图如下图所示:

跨云管理的条件和流程

虽然蓝鲸平台的设计思想和理念,天然就具备混合云纳管的能力,但实际配置和适配不同云厂商的产品时,还是有不少坑和要注意的地方。下面我们就来看看蓝鲸智云管控平台如何一步步实现跨云主机管理的。先看下官方的一些配置要求: http://docs.bk.tencent.com/bkce_install_guide/setup/get_ready.html#sshnopass 蓝鲸安全指南-环境准备-配置参数 根据官方要求,要实现跨云管理,必须满足以下三个条件: 条件1:管理公有云主机时,在服务器端GSE需要配置外网IP; 条件2:管理公有云主机,需以Proxy的方式进行管理,同一个云区域有多个主机时,其他主机可连接Proxy在与蓝鲸服务端进行通信,Proxy或节点在安装Agent时有多个服务需要互相通信; 条件3:为了保证蓝鲸平台能正常管理公有云主机,需要Proxy、P-Agent节点、GSE之间个别端口能互相访问。

必备条件总结

  1. GSE所在机器必须有外网IP;
  2. 通过节点管理对公有云主机实现自动安装Agent时,Agent需要与Nginx服务器通信,相应的Nginx服务器也需要有外网IP;
  3. 公有云主机需要与GSE服务器个别端口互相通信,保证蓝鲸平台能实时获取公有云主机的数据,并能通过蓝鲸平台批量下发任务;
  4. 同一网段的公有云区域必须有一台云主机有外网IP。

根据蓝鲸架构设计,GSE和Nginx服务为了保证高可用,会部署到多台服务器,这样就需要多个外网IP,考虑到企业实际环境外网IP地址有限,我们可以采取使用一个外网IP地址通过端口映射的方式来解决外网地址短缺的问题。

根据要求,蓝鲸智云实现跨云管理的大致流程图如下:

准备阶段

蓝鲸平台服务端

  • 配置GSE_WAN_IP 这里有两种情况,一种是GSE所在机器不能访问外网,则需要在 GSE所在机器配置 GSE_WAN_IP添加外网IP;一种是GSE所在机器能访问外网, 则配置export AUTO_GET_WANIP=1 。 因我们测试的环境中GSE所在机器不能访问外网,所以需在GSE_WAN_IP添加外网IP。
1
2
3
4
5
ssh gse主机
cd /data/install
vi globals.env
export GSE_WAN_IP=(*.*.*.*)
export NGINX_WAN_IP=(*.*.*.*)
  • 配置nginx服务 Nginx主要为Proxy提供下载服务,因外网IP未配置到Nginx服务器上,所以需要修改Nginx配置文件,以保证通过外网IP能使用下载服务。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ssh nginx主机
cd /data/bkce/etc/nginx
vi miniweb.conf 
server {
    listen 80;
    server_name #默认内网IP# ;
    server_name #外网IP# ;        #添加外网IP
    root /data/bkce/miniweb;

    location / {
        index index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ /\.ht {
        deny  all;
    }

    access_log  /data/bkce/logs/nginx/www_access.log;
}

cd /data/install
./bkcec stop nginx
./bkcec start nginx
./bkcec status nginx

公有云控制台端

  • 配置网络访问控制策略 网络配置策略要根据实际环境情况来进行配置,按照我们现有的环境,需配置的地方有以下:
  • APPO—-Proxy(公有云主机) 在公有云控制台上开放入方向22端口 以腾讯云为例,可以放通自定义端口,也可以将所有端口放通。

  • GSE—Proxy(公有云主机) 在公有云控制台上开放入方向48533、58625、58930、10020、10030等端口。 上一条安全组已放通所有端口,这里,无需再增加,如有必要可自定义添加。
  • Proxy(公有云主机)—P-Agent(公有云主机) 在公有云控制台上开放如下互访端口

公有云平台内网策略一般都是默认全放通,如访问策略粒度较细,可单独开放。

内网防火墙端

  • Proxy(公有云主机)—-Nginx 在内网防火墙上开放入方向80(http服务)端口,并指定源地址及目的地址 这里我们将所有端口开放,源地址设置为any,目的地址设置为蓝鲸Nginx内网IP。
  • Proxy(公有云主机)—GSE 在内网防火墙上开放入方向48533、58625、58930、10020、10030等端口,并指定源地址及目的地址,上一条策略已开放所有端口,这里需要注意的是需将GSE内网IP加入到目的地址池。
  • 配置外网IP端口映射 上面必备条件总结里我们提到,实际环境中只有一个外网IP供多个业务使用,无过多外网IP单独供蓝鲸平台使用,我们使用外网IP端口映射的方式来解决该问题。

通过第一步可以看到我们只需要配置Proxy去访问Nginx、GSE之间的端口。

需要注意的是因80端口给别的业务使用了,实际环境采用8082端口进行映射。

配置节点管理

以上配置完成后,就可以进行接管工作了,具体步骤如下:

  1. 配置节点管理 找到节点管理-Nginx Server,添加内网IP地址和外网IP地址,上面提到因80端口被占用,在映射时使用的是8082端口,这里需填写正确。

  2. 添加Proxy 进入节点管理-安装Agent-云区域管理-新增云区域,这里增加了一个公有云区域。 选择公有云区域,点击添加Proxy,输入相关信息后进行安装,这里内网IP和外网IP需根据Proxy实际IP进行填写,外网IP与蓝鲸服务端进行通信,内网IP与P-Agent进行通信,在安装Agent的过程中,会将这两个IP地址写入到配置文件。 在测试的过程中发现一个云区域只能增加2个Proxy,如果环境中有多个网段,需要增加多个Proxy时,建议单独创建不同的云区域,一般情况下,在创建云区域时,建议一个互通网段创建一个云区域,这样就不存在刚才的问题了。

  3. 添加P-Agent Proxy添加完成后,可以继续为云区域添加P-Agent,同样在节点管理选择公有云区域-点击添加P-Agent,可以看到只需要输入一个内网IP。

安装成功后如下图所示:

总结

通过以上步骤,公有云主机会自动注册到蓝鲸CMDB,这样公有云主机就具备了蓝鲸平台所有的自动化能力了,比如文件分发、批量脚本执行、监控告警、故障自愈、日志检索、应用发布等等。 最后,为了更好的方便大家使用云区域,建议根据不同的场景进行规划,具体规划建议如下:

  • 主机分布在一个IP地址段,所有主机归类到直连区域;
  • 主机分布在多个IP地址段,多IP地址段路由互通,所有主机归类到直连区域;
  • 主机分布在多个IP地址段,多IP地址段路由不互通,与蓝鲸服务端在同一个地址段的主机归类到直连区域,其他地址段的主机归属到非直连区域,使用proxy的方式进行管理;
  • 主机分布在内网和公有云,公有云主机必须归属到非直连区域,使用proxy的方式进行管理。