蓝鲸维护说明

统一术语

  • INSTALL_PATH
    安装路径,默认为/data/bkce
  • CTRL_PATH
    安装维护脚本所在目录,默认为 /data/install
  • PKG_SRC_PATH
    组件原始包解压目录,默认为 /data/src
  • 中控机
    安装蓝鲸后台服务器中,选一台作为中控机,安装蓝鲸和运维蓝鲸,一般均从这台机器开始。
  • source utils.fc
    一些操作需要加载蓝鲸环境变量和函数后才能调用,此为cd $CTRL_PATH/ && source utils.fc的简写
  • bkcec <command> <module>
    若无特殊说明,含义是:cd $CTRL_PATH && ./bkcec <command> <module>

下面提到路径时,均以默认路径为例,请根据实际安装路径修改相关命令。

登陆指定服务器

一般维护操作时,均从中控机出发,跳转到其他模块服务器进行操作。

假设发现job模块启动失败,想登陆到job模块所在服务器查看相关日志:

source utils.fc

这个命令用来加载环境变量(/data/install/.env)和蓝鲸安装维护的函数(/data/install/.{rc,fc})。 文档中,凡是提到查看xx函数的地方,可以用以下方法找到:

  • source utils.fc; type 函数名,例如想看 initdata_rabbitmq 做了什么事情,请运行 type initdata_rabbitmq,返回的内容里可能也有没见过的函数调用,那继续使用type 函数名来查看
  • grep "函数名 *()" *.rc *.fc 通过过滤函数定义,来寻找位置
  • 编辑器内的搜索跳转。
ssh $JOB_IP

因为/data/install/config.env里通过解析install.config,生成了模块对应的IP,所以,我们可以直接用 $MODULE_IP 这样的方式来访问。MODULE,用install.config里模块名的大写形式进行替换。譬如 bkdata所在的IP为$BKDATA_IPcmdb所在IP为$CMDB_IP,依此类推。

也可以输入$符号后,用<tab>补全试试。

cd /data/bkce/logs/job

所有的组件日志均在$INSTALL_PATH/logs/$MODULE/ 目录下。

于是想看job相关的日志,登陆到Job服务器后,切换到cd /data/bkce/logs/job 目录即可看到所有job模块的日志。

查看日志

日志文件统一在 /data/bkce/logs/下,按模块名,组件名分目录存放。

SaaS较为特殊,在/data/bkce/paas_agent/apps/logs下,根据AppCode名分目录存放。

组件的启动停止

一般情况,可以在中控机用bkcec start/stop <module> <project>方式来整体启停进程,但了解每个组件的手动启停方式也有助于运维好蓝鲸。另外需要特别注意的是,开源组件里分布式架构的kafkazkconsul,这些尽量逐个启停。

下面分三类来介绍不同组件的启停命令

supervisor托管

supervisord和supervisorctl都会使用python虚拟环境(virtualenv)来单独安装隔离。每个模块对应的虚拟环境名称,可以在机器上输入workon命令查看。

特别注意的是:consul使用全局的/opt/py27/bin/supervisord/opt/py27/bin/supervisorctl

supervisor托管的分两级维度,module和project,project可以单独启停。

例如

./bkcec stop paas esb
./bkcec start paas esb

使用supervisor托管的模块如下:

  • bkdata/{monior,databus,dataapi}
  • paas_agent
  • open_paas (即paas)
  • fta (fta比较特殊,单独封装了/data/bkce/fta/fta/bin/fta.sh 启停脚本)
  • cmdb-server (cmdb的后台进程)
  • consul(使用全局supervisor)

bkdata/dataapi为例,单独启动dataapi的进程:

# 进入虚拟环境
workon dataapi

# 启动
supervisord -c /data/bkce/etc/supervisor-bkdata-dataapi.conf

#临时停止,但不退出supervisord
supervisorctl -c /data/bkce/etc/supervisor-bkdata-dataapi.conf stop all

# 完全退出,包括supervisord
supervisorctl -c /data/bkce/etc/supervisor-bkdata-dataapi.conf shutdown

其他模块依此类推,不再赘述。

GSE

