springcloud-高可用部署


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溝通,多謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM