精华内容
下载资源
问答
  • 如果要有自己的一个docker java 基础环境镜像怎么做? 方式一 其实hub.docker.com已经有这个镜像了 https://hub.docker.com/_/openjdk 只要按照他的说明进行操作,就可以创建你想要的JDK版本 docker 假设项目JAR为...

    如果要有自己的一个docker java 基础环境镜像怎么做?

    方式一

    其实hub.docker.com已经有这个镜像了

    https://hub.docker.com/_/openjdk
    

    只要按照他的说明进行操作,就可以创建你想要的JDK版本 docker
    假设项目JARsentinel-dashboard.jar,存放的文件位置是当前目录/demo
    那么在此目录下/demo执行命令,创建容器

    docker run --name demo  -v "$PWD":/usr/src/myapp \
    -w /usr/src/myapp \
    -p 8080:8080 \
    openjdk:8u191-jdk-alpine3.8 java -jar sentinel-dashboard.jar
    

    注意:$PWD 就是当前目录
    -v 映射目录
    -w 设置容器工作目录
    -p 映射端口
    openjdk:8u191-jdk-alpine3.8 镜像和tag版本
    java -jar sentinel-dashboard.jar 执行的命令

    方式二

    这边对方式一的镜像进行一个处理
    Dockfile

    #镜像源
    FROM openjdk:8u191-jdk-alpine3.8
    MAINTAINER foxiswho@gmail.com
    #镜像变量
    ARG version
    ARG ip
    ARG port
    
    # 镜像内部自定义环境变量,并赋值
    # sentinel version
    ENV SENTINEL_VERSION ${version:-1.4.1}
    #host
    ENV IP ${ip:-localhost}
    #ip
    ENV PORT ${port:-8080}
    
    # 设置项目目录
    # sentinel home
    ENV SENTINEL_HOME  /opt/
    ENV SENTINEL_LOGS  /opt/logs
    
    # 设置时区
    #tme zone
    RUN rm -rf /etc/localtime \
    && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # 创建日志目录
    # create logs
    RUN mkdir -p ${SENTINEL_LOGS}
    
    # 复制JAR项目
    COPY sentinel-dashboard.jar ${SENTINEL_HOME}
    
    # 设置JAR 执行权限
    RUN chmod -R +x ${SENTINEL_HOME}/*jar
    
    #设置镜像目录
    VOLUME ${SENTINEL_LOGS}
    
    #设置工作目录
    WORKDIR  ${SENTINEL_HOME}
    # 对外短裤
    EXPOSE ${PORT}
    # 执行程序
    CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar
    

    编译镜像

    docker build -t sentinel:1.4.1 ./
    

    生成容器

    docker run --name demo  -v "$PWD":/opt -p 8080:8080 sentinel:1.4.1
    

    方式三 使用docker-compose

    Dockerfile

    FROM openjdk:8u191-jdk-alpine3.8
    MAINTAINER foxiswho@gmail.com
    
    ARG version
    ARG ip
    ARG port
    
    # sentinel version
    ENV SENTINEL_VERSION ${version:-1.4.1}
    #host
    ENV IP ${ip:-localhost}
    #ip
    ENV PORT ${port:-8080}
    
    
    # sentinel home
    ENV SENTINEL_HOME  /opt/
    ENV SENTINEL_LOGS  /opt/logs
    
    #tme zone
    RUN rm -rf /etc/localtime \
    && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # create logs
    RUN mkdir -p ${SENTINEL_LOGS}
    
    # test file
    COPY sentinel-dashboard.jar ${SENTINEL_HOME}
    
    # add scripts
    #COPY scripts/* /usr/local/bin/
    RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
    && ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
    
    #
    RUN chmod -R +x ${SENTINEL_HOME}/*jar
    
    VOLUME ${SENTINEL_LOGS}
    
    WORKDIR  ${SENTINEL_HOME}
    
    EXPOSE ${PORT}
    
    CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar
    

    docker-compose.yml 文件

    version: '3.5'
    
    services:
      demo:
        build: ./
        hostname: demo
        container_name: demo
        ports:
          - "8080:8080"
        environment:
          - JAVA_OPTS=-Dcsp.sentinel.log.dir=/opt/logs -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard  -Djava.security.egd=file:/dev/./urandom
        volumes:
          - ./:/opt/logs
          - ./logs:/opt/logs
    

    当前目录下直接执行

    docker-compose up
    

    方式四 使用docker-compose

    Dockerfile

    FROM openjdk:8u191-jdk-alpine3.8
    MAINTAINER foxiswho@gmail.com
    
    ARG version
    ARG ip
    ARG port
    
    # sentinel version
    ENV SENTINEL_VERSION ${version:-1.4.1}
    #host
    ENV IP ${ip:-localhost}
    #ip
    ENV PORT ${port:-8080}
    
    
    # sentinel home
    ENV SENTINEL_HOME  /opt/
    ENV SENTINEL_LOGS  /opt/logs
    
    #tme zone
    RUN rm -rf /etc/localtime \
    && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # create logs
    RUN mkdir -p ${SENTINEL_LOGS}
    
    # test file
    COPY sentinel-dashboard.jar ${SENTINEL_HOME}
    
    # add scripts
    COPY scripts/* /usr/local/bin/
    RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
    && ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
    
    #
    RUN chmod -R +x ${SENTINEL_HOME}/*jar
    
    VOLUME ${SENTINEL_LOGS}
    
    WORKDIR  ${SENTINEL_HOME}
    
    EXPOSE ${PORT}
    
    ENTRYPOINT ["docker-entrypoint.sh"]
    
    CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar
    

    创建scripts/docker-entrypoint.sh文件
    内容如下

    #!/bin/bash
    
    
    export JAVA_OPTS="-Dserver.port=${PORT} -Dcsp.sentinel.dashboard.server=${IP}:${PORT} -Dcsp.sentinel.log.dir=${SENTINEL_LOGS} -Dproject.name=sentinel-dashboard -Djava.security.egd=file:/dev/./urandom ${JAVA_OPTS}"
    
    echo "JAVA_OPTS============"
    echo "JAVA_OPTS============"
    echo "JAVA_OPTS============"
    echo $JAVA_OPTS
    
    
    exec "$@"
    

    在根目录下 创建docker-compose.yml
    内容如下

    version: '3.5'
    
    services:
      demo:
        build: ./
        hostname: demo
        container_name: demo
        ports:
          - "8080:8080"
        environment:
          - JAVA_OPTS=-Dcsp.sentinel.log.dir=/opt/logs
        volumes:
          - ./:/opt/logs
          - ./logs:/opt/logs
    

    当前目录下直接执行

    docker-compose up
    

    方式五 其他

    直接看地址 https://github.com/foxiswho/docker-sentinel
    镜像地址 https://hub.docker.com/r/foxiswho/sentinel
    scripts目录下,创建docker-entrypoint.sh文件.
    内容如下

    #!/bin/bash
    export JAVA_OPTS="-Dserver.port=${PORT} -Dcsp.sentinel.dashboard.server=${IP}:${PORT} -Dcsp.sentinel.log.dir=${SENTINEL_LOGS} -Dproject.name=sentinel-dashboard -Djava.security.egd=file:/dev/./urandom ${JAVA_OPTS}"
    
    echo "JAVA_OPTS============"
    echo "JAVA_OPTS============"
    echo "JAVA_OPTS============"
    echo $JAVA_OPTS
    
    exec "$@"
    

    内容意思是设置JAVA_OPTS内容的环境变量

    在根目录中创建Dockerfile

    # 镜像源
    FROM centos:7
    #作者
    MAINTAINER foxiswho@gmail.com
    # 镜像自定义参数变量,用于创建镜像时传入
    ARG version
    ARG ip
    ARG port
    
    #自定义镜像容器内,环境变量
    # sentinel version
    ENV SENTINEL_VERSION ${version:-1.4.1}
    #host
    ENV IP ${ip:-localhost}
    #ip
    ENV PORT ${port:-8080}
    
    #设置项目目录及日志目录
    # sentinel home
    ENV SENTINEL_HOME  /opt/
    ENV SENTINEL_LOGS  /opt/logs
    
    #tme zone 设置时区
    RUN rm -rf /etc/localtime \
    && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # 安装一些软件
    RUN yum install -y java-1.8.0-openjdk-headless unzip gettext nmap-ncat openssl wget\
     && yum clean all -y
    
    # create logs 创建日志目录
    RUN mkdir -p ${SENTINEL_LOGS}
    
    #下载指定版本的软件,并移动到指定的目录
    # get the version
    RUN cd /  \
     && wget https://github.com/alibaba/Sentinel/releases/download/${SENTINEL_VERSION}/sentinel-dashboard-${SENTINEL_VERSION}.jar -O sentinel-dashboard.jar \
     && mv sentinel-dashboard.jar ${SENTINEL_HOME}
    # test file
    #COPY sentinel-dashboard.jar ${SENTINEL_HOME}
    
    #复制自定义的shell 文件到指定目录下
    # add scripts
    COPY scripts/* /usr/local/bin/
    RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
    && ln -s /usr/local/bin/docker-entrypoint.sh /opt/docker-entrypoint.sh
    
    # 设置项目文件为可执行文件权限
    RUN chmod -R +x ${SENTINEL_HOME}/*jar
    # 映射目录
    VOLUME ${SENTINEL_LOGS}
    #工作目录
    WORKDIR  ${SENTINEL_HOME}
    #映射端口
    EXPOSE ${PORT}
    # 用于设置容器启动后的第一个命令
    ENTRYPOINT ["docker-entrypoint.sh"]
    #用于设置容器启动的第一个命令的默认参数
    CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar
    

    其他说明

    本案例
    使用的Sentinel 版本
    https://github.com/alibaba/Sentinel/releases/tag/1.4.1
    案例地址
    https://github.com/foxiswho/docker-java-sentinel-demo

    展开全文
  • sentinel-源码

    2021-03-08 21:58:50
    Sentinel Discord Bot(开源)旨在帮助有兴趣创建具有基本功能的自己的全球禁止bot的开发人员。 我们将不提供Sentinel的确切副本,而是提供机器人及其核心功能的骨架。 系统要求 Node.js v14或更高版本 如果还创建...
  • Hystrix Sentinel对比

    2020-03-25 12:41:00
    Sentinel创建线程依赖tomcat或jetty容器的线程池,存在的问题就是运行容器的线程数量限制了sentinel设置值的上限可能设置不准。比如tomcat线程池为10,sentinel设置100是没有意义的,同时隔离性不好 hystrix使用...
    比较项 Sentinel Hystrix 说明
    隔离策略 信号量隔离(并发线程数限流)(模拟信号量) 线程池隔离/信号量隔离 Sentinel不创建线程依赖tomcat或jetty容器的线程池,存在的问题就是运行容器的线程数量限制了sentinel设置值的上限可能设置不准。比如tomcat线程池为10,sentinel设置100是没有意义的,同时隔离性不好 hystrix使用自己创建的线程池,隔离性会更好
    熔断降级策略 基于响应时间、异常比率、异常数 基于异常比率 快速失败的本质功能
    实时统计实现 滑动窗口(LeapArray) 滑动窗口(基于 RxJava)
    动态规则配置 支持多种数据源 支持多种数据源
    扩展性 多个扩展点 插件的形式
    注解 支持 支持
    限流 基于 QPS,支持基于调用关系的限流 有限的支持(并发线程数或信号量大小) 快速失败的本质功能
    流量整形 支持预热模式、匀速器模式、预热排队模式 不支持(排队)
    系统自适应保护 支持(仅对linux/unix生效) 不支持 设置一个服务器最大允许处理量的阈值
    控制台 提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等 简单的监控查看接近实时数据 控制台是非常有竞争力的功能,因为能集中配置限制数据更方便,但是展示数据和实时性没有hystrix直观。
    配置持久化 ZooKeeper, Apollo, Nacos、本地文件 Git/svn/本地文件 Sentinel客户端采用直接链接持久化存储,应用客户端引用了更多的依赖,同样的存储链接可能有多个配置
    动态配置 支持 支持
    黑白名单 支持 不支持
    springcloud集成 非常高 Spring boot使用hystrix集成度更高
    整体优势 集中配置设置及监控+更细的控制规则 漂亮的界面+接近实时的统计结果 docker容器化部署之后sentinel可能更会发挥作用

    参考:https://www.cnblogs.com/zhyg/p/11474406.html

    展开全文
  • sentinel与hystrix对比

    2019-10-01 22:32:35
    近期有同事再提要不要使用sentinel。所以我就对现在已经用hystrix。先看两者的线程模型。大部分对比项是sentinel开源工程对比的,本人做了...hystrix使用的是自己创建的线程池 Items Sentinel ...

    近期有同事再提要不要使用sentinel。所以我就对现在已经用hystrix。先看两者的线程模型。大部分对比项是sentinel开源工程对比的,本人做了一些修改以及增加了一些对比项和说明。

    从线程模型上看sentinel使用的是tomcat/jetty/other本身的线程池。hystrix使用的是自己创建的线程池

    Items

    Sentinel

    Hystrix

    remark

    隔离策略

    信号量隔离(并发线程数限流)(模拟信号量)

    线程池隔离/信号量隔离

    Sentinel不创建线程依赖tomcatjetty容器的线程池,存在的问题就是运行容器的线程数量限制了sentinel设置值的上限可能设置不准。

    比如tomcat线程池为10sentinel设置100是没有意义的,同时隔离性不好

    hystrix使用自己创建的线程池,隔离性会更好

     

    熔断降级策略

    基于响应时间、异常比率、异常数

    基于异常比率

    快速失败的本质功能

    实时统计实现

    滑动窗口(LeapArray)

    滑动窗口(基于  RxJava)

     

    动态规则配置

    支持多种数据源

    支持多种数据源

     

    扩展性

    多个扩展点

    插件的形式

     

    基于注解的支持

    支持

    支持

     

    限流

    基于  QPS,支持基于调用关系的限流

    有限的支持(并发线程数或信号量大小)

    快速失败的本质功能

    流量整形

    支持预热模式、匀速器模式、预热排队模式

    不支持(排队)

    支持排队好吧

    系统自适应保护

    支持仅对linux生效

    不支持

    所谓的自适应就是设置一个服务器最大允许处理量的阈值。(有比没有强,但是要知道最大负载量是多少。)

    控制台

    提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等

     

     

    简单的监控查看接近实时数据

     

     

    控制台是非常有竞争力的功能,因为能集中配置限制数据更方便,但是展示数据和实时性没有hystrix直观。

    配置持久化

    ZooKeeper, Apollo,  Nacos

     

    Git/svn/本地文件

    Sentinel客户端采用直接链接持久化存储,应用客户端引用了更多的依赖,同样的存储链接可能有多个配置

    动态配置

    支持

    支持

    hystrix可能需要手动触发,sentinel增加了额外的端口进行配置文件控制,应该也支持spring boot动态配置

    黑白名单

    支持

    不支持

    个人觉得这个功能用的不是很多

    springcloud集成

    非常高

    Spring boot使用hystrix会更方便

    整体优势

    集中配置设置及监控+更细的控制规则

     

    漂亮的界面+接近实时的统计结果

    集中配置可能更有吸引力,但是配置值是多少以及让谁控制依然是很头疼的事情。运维控制可能不知道哪个应该优先哪个不优先,应该调整到多大。什么时候更适合使用sentinel?个人认为docker容器化部署之后sentinel可能更会发挥作用,但是会有另外的竞品出现做选型。

           

    转载于:https://www.cnblogs.com/zhyg/p/11474406.html

    展开全文
  • Redis-Sentinel-Kubernetes 在Kubernetes上部署Redis(带有Sentinel的Master-Replica)。 建议用法:查看此头盔图,了解它,然后创建自己的部署:)
  • Redis Sentinel集群部署

    2019-07-29 14:29:52
    Redis Sentinel集群部署 ...期间涉及的目录文件夹 可以自己创建修改或者照着新建 实验环境 操作系统: Ubuntu 18.04.1 LTS redis版本: redis 5.0.2 机器规划 role ip port Master 127.0.0.1 6379 Slav...

    Redis Sentinel集群部署
    原文:https://blog.csdn.net/sunbocong/article/details/85252071

    期间涉及的目录文件夹 可以自己创建修改或者照着新建
    实验环境

    操作系统: Ubuntu 18.04.1 LTS
    redis版本: redis 5.0.2

    机器规划

    role ip port
    Master 127.0.0.1 6379
    Slave1 127.0.0.1 6380
    Slave2 127.0.0.1 6381
    Sentinel1 127.0.0.1 26379
    Sentinel2 127.0.0.1 26380
    Sentinel3 127.0.0.1 26381

    注意:
    生产环境中建议Redis Sentinel的所有节点应该分布在不同的物理机上。

    原理说明

    主从复制存在的问题

    Redis的主从复制模式可以将主节点的数据改变同步给从节点,这样从
    节点就可以起到两个作用:第一,作为主节点的一个备份,一旦主节点出了
    故障不可达的情况,从节点可以作为后备“顶”上来,并且保证数据尽量不丢
    失(主从复制是最终一致性)。第二,从节点可以扩展主节点的读能力,一
    旦主节点不能支撑住大并发量的读操作,从节点可以在一定程度上帮助主节
    点分担读压力。
    但是主从复制也带来了以下问题:
    ·一旦主节点出现故障,需要手动将一个从节点晋升为主节点,同时需
    要修改应用方的主节点地址,还需要命令其他从节点去复制新的主节点,整
    个过程都需要人工干预。

    Redis Sentinel方案

    Redis Sentinel是一个分布式架构,其中包含若干个Sentinel节点和Redis
    数据节点,每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当
    它发现节点不可达时,会对节点做下线标识。如果被标识的是主节点,它还
    会和其他Sentinel节点进行“协商”,当大多数Sentinel节点都认为主节点不可
    达时,它们会选举出一个Sentinel节点来完成自动故障转移的工作,同时会
    将这个变化实时通知给Redis应用方。整个过程完全是自动的,不需要人工
    来介入,所以这套方案很有效地解决了Redis的高可用问题。

    安装部署

    1.配置并启动Master节点

    创建data目录:

    root@sbc-VirtualBox:~# mkdir -p /opt/soft/redis/data
    1
    创建配置文件:

    root@sbc-VirtualBox:~# vim /etc/redis/redis-6379.conf

    port 6379
    daemonize yes
    logfile “6379.log”
    dbfilename “dump-6379.rdb”
    dir “/opt/soft/redis/data/”
    或者用aof启动
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379
    dbfilename dbmp.rdb
    #requirepass redhat 密码redhat
    save 900 1
    save 300 10
    save 60 10000
    appendonly yes
    appendfsync everysec

    启动Master节点:

    root@sbc-VirtualBox:~# redis-server /etc/redis/redis-6379.conf
    1
    验证Master节点状态:

    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 6379 ping
    PONG
    1
    2
    2.配置并启动两个Slave节点

    创建配置文件:

    slave1:

    root@sbc-VirtualBox:~# vim /etc/redis/redis-6380.conf

    port 6380
    daemonize yes
    logfile “6380.log”
    dbfilename “dump-6380.rdb”
    dir “/opt/soft/redis/data/”
    slaveof 127.0.0.1 6379
    1
    2
    3
    4
    5
    6
    7
    8
    slave2:

    root@sbc-VirtualBox:~# vim /etc/redis/redis-6381.conf

    port 6381
    daemonize yes
    logfile “6381.log”
    dbfilename “dump-6381.rdb”
    dir “/opt/soft/redis/data/”
    slaveof 127.0.0.1 6379
    1
    2
    3
    4
    5
    6
    7
    8
    启动2个Slave节点:

    root@sbc-VirtualBox:~# redis-server /etc/redis/redis-6380.conf
    root@sbc-VirtualBox:~# redis-server /etc/redis/redis-6381.conf
    1
    2
    验证:

    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 6380 ping
    PONG
    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 6381 ping
    PONG
    1
    2
    3
    4
    3.验证主从关系

    查看Master节点replication信息:

    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 6379 info replication

    Replication

    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=126,lag=0
    slave1:ip=127.0.0.1,port=6381,state=online,offset=126,lag=1
    master_replid:1ca0bf14ca2cd79941df7285bf413aa6b8ae921d
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:126
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:126
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    可观察到connected_slaves有2个,分别为:

    slave0:ip=127.0.0.1,port=6380,state=online,offset=126,lag=0
    slave1:ip=127.0.0.1,port=6381,state=online,offset=126,lag=1
    1
    2
    同样在Slave节点也可查看到replication信息:

    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 6380 info replication

    Replication

    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:10
    master_sync_in_progress:0
    slave_repl_offset:252
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:1ca0bf14ca2cd79941df7285bf413aa6b8ae921d
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:252
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:252
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    可观察到Master信息,连接状态正常:

    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    1
    2
    3
    部署Sentinel节点

    1.配置Sentinel1节点

    创建conf文件:

    root@sbc-VirtualBox:~# vim /etc/redis/redis-sentinel-26379.conf

    port 26379
    daemonize yes
    logfile “26379.log”
    dir /opt/soft/redis/data
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sentinel节点本身就是独立的Redis节点,只不过它们有一些特殊,它们不存储数据,只支持部分命令。

    2.启动Sentinel1节点

    root@sbc-VirtualBox:~# redis-sentinel /etc/redis/redis-sentinel-26379.conf
    1
    3.确认Sentinel1节点Sentinel状态

    在Sentinel1节点查看Sentinel状态:

    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 26379 info Sentinel

    Sentinel

    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=1
    1
    2
    3
    4
    5
    6
    7
    8
    配置并启动Sentinel2和Sentinel3节点

    生成配置文件:
    Sentinel2:

    root@sbc-VirtualBox:~# vim /etc/redis/redis-sentinel-26380.conf

    port 26380
    daemonize yes
    logfile “26380.log”
    dir /opt/soft/redis/data
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sentinel3:

    root@sbc-VirtualBox:~# vim /etc/redis/redis-sentinel-26381.conf

    port 26381
    daemonize yes
    logfile “26381.log”
    dir /opt/soft/redis/data
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    启动Sentinel2和Sentinel3:

    root@sbc-VirtualBox:~# redis-sentinel /etc/redis/redis-sentinel-26380.conf
    root@sbc-VirtualBox:~# redis-sentinel /etc/redis/redis-sentinel-26381.conf
    1
    2
    验证Sentinel状态

    连接任意Sentinel节点:

    root@sbc-VirtualBox:~# redis-cli -h 127.0.0.1 -p 26379 info Sentinel

    Sentinel

    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
    1
    2
    3
    4
    5
    6
    7
    8
    可观察到master地址,端口正确。slave节点,sentinel节点数量正确。

    sentinel monitor mymaster127.0.0.163792配置代表sentinel-1节点需要监控127.0.0.1:6379这个主节点,2代表判断主节点失败至少需要2个Sentinel节点同意,mymaster是主节点的别名

    Sentinel 配置说明

    当所有节点启动后,配置文件中的内容发生了变化,体现在三个方面:

    Sentinel节点自动发现了从节点、其余Sentinel节点。
    去掉了默认配置,例如parallel-syncs、failover-timeout参数。
    添加了配置纪元相关参数。
    下面以Sentinel1节点为例:

    Sentinel1节点的conf文件变为了

    port 26379
    daemonize yes
    logfile “26379.log”
    dir “/opt/soft/redis/data”
    sentinel myid b6983fbf6b4527811b724ce5ef0ea08388056e34
    sentinel deny-scripts-reconfig yes
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel config-epoch mymaster 0

    Generated by CONFIG REWRITE

    protected-mode no
    sentinel leader-epoch mymaster 0
    sentinel known-replica mymaster 127.0.0.1 6381
    sentinel known-replica mymaster 127.0.0.1 6380
    sentinel known-sentinel mymaster 127.0.0.1 26381 4d77ba4fbfd1696db44e6302340988f771bbb62a
    sentinel known-sentinel mymaster 127.0.0.1 26380 75cd9743a892825573793c4417e7e8465d65b616
    sentinel current-epoch 0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    port,daemonize,logfile和dir

    port表示Sentinel节点的端口;
    daemonize表示守护进程,开启则Sentinel将在后台运行;
    logfile表示Sentinel节点的日志路径;
    dir表示Sentinel节点的工作目录;

    sentinel monitor mymaster

    sentinel monitor
    1
    Sentinel节点会定期监控主节点,所以从配置上必然也会有所体现,本
    配置说明Sentinel节点要监控的是一个名字叫做,ip地址和端
    口为的主节点。代表要判定主节点最终不可达所需要的票数。一
    般建议将其设置为Sentinel节点的一半加1。
    同时还与Sentinel节点的领导者选举有关,至少要有max(quorum,num(sentinels)/2+1)个Sentinel节点参与选举,才能选出领导者Sentinel,从而完成故障转移。例如有5个Sentinel节点,quorum=4,那么至少要有max(quorum,num(sentinels)/2+1)=4个在线Sentinel节点才可以进行领导者选举
    如:

    sentinel monitor mymaster 127.0.0.1 6379 2
    1
    sentinel down-after-milliseconds

    sentinel down-after-milliseconds
    1
    每个Sentinel节点都要通过定期发送ping命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过了down-after-milliseconds配置的时间且没有有效的回复,则判定节点不可达,(单位为毫秒)就是超时时间。这个配置是对节点失败判定的重要依据。

    sentinel parallel-syncs

    sentinel parallel-syncs
    1
    当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,parallel-syncs就是用来限制在一次故障转移之后,每次向新的主节点发起复制操作的从节点个数。如果这个参数配置的比较大,那么多个从节点会向新的主节点同时发起复制操作,尽管复制操作通常不会阻塞主节点,但是同时向主节点发起复制,必然会对主节点所在的机器造成一定的网络和磁盘IO开销。

    sentinel failover-timeout

    sentinel failover-timeout
    1
    failover-timeout通常被解释成故障转移超时时间,但实际上它作用于故
    障转移的各个阶段:
    a)选出合适从节点。
    b)晋升选出的从节点为主节点。
    c)命令其余从节点复制新的主节点。
    d)等待原主节点恢复后命令它去复制新的主节点。

    sentinel auth-pass

    sentinel auth-pass
    1
    如果Sentinel监控的主节点配置了密码,sentinel auth-pass配置通过添加
    主节点的密码,防止Sentinel节点对主节点无法监控。

    sentinel notification-script

    sentinel notification-script
    1
    sentinel notification-script的作用是在故障转移期间,当一些警告级别的Sentinel事件发生(指重要事件,例如-sdown:客观下线、-odown:主观下线)时,会触发对应路径的脚本,并向脚本发送相应的事件参数。

    sentinel client-reconfig-script

    sentinel client-reconfig-script
    1
    sentinel client-reconfig-script的作用是在故障转移结束后,会触发对应路
    径的脚本,并向脚本发送故障转移结果的相关参数。

    Sentinel的特点

    Redis Sentinel具有以下几个功能:
    ·监控:Sentinel节点会定期检测Redis数据节点、其余Sentinel节点是否
    可达。
    ·通知:Sentinel节点会将故障转移的结果通知给应用方。
    ·主节点故障转移:实现从节点晋升为主节点并维护后续正确的主从关
    系。
    ·配置提供者:在Redis Sentinel结构中,客户端在初始化的时候连接的
    是Sentinel节点集合,从中获取主节点信息

    Redis Sentinel的优势:

    ·对于节点的故障判断是由多个Sentinel节点共同完成,这样可以有效地
    防止误判。
    ·Sentinel节点集合是由若干个Sentinel节点组成的,这样即使个别Sentinel
    节点不可用,整个Sentinel节点集合依然是健壮的。

    原文:https://blog.csdn.net/sunbocong/article/details/85252071

    展开全文
  • 1. 创建哨兵的配置文件sentinel.conf sentinel monitor mymaster 127.0.0.1 6379 1 mymaster :表示监控对象的服务器名称,可以自定义 1: 表示至少有多少哨兵同意迁移 2. 创建三份redis配置文件 在安装Redis时候...
  • 官方已经出1.8.1了,但是docker hub上还停留在1.8.0,于是想自己通过jar包生成镜像 1、下载sentinel-dashboard的jar包 https://github.com/alibaba/Sentinel/releases/download/1.8.1/sentinel-dashboard-1.8.1.jar ...
  • 创建9003和9004两个服务模块! 创建一个消费者模块(84), 使用nacos+sentinel+rebbon+OpenFeign ...-- 这个是自己的抽取公共类.,不加入他也可以--> <dependency> <groupId>com.gaoyonglong
  • 我们使用idea自带的spring Initializr来创建项目: 其他的依赖不都说了,滑到最底下,注意此时的springboot的版本,切记,不然高版本会出现选不了的情况: 选上我们的sentinel即可! 并且在自己的yml文件上加上: ...
  • alibaba官方并没有提供sentinel的docker镜像,目前最新版本是1.8.1,在docker hub上也没有找到此版本已经做好的镜像,所以自己弄了一个,方便大家使用。 部署文件 创建docker-compose.yaml文件 sentinel: image: ...
  • 在前面的一篇,已经说到Sentinel通过INFO命令获得主服务器的信息,然后保存在自己Master属性里(创建SentinelRedisInstance对象),然后主服务器里面的信息还有从服务器的信息,也会通过这些信息与从服务器建立连接...
  • 本人使用的是Ubuntu服务器,进入到自己创建的路径中下载jar包: wget https://github.com/alibaba/Sentinel/releases/download/1.7.2/sentinel-dashboard-1.7.2.jar (二)编写Dockerfile文件 在jar包所在路径下...
  • Google Earth Engine批量下载Sentinel、Landsat、MODIS遥感影像代码一、创建下载任务二、运行下载任务 一、创建下载任务 Google Earth Engine(GEE)云平台不仅算力强大,其遥感数据源也及其丰富,用GEE下载遥感数据...
  • 使用IDM实现批量下载Sentinel-2影像(Python) 需要的工具: IDM下载器:http://www.internetdownloadmanager.com/ sentinelsat包:命令行pip安装即可 pip install sentinelsat 主要流程是,从数据网站选择数据并...
  • 最后的sentinel.conf是我自己创建的 三 、redis的主从复制 redis 一主二从 一个master端 多个slave端,很类似scrapy的分布式爬虫。      - master端可读可写      - slave端只可读,不可写 解决的主要问题...
  • 说明文档一、简介 本项目基于本人的mts模板工程,点击这里查看,本文注重整体技术解决方案,前端工程这里我只提供个具有登录、刷新Token等框架层相关功能,其他具体对应菜单的增删改查就不写了,可以自己实现,有问题...
  • 需要我们程序员自己手工搭建监控平台 没有一套web界面可一个我们进行更加细粒度化的配置流控、速率控制、服务熔断、服务降级 Sentinel的优势 单独一个组件,可以独立出来 直接界面化的细粒度统一配置。 ...
  • Photo@Alibaba Initializr 官网文 |良名背景相信很多人都使用过 start.spring.io来初始化自己的 Spring Boot 工程,这个工具为开发者提供了丰富的可选组件,并且可以选择多种打包方式,大大方便了开发人员的使用。...
  • 相信很多人都使用过 start.spring.io 来初始化自己的 Spring Boot 工程,这个工具为开发者提供了丰富的可选组件,并且可以选择多种打包方式,大大方便了开发人员的使用。最近,阿里的 Nacos、Sentinel 也进入 start....
  • Redis的哨兵模式 实例

    2019-01-10 00:01:26
    在最近的学习中,想着自己实战一下redis的哨兵模式...2、在安装目录下创建sentinel.conf文件(哨兵配置文件) 注意:每个服务器下面都得创建   其中sentinel monitor为固定写法;  [master-group-name] 为自...
  • Redis哨兵机制的默认端口是26379 想启动多个哨兵就在prot文件中加入多个...sentinel monitor 被监控数据库名字(自己起名字) ip port 1 -例如sentinel monitor 127.0.0.0 ip port 1 最后的1是代表有多少个 3.启动哨
  • Linux redis集群

    2019-12-26 14:03:45
    最小的集群至少需要3个master节点。...先在自己redis目录下创建自己集群需要的文件夹 mkdir 7000 7001 7002 7003 7004 7005 redis-4.0.8文件由redis-4.0.8.tar.gz解压得到,其余文件无视 ...
  • 技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152 先来说一下,这里alibaba,可以...还需要在springcloud中自己创建专门的注册中心,等等去写代码,去融合这些东西, 现在springcloud alibaba希望,跟sprin.
  • 1.搭建项目 我们使用idea自带的spring Initializr来创建项目...之后创建自己的项目即可。 2.搭建Linux环境 下载地址:Nacos,本人的版本号为1.2.1的版本,尽量保持一致。 使用xftp将Nacos拖动到Linux环境下,本人的目
  • 08安装nodejs的演示 09安装maven过程 10nacos的安装过程 11sentinel的安装过程 12创建数据库和nacos绑定数据库 13springcloud开源框架的代码运行搭建 14开源框架前端搭建过程 15利用开源项目开发自己的模块 16利用...
  • rufus-runner-源码

    2021-05-11 16:10:29
    鲁弗斯·鲁纳 将包装在一个独立的流程中,包括作业时间安排,日志记录和安全默认值。... # sentinel job that keeps running to prove Rufus is still alive scheduler.run :name => 'no-op', :ever
  • 配置哨兵机制的参数(如果没有sentinel.conf文件,可以先进行创建) # 这个是Redis6379配置内容,其他文件同理新增然后改一下端口即可,26380,和 26381。 #当前Sentinel服务运行的端口 port 26379 # 哨兵监听的主...
  • 一、CacheCloud是做什么的CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少开发人员的...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

自己创建sentinel