gse组件分为gse后台,gse客户端,gse插件 分别对应三个不同的启停进程:

  • gse后台服务端:/data/bkce/gse/server/bin/gsectl [start|stop|restart] <module>
  • gse客户端(agent): `/usr/local/gse/agent/bin/gsectl [start|stop|restart]
  • gse插件进程(plugin):/usr/local/gse/plugins/bin/{stop,start,restart}.sh <module>

开源组件

Java

  • es: 切换到es用户执行 /data/bkce/service/es/bin/es.sh start
  • zk: /data/bkce/service/zk/bin/zk.sh start
  • kafka: /data/bkce/service/kafka/bin/kafka.sh start

Golang/C/C++

  • nginx: nginx 或者nginx -s reload
  • beanstalk: nohup beastalkd -l $LAN_IP -p $BEANSTALK_PORT &>/dev/null &
  • mysql: /data/bkce/service/mysql/bin/mysql.sh start
  • mongodb: /data/bkce/service/mongodb/bin/mongodb.sh start

erlang

  • rabbitmq: systemctl start rabbitmq-server

蓝鲸组件

  • license: /data/bkce/license/license/bin/license.sh start
  • job: /data/bkce/job/job/bin/job.sh start
  • saas-o/saas-t: 从/data/bkce/paas_agent/apps/Envs/*下遍历workon home,然后使用apps用户调用supervisord拉起进程。

第三方组件

  • bknetwork: /data/bkce/bknetwork/bknetwork/bin/nms.sh start >/dev/null 2>&1

磁盘清理

可能产生比较大数据量的目录有:

  • /data/bkce/logs
  • /data/bkce/public
  • /data/bkce/service

logs 目录可以按需设置自动清理N天前的日志。

public 目录一般不能手动删除,一般比较大的组件可能有

  • mysql数据库太大
  • kafka 数据
  • elasticsearch 数据

变更域名

  • 修改 globale.env 中的域名配置信息。
  • 修改 每台机器上的/etc/hosts 匹配上新的域名
  • 修改完成后按如下命令顺序执行:
./bkcec clean cron # V4.0版本及以前的需要执行,V4.1以后的无需执行

./bkcec sync common
echo fta bkdata job cmdb paas nginx | xargs -n 1 ./bkcec stop
echo fta bkdata job cmdb paas nginx | xargs -n 1 ./bkcec render
echo nginx paas cmdb job bkdata fta | xargs -n 1 ./bkcec start

./bkcec install cron # V4.0版本及以前的需要执行,V4.1以后的无需执行

如果有安装SaaS,到开发者中心-Smart应用-已上线的SaaS操作栏里的部署按钮,重新一键部署SaaS

变更 DEFAULT_HTTP_PORT 端口

安装好后的蓝鲸访问端口默认是80,如果安装成功后想修改它,需要按以下步骤:

  1. 修改 ports.env 文件里的 DEFAULT_HTTP_PORT 值为新的端口
  2. 同步配置到其他机器:./bkcec sync common
  3. 渲染涉及到的进程的模块文件

     ./bkcec render $module
    

知道如何操作以及为什么需要这样操作:

修改DEFAULT_HTTP_PORT后,PAAS_HTTP_PORT CMDB_HTTP_PORT JOB_HTTP_PORT,这些端口都发生了变化。 我们需要了解哪些配置文件模板引用了他们。所以,执行命令:

grep -lrE "(JOB|CMDB|PAAS|DEFAULT)_HTTP_PORT" /data/src/*/support-files/

发现,涉及的文件所在模块为:bkdata,cmdb,fta,gse,job,miniweb,open_paas,paas_agent,nginx。所以这些文件均需要重新 render配置,然后重启模块生效。

以下模块需要render操作

echo cmdb job gse paas appo bkdata fta | xargs -n 1 ./bkcec render

appo(paas_agent)的配置需要一个特殊操作:

./bkcec initdata appo

nginx和miniweb较为特殊,需要以下命令:

./bkcec install nginx
./bkcec stop nginx
./bkcec start nginx

重启其余进程:

for module in cmdb job gse paas appo bkdata fta; do ./bkcec stop $module ; sleep 2; ./bkcec start $module ;done

更新cert

有时候 gse 和 license 所在服务器的mac地址发生了变化,此时证书需要重新从官网生成下载。 然后操作更新证书的步骤。

中控机上解压新的证书

cd /data/src/cert && rm -f *
tar -xvf /data/ssl_certificates.tar.gz -C /data/src/cert/

操作更新相关组件

source /data/install/utils.fc
for ip in ${ALL_IP[@]}; do
    _rsync -a $PKG_SRC_PATH/cert/ root@$ip:$PKG_SRC_PATH/cert/
    _rsync -a $PKG_SRC_PATH/cert/ root@$ip:$INSTALL_PATH/cert/
done

 for ip in ${JOB_IP[@]}; do
     rcmd root@$ip "gen_job_cert"
 done

./bkcec stop license
./bkcec start license
./bkcec stop job
./bkcec start job
./bkcec install gse 1
./bkcec stop gse
./bkcec start gse
./bkcec stop bkdata
./bkcec start bkdata
./bkcec stop fta
./bkcec start fta

proxy和agent的更新,需要把新的cert目录传到对应机器的路径:

  • agent: /usr/local/gse/agent/cert/
  • proxy: /usr/local/gse/proxy/cert/

然后重启进程:

  • agent和proxy均为:/usr/local/gse/agent/bin/gsectl restart

迁移服务

假设想将 bkdata 模块从目前混搭的服务器上,迁移到一台新机器,可以按如下步骤操作:

  • 停掉原来服务器上的bkdata进程./bkcec stop bkdata
  • 修改 install.config 文件,新增一行 $ip bkdata ip为待迁移的机器IP,删除原ip所在行的bkdata
  • 新机器配置好中控机的 ssh 免密登陆

除非特别指出,在中控机上依次执行以下命令,每一个命令成功后,再继续下一个:

# 同步install.config更改
./bkcec sync common

#  同步基础依赖 consul
./bkcec sync consul

# 同步 bkdata 模块
./bkcec sync bkdata

# 安装 consul
./bkcec install consul

# 安装 bkdata
./bkcec install bkdata

# 给新机器授予mysql权限
./bkcec initdata mysql

#  给新的bkdata补上初始化标记文件
ssh $BKDATA_IP 'touch /data/bkce/.dataapi_snaphost'

# 启动新的bkdata
./bkcec start bkdata

登陆到老的bkdata机器,将标记文件 /data/bkce/.installed_module 文件中的bkdata行删除:

sed -i '/bkdata/d' /data/bkce/.installed_module

健康检查

蓝鲸产品后台提供了健康检查的接口,用HTTP GET请求访问,接口地址和端口用变量表达:

cd /data/install && source utils.fc

# PAAS 注意URL末尾带上/
curl http://$PAAS_FQDN:$PAAS_HTTP_PORT/healthz/

# CMDB(beta),目前版本不够准确
curl http://$CMDB_IP:$CMDB_API_PORT/healthz

# JOB
curl http://$JOB_FQDN:$PAAS_HTTP_PORT/healthz

蓝鲸监控SaaS的监控检查接口,可以用浏览器直接访问:

http://$PAAS_FQDN:$PAAS_HTTP_PORT/o/bk_monitor/healthz/

机器重启后

  • 确认 /etc/resolv.conf 里第一个nameserver是 127.0.0.1option选项不能有rotate
  • 检查重启机器的crontab,是否有自动拉起进程的配置 crontab -l | grep process_watch,重启后的自动拉起主要靠crontab
  • 中控机上确认所有进程状态:./bkcec status all, 正常情况下应该都是正常拉起RUNNING状态,如果有EXIT的,则尝试手动拉起。手动拉起的具体方法参考组件的启动停止
  • 如果社区版所有机器同时重启,很大概率会有很多进程启动失败,因为不同机器上组件恢复的时间没法控制,导致依赖的组件还没启动起来,导致失败,连锁反应。所以这种情况,遵循和安装时的启动原则:

    1. 先启动db
    2. 启动依赖的其他开源组件及服务
    3. 启动蓝鲸产品
  • 如果已经部署过SaaS,那么手动拉起。

      ./bkcec start saas-o # 正式环境
      ./bkcec start saas-t # 测试环境
    
Copyright © 腾讯蓝鲸 2012-2018 all right reserved,powered by Gitbook最后修订日期: 2018-12-06

results matching ""

    No results matching ""