美文网首页我的微服务运维
docker化sentinel-dashboard+nacos注

docker化sentinel-dashboard+nacos注

作者: 梦想实现家_Z | 来源:发表于2020-05-20 18:54 被阅读0次

    1.先把Sentinel克隆代码到本地

    2.把克隆好的代码分支切换到release-1.7。如图所示: image-20200520164559413.png

    3.通过idea工具打开克隆的项目(需要等待一段时间,maven需要下载很多依赖包)

    4.项目导入成功后,打开sentinel-dashboard模块中的pom.xml,把sentinel-datasource-nacos依赖的scope那一行删掉(作用就是打包的时候把sentinel-datasource-nacos打进去,这样才能把规则写入nacos注册中心) image-20200520164920719.png
    5.按照下图所示,把sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos这个包里面的所有java文件都复制sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule image-20200520165800154.png
    6.如下图所示,把FlowControllerV2中的两个指定的名字分别改成FlowRuleNacosProvider对象和FlowRuleNacosPublisher对象对应的bean名称 image-20200520170852652.png
    7.修改前端代码: image-20200520175911927.png
    这个修改是有原因的,没修改的时候是这样的: image-20200520180045534.png
    修改后是这样的: image-20200520180141678.png
    这样才能访问到FlowControllerV2。

    至此,当前sentinel-dashboard可以访问localhost上的nacos实例,所以我们下一步需要修改成动态配置目标nacos

    8.新增一个NacosProperties image-20200520171340221.png
    package com.alibaba.csp.sentinel.dashboard.rule.nacos;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /** @author zouwei */
    @Component
    @ConfigurationProperties(prefix = "nacos.server")
    public class NacosProperties {
        private static final String NACOS_SERVER_ADDR = "NACOS_SERVER_ADDR";
        private static final String NACOS_GROUP_ID = "NACOS_GROUP_ID";
        private static final String NACOS_NAMESPACE = "NACOS_NAMESPACE";
        private static final String NACOS_PORT = "NACOS_PORT";
        private static final String NACOS_IP = "NACOS_IP";
    
        private String ip = "localhost";
    
        private String port = "8848";
    
        private String namespace;
    
        private String groupId = "DEFAULT_GROUP";
    
        public String getIp() {
            String nacosIp = getEnv(NACOS_IP);
            if (StringUtils.isNotBlank(nacosIp)) {
                return nacosIp;
            }
            return ip;
        }
    
        public void setIp(String ip) {
            this.ip = ip;
        }
    
        public String getPort() {
            String nacosPort = getEnv(NACOS_PORT);
            if (StringUtils.isNotBlank(nacosPort)) {
                return nacosPort;
            }
            return port;
        }
    
        public void setPort(String port) {
            this.port = port;
        }
    
        public String getNamespace() {
            String nacosNamespace = getEnv(NACOS_NAMESPACE);
            if (StringUtils.isNotBlank(nacosNamespace)) {
                return nacosNamespace;
            }
            return namespace;
        }
    
        public void setNamespace(String namespace) {
            this.namespace = namespace;
        }
    
        public String getGroupId() {
            String nacosGroupId = getEnv(NACOS_GROUP_ID);
            if (StringUtils.isNotBlank(nacosGroupId)) {
                return nacosGroupId;
            }
            return groupId;
        }
    
        public void setGroupId(String groupId) {
            this.groupId = groupId;
        }
    
        public String getServerAddr() {
            String nacosServerAddr = getEnv(NACOS_SERVER_ADDR);
            if (StringUtils.isNotBlank(nacosServerAddr)) {
                return nacosServerAddr;
            }
            return this.getIp() + ":" + this.getPort();
        }
    
        private static String getEnv(String key) {
            return System.getenv(key);
        }
    }
    
    

    9.修改以下三个类


    image-20200520171727544.png
    image-20200520171825377.png
    image-20200520171901345.png
    10.添加nacos相关配置 image-20200520180338236.png
    这四个和nacos相关的配置根据自己的实际情况配置。

    到这一步,就已经达到了动态配置目标nacos的目的了。接下来,就是打包和docker化。

    11:打包

    在idea中找到Terminal,进入sentinel-dashboard中,执行以下命令打包:

    mvn clean package
    
    执行完毕后,在target中会生成sentinel-dashboard.jar,这个就是我们需要的jar包 image-20200520181003244.png

    12:准备好docker-compose.yml和Dockerfile

    docker-compose.yml

    1. version: "3"
      services:
        sentinel-dashboard:
          build: ./sentinel
          container_name: sentinel-dashboard
          ports:
            # 对应Dockerfile中的192.168.2.231:8086及8080端口配置
            - "8086:8080"
          environment:
            # nacos服务地址及端口(根据自身情况配置)
            - NACOS_SERVER_ADDR=192.168.2.231:8848
            # nacos服务namespace(根据自身情况配置)
            - NACOS_NAMESPACE=d1191f93-910a-47cc-8684-234e2b30909b
            # nacos服务group id(根据自身情况配置)
            - NACOS_GROUP_ID=SENTINEL_GROUP
      

    Dockerfile

    FROM openjdk
    MAINTAINER zouwei <zou.wei930526@gmail.com>
    RUN mkdir /usr/src/sentinel-dashboard
    COPY sentinel-dashboard.jar /usr/src/sentinel-dashboard
    WORKDIR /usr/src/sentinel-dashboard
    EXPOSE 8080
    ENTRYPOINT ["java", "-Dserver.port=8080", "-Dcsp.sentinel.dashboard.server=192.168.2.231:8086", "-Dproject.name=sentinel-dashboard", "-jar", "sentinel-dashboard.jar"]
    

    以上配置中192.168.2.231:8086为宿主机IP和映射出来的8086端口,其实就是指向sentinel-dashboard服务,该配置可自定义。

    13.启动sentinel-dashboard服务

    执行以下命令启动服务:

    docker-compose up -d sentinel-dashboard
    
    通过访问指定的192.168.2.231:8086进入sentinel登录页面 image-20200520183807887.png
    输入默认的用户名:sentinel 密码:sentinel image-20200520183943473.png
    至此,就可以通过sentinel-dashboard和nacos就可以实现流控规则的持久化和动态配置了。

    相关文章

      网友评论

        本文标题:docker化sentinel-dashboard+nacos注

        本文链接:https://www.haomeiwen.com/subject/osonohtx.html