Sentinel源码配置更改支持高可用部署

3 篇文章 0 订阅
1 篇文章 0 订阅

Sentinel源码配置更改支持高可用部署

现象

使用Sentinel带密码登录,如果前面使用Nginx进行代理,两个Sentinel无法部署为高可用,登录过后点击进入其他功能,又回到登录页面,达不到高可用部署的效果。

分析

我下了Sentinel dashborad源码进行了分析,发现他是使用正常的Session进行会话保持状态的,这显然是不行的;我设想把Session保存到Redis中,这样无论怎么部署,Session都只有一个,达到了Session一致的目的,应该能达到我要的效果。

开始

目的

主要记录Sentinel 控制台高可用部署,用于生产环境

版本信息

nameversionport
sentinel1.8.4192.168.28.1:8800
sentinel1.8.4192.168.28.132:8801

Sentinel源码配置修改支持高可用部署

  • pom.xml加入spring session和redis支持
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version> 2.5.7</version>
</dependency>
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version> 2.5.6</version>
</dependency>
  • redis 配置
spring.redis.host=192.168.252.1
spring.redis.port=6379
#spring session使用存储类型,默认就是redis所以可以省略
spring.session.store-type=redis
  • nacos配置(根据自己的情况定义,也可以在启动jar时候设置)
nacos.address=192.168.252.1:8840
nacos.namespace=middle-dev
nacos.group=dev
  • 我部署在两台机器上,其中192.168.28.132是虚拟机,启动命令分别为:
java -Dserver.port=8800 -Dnacos.namespace=middle-dev -Dnacos.address=192.168.252.1:8840 -Dcsp.sentinel.dashboard.server=localhost:8800 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
java -Dserver.port=8801 -Dnacos.namespace=middle-dev -Dnacos.address=192.168.252.1:8840 -Dcsp.sentinel.dashboard.server=localhost:8801 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

nginx配置 nginx.conf加上这一段

upstream sentinel-cluster {
        server 127.0.0.1:8800;
        server 192.168.28.132:8801;
}
server {
        listen 8810;
        server_name localhost;
        location / {
            proxy_pass http://sentinel-cluster;
        }
}

其他服务配置sentinel-dashboard地址

spring:
  cloud:
    sentinel: # sentinel 整合
      transport:
        dashboard: ${SENTINEL_DASHBOARD_ADDR:localhost}:8810 #sentinel控制台访问路径
        port: 8719 # 本地起一个httpserver,和sentinel打交道,缺省端口8719
                   # 如果同一个实例在一台机器上,需要改不同的端口
      filter:
        enabled: false # 不支持url,也就是在网关流控控制台看不到url资源,只支持gateway
      datasource:
        gw_flow: # 整合nacos,把流控规则保存到nacos 192.168.252.1
          nacos:
            server-addr: ${NACOS_SERVER_ADDR:192.168.252.1}:8840
            dataId: ${spring.application.name}-sentinel-flow
            namespace: middle-${SPRING_PROFILES_ACTIVE:dev}
            groupId: ${SPRING_PROFILES_ACTIVE:dev}
            data-type: json
            rule-type: gw_flow # 流控配置

结果

都启动之后,在sentinel-dashboard控制台增加和修改都显示正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值