1. 使用docker部署sentinel
对于实时监控不显示的解决方案可以直接看4. 总结
1.1. 下载sentinel的jar包
sentinel-dashboard就是一个SpringBoot项目,直接使用命令启动即可,所以可以自定义配置docker启动。
如果没有特殊需要可以直接下载jar,需要修改源码则下载源码包即可,下载地址:https://github.com/alibaba/Sentinel/releases,下载相应版本的jar包,比如sentinel-dashboard-1.8.1.jar
然后将下载好的jar包放到服务器的某一个目录下。并且在相同位置创建Dockerfile文件。
1.2. Dockerfile文件内容
# java 版本
FROM java:8
# 挂载的docker卷
VOLUME /tmp
# 前者是要操作的jar包 后者自定义jar包名
ADD *.jar sentinel-dashboard.jar
# 定义时区参数
ENV TZ=Asia/Shanghai
# 设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# 配置启动命令,-D表示设置JVM参数 (xxx.xxx.xxx.xxx换成自己服务器的ip)
ENTRYPOINT ["java","-jar","-Dserver.port=8858","-Dcsp.sentinel.dashboard.server=xxx.xxx.xxx.xxx:8858","-Dproject.name=sentinel-dashboard","-Dsentinel.dashboard.auth.username=sentinel","-Dsentinel.dashboard.auth.password=123456","/sentinel-dashboard.jar"]
ENTRYPOINT
中的内容实际上就是执行jar包时执行的命令,可根据自己的需求和官方文档添加别的配置参数。
控制台配置项
1.3. 创建、运行容器
在服务器当前目录执行下述命令构建镜像
docker build -t sentinel-server .
执行下述命令创建、运行容器
docker run --name sentinel_9 -p 8858:8858 -p 8719:8719 --restart=always --privileged=true -d sentinel-server
再执行docker ps
就可以看见容器已经在运行了
执行docker logs sentinel_9 -f
可以试试查看容器的运行日志。
2. 使用spring整合
(本文省略对nacos的讲解)
2.1. 服务中添加依赖和配置
<!-- sentinel 服务保护-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
下面这段配置得添加到nacos中。
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
2.2. 将服务打包部署到服务器上
流程和上述差不多,将服务的jar包和Dockerfile文件放在一个目录中。
Dockerfile文件内容
# 基础镜像使用Java
FROM openjdk:11.0.4
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo_user_server-exec.jar app.jar
# 定义时区参数
ENV TZ=Asia/Shanghai
# 设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# 运行jar包
# ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=config/application.yml","> log.txt &"]
# 以便于微服务配置
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=config/bootstrap.yml","> log.txt &"]
config目录下方配置文件
然后执行下述命令
docker build -t demo_user_server_2 .
docker run -d -p 8100:8100 -v /root/docker_file/demo_project/demoUserServer/config:/config --name demo_user_server_2 demo_user_server_2
/root/docker_file/demo_project/demoUserServer/config
为我服务器上的路径,大家根据自己的实际情况修改。
执行docker ps
可以看到容器已经启动。
3. 给docker容器创建网络
执行下述命令
# 创建一个名字为sentinel-net的网络
docker network create sentinel-net
# 查看已经创建的网络
docker network ls
# 查看sentinel-net网络的详细信息
docker network inspect sentinel-net
# 将容器sentinel_9和demo_user_server_2 连接到网络 sentinel-net
docker network connect sentinel-net sentinel_9
docker network connect sentinel-net demo_user_server_2
# 查看sentinel-net网络的详细信息
docker network inspect sentinel-net
# 重启容器sentinel_9和demo_user_server_2
docker restart demo_user_server_2 sentinel_9
之后就发现没问题了。
4. 总结
从网上总结的几个可能会导致Sentinel没有实时监控的原因。文章来源:https://www.toymoban.com/news/detail-489900.html
- 容器中的时间不对,这个需要
1.2. Dockerfile文件内容
中设置时区参数 - 端口没有打开,需要打开文章中涉及到的端口(服务器防火墙和安全组)
- 网络问题,需要在
3. 给docker容器创建网络
中创建网络(我就是这个问题。。) - Spring cloud版本问题,这个得查询相关资料,核对版本是否兼容。
-
如果不加@SentinelResource注解, 当请求接口为2层级或者更多层级时, sentinel无法对接口进行实时监控, 只有1层级才能实时监控到。(我在找解决方案的时候遇到网上一篇博客遇到这个问题,但是我没有成功复现出这个问题,不知道是否是版本问题,原文链接)
5. 参考资料
容器技术(二):Docker Network基础
docker network详解、教程
Sentinel(二)Docker搭建Sentinel 控制台环境搭建及使用介绍文章来源地址https://www.toymoban.com/news/detail-489900.html
到了这里,关于docker 部署 sentinel ,包含实时监控不显示的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!