zoukankan      html  css  js  c++  java
  • springcloud-高可用部署-copy

    1.场景描述

    前端时间只简单介绍了下springcloud的高可用方案(springcloud高可用方案),今天详细介绍下如何实施springcloud的高可用部署。

    2.解决方案

    2.1 架构方案

    2.1.1 架构图

    2.1.2 访问地址

    (1)Gateway访问地址:

     http://10.192.168.11:9000/client/
    

    (2)Client地址:

    http://10.192.168.14:9001,http://10.192.168.14:9002/,http://10.192.168.15:9003/,http://10.192.168.15:9004/
    

    (3)Eureka地址:

    http://10.192.168.12:8761/,http://10.192.168.13:8761/
    
    2.1.3 方案说明

    (1)从springcloud架构中,可以了解到,注册中心和网关会成为单点故障率比较高的点,有可能会成为瓶颈。

    (2)高可用方案大概思路是:部署多个注册中心和多个应用,实现单点故障后自动切换,无须人工干预。(网关高可用最后有说明)

    2.2 注册中心部署

    需修改配置文件:application.yml。

    2.2.1 注册中心配置

    (1)注册中心1(10.192.168.12)

    spring:
      application:
        name: registry
    server:
      port: 8761
    eureka:
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://10.192.168.13:8761/eureka
    

    (2)注册中心2(10.192.168.13)

    spring:
      application:
        name: registry
    server:
      port: 8761
    eureka:
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://10.192.168.12:8761/eureka
    
    2.2.2 说明

    重点是defaultZone这个配置,注册中心1要作为客户端配置注册中心2的服务地址,注册中心2要作为客户端配置注册中心1的服务地址,这样就实现了互为注册,并且还有最重要的一点,注册的客户端也会在注册中心之间相互同步。

    2.3 应用部署

    2.3.1 应用配置文件

    需修改配置文件:application.yml

    eureka:
        client:
            service-url:
                defaultZone:  http://10.66.211.12:8761/eureka/,http://10.66.211.13:8761/eureka/
            healthcheck:
                enabled: true
            instance:
                lease-expiration-duration-in-seconds: 30
                lease-renewal-interval-in-seconds: 10
            registry-fetch-interval-seconds: 5
    server:
        port: 9001
    spring:
        application:
             name: client
    
    

    说明

    重点还是defaultZone这项配置,这里要写成两个注册中心的地址,以逗号分开,这样一台出现单点故障的话,另一台还能正常访问,并且故障注册中心恢复后,会自动从另一台注册中心同步注册客户端信息。

    2.3.2 应用部署

    (1)将注册服务客户端在多台服务器部署,同一台服务器的话,以端口号区分下,只部署一台的话,可以使用默认端口号。

    (2)本项目是使用了在10.192.168.14和10.192.168.15服务器上都部署了两个应用实例。

    其中项目配置文件application.yml如上,重点说明:

    spring:
        application:
             name: client
    

    其中:client是注册的名称,部署的实例都要是这个,路由会根据名称来查找应用,例如本项目部署了4个应用实例,默认实行轮询访问的方式。

    2.4 高可用访问

    访问地址(路由地址):

     http://10.192.168.11:9000/client/
    

    请求会在四个应用实例(9001-9004)之间进行轮询访问,这样就实现了注册中心与应用客户端的高可用。

    2.5 关于网关高可用

    关于网关的高可用,我们没有实际部署,不过可以参看greenplum的高可用方案(Greenplum高可用真的高吗?),结合keepalived来实现网关的高可用,参考架构图:


    I'm 软件老王,如果觉得还可以的话,关注下呗!如有不准确或疑问的地方,可通过讨论区、QQ沟通,多谢!

  • 相关阅读:
    JVM-压缩指针
    JVM-Java GC分析
    MySQL 技巧
    Tomcat启动web项目报Bad version number in .class file (unable to load class ...)错误的解决方法
    关于web.xml中的<welcome-file-list>中的默认首页资料
    JS传递中文参数出现乱码的解决办法
    jquery实现奇偶行赋值不同css值
    MyBatis传入多个参数的问题
    从MYSQL数据库查出指定格式的日期
    jquery 操作实例一
  • 原文地址:https://www.cnblogs.com/hanease/p/14520621.html
Copyright © 2011-2022 走看看