3、租户管理实战:创建租户、配置租户资料、管理租户管理员、租户状态管理
好,咱们进入第三章。这一章我打算手把手带你走一遍租户管理的完整流程。说白了,租户就是ThingsBoard里的“客户公司”。你想想看,一个平台要服务几十上百家企业,每家都有自己的设备、用户、规则链,怎么隔离?靠的就是租户机制。
我个人习惯把租户管理分成四个动作:创建、配置、授权、状态控制。咱们一个一个来。
3.1 创建租户:从零开始
在ThingsBoard里,只有系统管理员(SysAdmin)才有权限创建租户。登录后,你会看到左侧菜单有个“Tenants”选项。点进去,右上角有个大大的“+”号。
点击创建,弹出一个表单。核心字段就几个:
- Title:租户名称,比如“蓝海科技”
- Email:租户管理员的邮箱,用于接收通知
- Country / State / City:地址信息,非必填,但我建议填上
嗯,这里要注意:Title 是唯一标识。我在项目中遇到过两个租户重名,结果数据全乱套了。所以创建前最好先查一下有没有同名租户。
创建完成后,系统会自动生成一个租户ID(UUID)。这个ID后面所有操作都会用到,比如API调用、日志排查。我一般会把它记在项目文档里。
核心要点:租户创建后,默认状态是“激活”。但此时它还是个空壳,没有管理员、没有设备、没有仪表板。
3.2 配置租户资料:别偷懒,填完整
创建完租户,第一件事就是配置资料。点进租户详情页,你会看到几个Tab:
- Details:基本信息,包括名称、地址、联系方式
- Tenant Profile:租户配置文件,这个很重要
- Attributes:自定义属性,可以存一些业务信息
我重点说说Tenant Profile。它决定了这个租户能用多少资源。比如:
| 配置项 | 说明 | 我的建议 |
|---|---|---|
| Max Devices | 最大设备数 | 根据客户合同来,别给太多 |
| Max Users | 最大用户数 | 一般给50-100就够 |
| Max Dashboards | 最大仪表板数 | 20个以内比较合理 |
| Max Rule Chains | 最大规则链数 | 10个足够 |
| Transport Rate | 消息速率限制 | 默认1000/s,够用 |
为什么会有限制?说白了,防止一个租户把整个平台的资源吃光。我曾经遇到一个客户,一口气注册了10万台设备,结果平台直接卡死。从那以后,我每个租户都严格限制设备数。
配置完资料,记得点“Save”。嗯,这一步很多人会忘。
小技巧:Attributes 里可以存“客户等级”、“合同到期日”等业务字段。后面做自动化管理时,这些字段非常有用。
3.3 管理租户管理员:给租户配个“管家”
租户创建好了,资料也配完了。但谁去管理这个租户?答案是租户管理员(Tenant Administrator)。
在租户详情页,找到“Users”Tab。点击“Add User”,系统会弹出创建用户的表单。关键字段:
- Email:管理员的登录账号
- First Name / Last Name:姓名
- Role:角色,这里选“Tenant Administrator”
创建完成后,系统会发送一封激活邮件到管理员邮箱。管理员点击链接,设置密码,就能登录了。
我个人习惯:创建完管理员后,立刻测试登录。别等到客户反馈说登不上,那太被动了。我记得有一次,我忘了给管理员分配角色,结果他登录后啥也干不了。排查了半天才发现是角色没选对。
避坑指南:租户管理员只能管理自己租户内的资源。他看不到其他租户的数据,也改不了系统配置。这是多租户隔离的核心。
3.4 租户状态管理:激活、暂停、删除
租户不是一成不变的。客户可能欠费、可能合同到期、可能主动注销。这时候就需要状态管理。
在租户列表里,每个租户都有一个状态开关:
- Active:正常使用
- Suspended:暂停,所有功能不可用
- Deleted:删除,数据不可恢复
我重点说说Suspended。这个状态很实用。比如客户欠费了,你不想直接删数据,那就暂停。暂停后,租户下的所有设备停止上报数据,所有用户无法登录。但数据还在,恢复后一切照旧。
删除操作要慎重。ThingsBoard 的删除是物理删除,数据直接清掉。我曾经手滑删了一个测试租户,结果里面还有客户的演示数据...嗯,从那以后我每次删除前都先导出备份。
状态管理最佳实践:
- 新租户默认 Active
- 欠费/违规 -> Suspended
- 合同终止 -> 先 Suspended 30天,再删除
- 删除前必须备份数据
3.5 实战:用API批量管理租户
如果租户数量多,手动操作太慢了。我一般用API来批量管理。下面是一个创建租户的示例:
POST /api/tenant
Content-Type: application/json
{
"title": "蓝海科技",
"email": "admin@lanhai.com",
"country": "中国",
"state": "广东",
"city": "深圳",
"additionalInfo": {
"level": "VIP",
"contractEnd": "2025-12-31"
}
}
返回结果会包含租户ID:
{
"id": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
"title": "蓝海科技",
"status": "ACTIVE",
"createdTime": 1700000000000
}
拿到ID后,就可以创建管理员了:
POST /api/tenant/{tenantId}/user
Content-Type: application/json
{
"email": "admin@lanhai.com",
"firstName": "张三",
"lastName": "李四",
"authority": "TENANT_ADMIN"
}
暂停租户也很简单:
PUT /api/tenant/{tenantId}/suspend
恢复:
PUT /api/tenant/{tenantId}/activate
自动化脚本建议:我写过一个Python脚本,每天凌晨检查租户合同到期日。如果距离到期还有7天,自动发送提醒邮件。如果已过期,自动暂停。这样省了不少人工。
3.6 本章小结
租户管理是ThingsBoard多租户架构的基石。你只要记住:
- 创建租户 -> 配置资料 -> 分配管理员 -> 控制状态
- API比UI高效,适合批量操作
- 状态管理要谨慎,数据备份不能省
下一章,咱们会深入租户配置文件和资源限制。说白了,就是怎么给每个租户“画圈圈”,不让它跑出边界。到时候我会分享一些我在生产环境踩过的坑,保证让你少走弯路。
好,这一章就到这儿。有问题随时找我。