限流神器Sentinel安装部署
在开始之前,先介绍一下我的安装环境
- 程序:本地启动
- nacos:阿里云服务器(docker)
- Sentinel:阿里云服务器(docker)
正式安装
Sentinel控制台官方文档:https://sentinelguard.io/zh-cn/docs/dashboard.html
- docker拉取Sentinel镜像
docker pull bladex/sentinel-dashboard:latest
- 查看镜像
docker images
- 启动sentinel,回车后,返回一个容器id
docker run --name sentinel -d -p 8858:8858 镜像id
如果启动后,看不到sentinel的各种数据,可以使用docker logs -f 容器id查看对应的日志
docker logs -f 容器id
- 访问Sentinel(记得检查防火墙或者网络安全组)
http://公网ip:8858
# 登录密码默认sentinel/sentinel
微服务整合Sentinel项目依赖配置
- 项目添加依赖
<!--sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 微服务接入Sentinel配置
spring:
cloud:
sentinel:
transport:
dashboard: sentinel控制台ip:8858
port: 9999
#dashboard: sentinel控制台ip:8858 本地启动就使用本地ip,服务器其他就使用服务器的ip
#port: 9999 本地启的端口,随机选个不能被占用的,与dashboard进行数据交互,会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互, 若被占用,则开始+1一次扫描
- 注意:微服务注册上去后,由于Sentinel是懒加载模式,所以需要访问微服务后才会在控制台出现
踩坑
- 在测试的过程中,发现服务已经注册到了sentinel上面,但是里面却没有任何的数据
这时候不用慌,首先查看一下日志,看看是什么问题
docker logs -f 容器id
发现是连接超时了,为了解决这个问题,我查了大量资料,基本都说是没有指定服务和控制台通信的IP即
sentinel:
enabled: true #开启sentinel保护,默认开启
transport:
clientIp: 121.40.236.249 #服务的ip地址,即程序的地址
dashboard: sentinel控制台ip:8858
port: 99999
但是我是在本地启动的,这个地址也是我本地的地址,怎么会不对呢,后来我就在本地使用jar包的方式启动控制台,dashboard修改为本地IP,神奇的一幕发生了,这回注册上来的服务终于有数据了,终于有数据了
最后猜想
对应服务注册上sentinel后,出现无数据的情况或这连接超时的情况,可能不是因为你配置出现了错误,而是网络问题导致的,所以大家在部署的时候,最好把sentinel和服务都部署到同一个宿主机上面,例如都是本地或者都是虚拟机和自己购买的服务器,这样子一般就不会出现网络问题
最后,希望这篇文章对大家有一点帮助,同时,如果有什么对方讲的不对的和不清楚的,大家都可以指出!!!