阿里流量防卫sentinel-dashboard
411
注:本docker镜像来自github开源代码,如有侵权请联系作者删除。
该镜像的持久化方式采用的是 redis,所以需要先在外部创建一个 redis 服务。
Docker run --name sentinel-dashboard -e REDIS_HOST=127.0.0.1 -e REDIS_PORT=6379 -p 8080:8080 osmiling/sentinel-dashboard:1.8.9-redis
version: '3.1'
services:
sentinel-dashboard:
image: osmiling/sentinel-dashboard:1.8.9-redis
container_name: sentinel-dashboard
logging:
driver: json-file
options:
max-size: "100m"
max-file: "5"
restart: always
ports:
- "8619:8619"
environment:
SERVER_PORT: 8619
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
REDIS_PASSWORD: 123456
REDIS_DATABASE: 15
volumes:
- /etc/localtime:/etc/localtime #将外边时间直接挂载到容器内部,权限只读
- ./logs:/root/logs
| 变量 | 说明 | 版本 |
|---|---|---|
| SERVER_PORT | 端口配置,默认8080 | 1.8.5-redis |
| SENTINEL_USER | 控制台用户名 | 1.8.5-redis |
| SENTINEL_PASSWORD | 控制台密码 | 1.8.5-redis |
| REDIS_HOST | redis主机ip | 1.8.5-redis |
| REDIS_PORT | redis端口 | 1.8.5-redis |
| REDIS_PASSWORD | redis密码 | 1.8.5-redis |
| REDIS_DATABASE | redis数据库 | 1.8.5-redis |
| REDIS_CLUSTER_NODES | redis集群节点 | 1.8.5-redis |
| REDIS_CLUSTER_MRS | redis集群重定向最大次数 | 1.8.5-redis |
| REDIS_SENTINEL_MASTER | redis哨兵模式主节点id | 1.8.5-redis |
| REDIS_SENTINEL_NODES | redis哨兵模式节点 | 1.8.5-redis |
| REDIS_SENTINEL_USER | redis哨兵模式用户名 | 1.8.5-redis |
| REDIS_SENTINEL_PASSWORD | redis哨兵模式密码 | 1.8.5-redis |
注意:可在项目中对应 application.properties 使用。
如果环境变量无法满足配置,可自行映射 application.properties 配置启动。
这里使用 springboot 做项目案例展示。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-redis</artifactId>
</dependency>
注意:sentinel-core 的 1.8.5 版本和 1.8.6 版本存在 系统规则 无法正常使用的问题,所以要将该核心包升级到 1.8.7 版本及以上。
spring:
cloud:
# alibaba哨兵
sentinel:
enabled: true
# 默认情况下 sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,取消sentinel控制台懒加载功
eager: true
transport:
# 默认7890端口,假如被占用会自动7890开始依次+1扫描,直至找到未被占用的端口
port: 7890
# 配置Sentinel dashboard地址
dashboard: 127.0.0.1:8080
datasource:
ds1:
redis:
host: 127.0.0.1
database: 15
port: 6379
password: dsk806888
master-id: master
rule-key: 'Sentinel:Config:${spring.application.name}:system'
channel: 'Sentinel:Channel:${spring.application.name}:system'
rule-type: system
ds2:
redis:
host: 127.0.0.1
database: 15
port: 6379
password: dsk806888
master-id: master
rule-key: 'Sentinel:Config:${spring.application.name}:flow'
channel: 'Sentinel:Channel:${spring.application.name}:flow'
rule-type: flow
ds3:
redis:
host: 127.0.0.1
database: 15
port: 6379
password: dsk806888
master-id: master
rule-key: 'Sentinel:Config:${spring.application.name}:degrade'
channel: 'Sentinel:Channel:${spring.application.name}:degrade'
rule-type: degrade
ds4:
redis:
host: 127.0.0.1
database: 15
port: 6379
password: dsk806888
master-id: master
rule-key: 'Sentinel:Config:${spring.application.name}:param-flow'
channel: 'Sentinel:Channel:${spring.application.name}:param-flow'
rule-type: param-flow
ds5:
redis:
host: 127.0.0.1
database: 15
port: 6379
password: dsk806888
master-id: master
rule-key: 'Sentinel:Config:${spring.application.name}:authority'
channel: 'Sentinel:Channel:${spring.application.name}:authority'
rule-type: authority
ds[1-5] 都是同一个 redis ,写这么多是为了不同的限流规则使用。
注意:规则 key 和 通道 channel 就是 redis 的健,需要和控制台的格式一致才能起作用,不是随便写的,格式如下:
"Sentinel:Config:" + 应用名称 + 规则枚举(
com.alibaba.cloud.sentinel.datasource.RuleType)"Sentinel:Channel:" + 应用名称 + 规则枚举(
com.alibaba.cloud.sentinel.datasource.RuleType)
Content type
Image
Digest
sha256:426fa9848…
Size
235.7 MB
Last updated
10 months ago
docker pull osmiling/sentinel-dashboard:1.8.9-redis