Unlocking Locked Users Due to Excessive BK Password Retries

  • Scope: BK users who have entered their login password too many times and have been locked out, need to be unlocked.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env bash

set -e

MYSQL_COMMAND=${MYSQL_COMMAND:-/usr/bin/mysql --login-path=mysql-default}

usage_and_exit () {
cat <<EOF
用法:
$PROGRAM [--find-user|--unlock-id]
EOF
exit 1
}

find_user_id () {
local user_name=$1
$MYSQL_COMMAND \
-NBe "select id from bk_user.profiles_profile where username = "\'"${user_name}"\'";"
}

find_audit_log_id () {
local user_id=$1
$MYSQL_COMMAND \
-NBe "select id from bk_user.audit_login where profile_id=$user_id order by id desc limit 1;"
}

unlock_user () {
local user_id=$1
local audit_log_id=$2
$MYSQL_COMMAND \
-NBe "update bk_user.audit_login set is_success = 1 where profile_id=$user_id and id=$audit_log_id;"
}

# 解析命令行参数,长短混合模式
(( $# == 0 )) && usage_and_exit 1
while (( $# > 0 )); do
case "$1" in
--find-user )
shift
USER_NAME=$1
;;
--unlock-id )
shift
USER_ID=$1
;;
-*)
error "不可识别的参数: $1"
;;
*)
break
;;
esac
shift
done

if [ "$USER_NAME" != '' ]; then
USER_ID=$(find_user_id "$USER_NAME")
fi

if [ "USER_ID" == '' ]; then
usage_and_exit
fi

unlock_user "${USER_ID}" "$(find_audit_log_id $USER_ID)"

使用腾讯云云服务部署蓝鲸7.1

使用腾讯云云服务部署蓝鲸7.1

蓝鲸 7.1 相对于 蓝鲸 6.X 最大的区别在于部署方式的不同,蓝鲸 7.1 是基于 Kubernetes 改造的全平台容器化形态。

本教程描述了如何针对云原生服务场景进行蓝鲸 7.1 部署。


单实例 RabbitMQ 切换高可用(镜像)队列模式

RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。

在蓝鲸组件中,以下产品依赖 RabbitMQ 服务:

  • PaaS 平台(需要注册 RabbitMQ 服务,提供给通过 PaaS 平台部署的 SaaS 用)
  • 后台 Django 工程使用 celery 任务的 (节点管理、用户管理、监控平台等)
  • 作业平台(job)
  • 蓝盾(bkci)

本教程描述了如何在单机部署的蓝鲸社区版中将单点部署的 Rabbitmq 切换至高可用(镜像)队列模式。


扩容 MongoDB RS 集群(切片集集群)

MongoDB 是一种通用文档型数据库。在蓝鲸后台架构中,主要为以下平台提供存储服务:

  • 配置平台(CMDB)的核心数据
  • 作业平台(Job)的执行日志
  • 管控平台(GSE)的插件信息

本教程描述了如何在蓝鲸社区版中扩容 Mongod 副本集。要使一个副本集能提供足够的冗余,至少需要部署三个节点,所以新增节点数必须为偶数,至少增加两台机器。


扩容 Kafka 集群

Kafka 在蓝鲸架构中,用于数据上报通道的队列缓存。在数据链路中,生产者是 GSE 组件的 gse_data 进程,将 agent 上报的监控时序数据或者日志采集数据 写入到 kafka 集群。消费者是监控后台的 transfer 进程,将队列中的数据消费,清洗,并入库到相应存储中。

本教程描述了如何在蓝鲸社区版中扩容 Kafka 集群。

  • 要使一个副本集能提供足够的冗余,至少需要部署三个 Broker ,所以新增节点数必须为偶数,至少增加两台机器。
  • 官方的扩容指引:https://kafka.apache.org/0100/documentation.html#basic_ops_cluster_expansion
  • Kafka 扩容集群很简单,只需要分配一个唯一的 Broke id 即可加入集群
  • 扩容完成后,新的 Broker 中如果没有新增 Topic,这个节点是不会承载任何数据,所以需要用户手动迁移老的数据到新的 broker,以达到集群内均匀的负载分布。具体操作参考官方文档说明:https://kafka.apache.org/0100/documentation.html#basic_ops_cluster_expansion
  • 单机版部署的蓝鲸只有单 Kafka 集群,建议扩容至 3 个 Broker,实现容错和高可用性

ZooKeeper 单点切换至集群

Apache ZooKeeper 是 Apache 软件基金会的一个软件项目,为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。

蓝鲸后台产品中,使用到 Zookeeper 的有:

  • cmdb 用作服务发现
  • gse 用作服务发现和 dataid 数据存储
  • 蓝鲸监控 metadata 后台 读取 gse 的 dataid 数据部分

本教程描述了如何在单机部署的蓝鲸社区版中将单点部署的 Zookeeper 切换至集群模式。一个 Zookeeper 集群至少需要三台机器,所以新增节点数必须为偶数,至少增加两台机器。