前言
腾讯蓝鲸智云, 简称蓝鲸, 是一套基于 PaaS 的技术解决方案, 提供了完善的前后台开发框架, 调度引擎, 公共组件等模块, 帮助业务的产品和技术人员快速构建低成本, 免运维的支撑工具和运营系统.
目前, 腾讯蓝鲸智云团队秉承着开放共赢的态度, 正逐渐开放其自主研发的一套具有多项探索式创新的体系 - 蓝鲸智云软件体系. 该套体系不仅提供了基础运维 (发布变更, 监控处理, 数值调整, 数据提取等) 的无人值守服务, 而且还给运维人员提供了解决方案(工具), 并随时调整, 避免重复性的操作服务. 而运维人员则可以做些 "用户体验优化" 和 "运营决策辅助" 等运维增值工作, 并且可以通过蓝鲸智云提供的集成平台, 低成本的学习 DevOps 技能, 进一步提升自己的能力, 加速转型. 此外, 这套体系还可以运行轻应用, 管理类, 及职能类应用, 是个全方位的运维, 管理平台.
腾讯蓝鲸智云, 运维领域的一张新名片, 正在多个层次, 多个领域崭露着头角, 逐渐释放着自身特有的价值, 引领着行业新标杆, 开创了运维体系 2.0 的新局面.
体系介绍
腾讯蓝鲸智云体系由平台级产品和通用 SaaS 服务组成, 平台包括管控平台, 配置平台, 作业平台, 数据平台, 容器管理平台, 挖掘平台, PaaS 平台, 移动平台等, 通用 SaaS 包括节点管理, 标准运维, 日志检索, 蓝鲸监控, 故障自愈等, 为各种云 (公有云, 私有云, 混合云) 的用户提供不同场景, 不同需求的一站式技术运营解决方案.
部署蓝鲸
开始安装蓝鲸社区版前, 需按以下文档指南, 做好准备工作.
获取安装包
蓝鲸社区版包含部署脚本, 产品软件和开源组件. 蓝鲸提供完整包与分包的下载通道, 请自行到下载地址按需获取. 新装环境及新用户建议下载完整包使用.
- # 下载地址: https://bk.tencent.com/download/
- # 下载完成后, 请核对 MD5 码.
硬件选择
对于蓝鲸部署所需的硬件配置选型, 并无定规. 蓝鲸由众多开源组件和自研组件构成. 开源组件的硬件选型可以参考相应的官方文档, 参见附录.
蓝鲸产品本身的建议配置如下:
- # PaaS: 2 核 4G
- # Cmdb: 2 核 2G
- # Job: 2 核 4G
- # Bkdata: 4 核 12G
- # fta: 1 核 2G
如果硬件资源富余, 可以一开始拆分搭建部署. 若硬件资源不足, 一开始可以混合搭建, 注意观测资源消耗情况, 可以适时增加机器, 迁移模块的方式来保证整体的可用性.
资源规划是一个复杂的, 动态的过程, 更像是一门艺术而不是科学.
这里给出的一个比较合理的初始配置, 基于以下考虑:
分布式模块达到高可用至少三个节点, 所以至少需要三个 OS(物理机或虚拟机均可)
Bkdata 是耗费资源最多的蓝鲸组件. 请分配到 4 核 16G 以上的机器.
若日志检索, 蓝鲸监控是主要使用场景, 请给 influxdb 和 Elasticsearch 模块更多的内存, 更好磁盘性能比如 SSD.
nginx 模块所在的机器需要有对外提供服务, 可访问的 IP. 这是蓝鲸平台的总入口.
如果需要有跨云管理需求, gse 部署的机器需要有跨云的网络条件.
根据以上考虑, 官方建议安装蓝鲸初始配置, 请满足:
机器数量 建议硬件最低配置 更优配置
3 4 核 12G 24 核 64G
4 4 核 10G 24 核 64G
5 4 核心 8G 12 核 32G
CentOS 系统设置
准备好硬件, 安装完原生 CentOS 系统后. 我们需要对初始系统做一些配置, 保证后续安装过程的顺畅, 和蓝鲸平台的运行. 注意: 所有待安装蓝鲸的机器均需要按以下清单检查和操作.
# 实际环境配置
IP Hostname 系统版本 内存, CPU
- 172.19.0.24 rbtnode1 CentOS7.2.1511 8c30G
- 172.19.0.23 paas-1 CentOS7.2.1511 8c30G
- 172.19.0.28 MongoDB-1 CentOS7.2.1511 8c30G
系统版本:
要求 CentOS-7.0 以上版本, 推荐 CentOS-7.5
初始化
关闭 SELinux 及默认防火墙(firewalld)
安装和运行蓝鲸时, 模块之间互相访问的端口策略较多, 建议对蓝鲸后台服务器之间关闭防火墙.
- systemctl stop firewalld
- systemctl disable firewalld &>/dev/null
- setenforce 0
- # 修改配置文件, 禁止开机自启动
- sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
- curl -o /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo &>/dev/null
- curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null
- cat>> /etc/security/limits.conf <<EOF
- * soft nproc 65530
- * hard nproc 65530
- * soft nofile 65530
- * hard nofile 65530
- EOF
- ulimit -n 65535
- ulimit -u 20480
- # 同步时间
- yum -y install ntpdate
- ntpdate -b ntp1.aliyun.com
- # 检查是否有 rsync 命令, 如果有返回 rsync 路径, 可以跳过后面的命令
- which rsync
- # 安装 rsync
- yum -y install rsync
获取安装包
- https://bk.tencent.com/download/ # 建议下载 5.0.4, 坑相对少一点
- [root@rbtnode1 ~]# mkdir /data # 创建一个目录, 将安装包解压到这个目录
- [root@rbtnode1 ~]# tar xvf bkce_src-5.0.4.tar.gz -C /data/
关闭 NetworkManager
- systemctl disable NetworkManager.service
- systemctl stop NetworkManager.service
给所有机器分配服务组件
- [root@rbtnode1 install]# mv install.config.3IP.sample install.config
- [root@rbtnode1 install]# cat install.config
- 172.19.0.24 nginx,appt,rabbitmq,kafka,zk,es,bkdata,consul,fta # 中控机
- 172.19.0.23 MongoDB,appo,kafka,zk,es,MySQL,beanstalk,consul
- 172.19.0.28 paas,cmdb,job,gse,license,kafka,zk,es,Redis,consul,influxdb
- # appt 和 appo 不能部署到同一台机器
- # gse 和 Redis 必须部署到同一台机器
获取证书
- [root@rbtnode1 install]# cat install.config |grep gse
- 172.19.0.28 paas,cmdb,job,gse,license,kafka,zk,es,Redis,consul,influxdb
- [root@rbtnode1 install]# cat install.config |grep license
- 172.19.0.28 paas,cmdb,job,gse,license,kafka,zk,es,Redis,consul,influxdb
- [root@hadoop-3 job]# cat /sys/class.NET/eno16780032/address
- 00:0c:29:01:6e:0c
- [root@blueking-1 install]# tar xvf /root/ssl_certificates.tar.gz -C /data/src/cert/
- # 输入 GSE/LICENSE 所在服务器的 Mac 地址, 多个 Mac 地址使用换行或英文分号分隔
准备 pip 源和 Nginx 源
- (4.0 版本需要准备, 没有这个目录和文件, 需要创建)
- # 5.0 不需要
- [root@rbtnode1 ~]# mkdir /data/src/.pip
- [root@rbtnode1 ~]# VIM /data/src/.pip/pip.conf
- [global]
- index-url = http://mirrors.aliyun.com/pypi/simple
- trusted-host = mirrors.aliyun.com
- [root@rbtnode1 install]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
配置 SSH 免密登陆
- cd /data/install
- bash configure_ssh_without_pass # 根据提示输入各主机的 root 密码完成免密登陆配置
安装前校验环境是否满足
- cd /data/install
- bash precheck.sh
到本地电脑配置本地 hosts
Windows10: C:\Windows\System32\drivers\etc\hosts 文件末尾加上
- 172.19.0.24 nginx-1
- 172.19.0.24 paas.bk.com
- 172.19.0.24 cmdb.bk.com
- 172.19.0.24 job.bk.com
- 172.19.0.24 rbtnode1 # 此处 172.19.0.24 为 nginx 地址
- Linux: VIM /etc/hosts # 文件末尾加上下面三行
- 172.19.0.28 hadoop-3
- 172.19.0.24 paas.bk.com
- 172.19.0.24 cmdb.bk.com
- 172.19.0.24 job.bk.com
安装各个功能组件
- ./bk_install paas
- ./bk_install cmdb
- ./bk_install job
- ./bk_install app_mgr
- ./bk_install saas-o bk_nodeman
- ./bk_install bkdata
- ./bk_install saas-o bk_monitor
- ./bk_install fta
- ./bk_install saas-o bk_fta
- ./bkcec install gse_agent
- # 执行报错不要往下继续走了, 解决完报错再继续
常见报错
- cmdb
- # 重启机器后或者安装上 cmdb 报错 502,404
- # 修改 / etc/resolv.conf, 首行添加 nameserver 127.0.0.1
- # 在网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0, 加上一行配置 PEERDNS=no
- # 保存后执行:
- systemctl restart network
- ./bkcec stop all
- ./bkcec start all
gse 启动失败
- # 内网 IP 自动获取不对时
- # LAN_IP 表示 GSE 服务器真实可用的内网 IP(ip addr 输出查看), 需要根据实际 IP 替换 修改以下配置文件项, 新增相关配置, 注意 JSON 格式, 逗号问题.
- # 配置文件在 gse 机器上,/data/bkce/etc/gse
- # data.conf
- "datasvrip":"LAN_IP",
- # task.conf
- "tasksvrip":"LAN_IP",
- "tasksvrthirftip":"LAN_IP",
- "tasksvrtrunkip":"LAN_IP",
- # dba.conf
- "servers":[{"ip":"LAN_IP","port":58817}],
- # btsvr.conf
- "filesvrthriftip":"LAN_IP",
- "btServerOuterIP":[{"ip":"LAN_IP","port":59173}],
- "btServerInnerIP":[{"ip":"LAN_IP","port":59173}],
- Copy
- # API.conf
- "cacheApiAddr":[{"ip":"LAN_IP", "port":59313}],
- Copy
- # agent.conf
- "agentip":"LAN_IP",
- ./bkcec stop consul
- ./bkcec install consul 1
- ./bkcece start consul
- ./bkcec stop cmdb
- ./bkcec start cmdb
- ./bkcec stop gse
- ./bkcec start gse
- # 如果以上方法还是不行, 重装
- ./bkcec stop gse
- ./bkcec initdata cmdb
- ./bkcec install gse 1
- ./bkcec status gse
- job
- # 如果部署 install job 时候最后报错出现 Failed]-- http port 8008 start fail!
- # 用 lsof 去每台机器看 lsof -i:8008, 然后 kill -9 指定 pid,15 杀不掉 java 进程
- # 如果 job 一直启动不起来, 访问报错 502
- # 按顺序, 大部分执行
- ./bkcec start xxx
- # rabbitmq 用
- systemctl start rabbitmq-server
- ./bkcec start job
- ./bkcec start gse_agent
- ./bkcec start appo
- ./bkcec start saas-o
节点管理
- # 如果部署节点管理命令行出现
- # 2019-10-28 17:12:29 126 INFO check deploy result. retry 102
- # 2019-10-28 17:12:32 126 INFO check deploy result. retry 103
- # 2019-10-28 17:12:35 126 INFO check deploy result. retry 104
- # 这些提示, 到 130 左右可以直接去开发者中心一键部署, 如果报错超时可以再进行部署一次, 如果还报错, 去 MySQL 里面删掉指定库, 再创建一个相应库, 修改超时时间, 再部署
- # 加入新的 agent 时候如果安装失败就再进行重装一遍, 基本都能成功
- remote: You must verify your email address.
- remote: See https://github.com/settings/emails.
- fatal: unable to access 'https://github.com/You-Men/Shell-Script.git/': The requested URL returned error: 403
- # 节点管理安装 agent 无日志输出
- # 登录 appo 所在机器
- # /data/bkce/paas_agent/apps/logs/bk_nodeman / 看日志报错
- # 重新部署节点管理
- # saas 如何重装 :::: 在开发者中心 -->s-mart 应用 -->找到需要重装的 saas-->点击部署
Rabbitmq 启动失败
- # 表象: 在部署蓝鲸 JOB 过程中需要进行 RabbitMQ 的安装, 数据初始化, 激活步骤, 此问题多发生在此过程
- # 思路方法: 如果是在添加用户和 vhost 时报错, 那么说明启动 rabbitmq-server 没有成功, 通过以下方式确认
- # 查看进程是否存在
- $ ps -ef | grep beam
- # 查看监听端口是否存在(5672, 15672, 25672 三个端口必须都在)
- $ netstat -tnlpu | grep 5672
- # 若没有启动, 通过 systemctl start rabbitmq-server 启动. 若系统没有 systemctl 命令, 通过 service rabbitmq start 启动
- # 首先排查 / data/bkce/etc/rabbitmq 目录, 对 rabbitmq 用户是否有读权限,/data/bkce/public/rabbitmq 目录对 rabbitmq 用户是否有写权限
- # 自己处理好目录的权限问题后, 再尝试重启 rabbitmq-server
- # rabbitmq activate 失败
- # 表象: 此问题发生在./bk_install app_mgr, 会发生如下报错
- # 思路方法:
- # 确认 umask, 若不是 022, 修改 / etc/profile, 然后 source /etc/profile, 再卸载 rabbitmq, 重新安装
- # 确认在安装过程, 或在 rabbitmq activate 前主机域名是否做过调整修改
监控
- # 部署 bkdata 报错: Job is required for bkdata. Please install job first :::: 确认 job 拉起后, 可以自行追加
- # echo start job>> /data/install/.bk_install.step
- # ./bkcec initdata bkdata # 执行此条命令如果报以下错误
- # [172.19.0.29]20191028-190202 13 create topic failed.
- # [172.19.0.29]20191028-190202 130 migrate failed for bkdata(dataapi)
- # 原因一, kafka broker 节点缺失
- # 若社区版为 3 台部署的, 必须返回 [1, 2, 3] 才正常, 示例如下 若 brokers ids 不为[1, 2, 3], 可能存在 / data/bkce/public/kafka/.lock 文件, 有的话, 删除此文件, 再重新使用./bkcec stop kafka 和./bkcec start kafka 重启 kafka, 重启完再次确认状态
- [root@rbtnode1 /data/install]# /data/bkce/service/zk/bin/zkCli.sh -server zk.service.consul:2181
- # ls /common_kafka/brokers/ids
- Connecting to zk.service.consul:2181
- log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
- log4j:WARN Please initialize the log4j system properly.
- log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
- WATCHER::
- WatchedEvent state:SyncConnected type:None path:null
- [1, 2, 3]
- # ./bkcec stop kafka
- # rm -rf /data/bkce/public/kafka/.lock
- # ./bkcec install kafka 1
- # ./bkcec start kafka
- # ./bkcec initdata bkdata
- # 检查下 kafka 状态是否正确, 再执行
- # ./bkcec stop bkdata dataapi
- # ./bkcec initdata bkdata
- # 部署 Saas 提示超时
- # 到 appo 机器, 修改 paas_agent 的 paas_agent_config.YAML, 将 EXECUTE_TIME_LIMIT 调大, 重启 paas_agent 即可.
- # VIM /data/bkce/paas_agent/paas_agent/etc/paas_agent_config.YAML
- # EXECUTE_TIME_LIMIT: 300 <可修改为 900>
- # ./bkcec stop appo
- # ./bkcec start appo
加入新的 Paas
如果部署新的 paas 模块报错, 直接去 MySQL 数据库删掉对应库, 再创建对应库, 再去开发者中心一键部署, 如果卡顿或者没报错可以点下重新部署, 多来两次, 不行再去删掉对应库, 再创建, 基本除了监控, 节点管理, 其他的 paas 都是这样安装成功
来源: https://www.cnblogs.com/you-men/p/13416827.html