搭建負載均衡的Eureka Server集羣

前言

爲什麼要搭建集羣呢?爲了避免 Eureka Server的失效,Eureka Server 高可用環境需要部署兩個及以上Eureka Server,它們互相向對方註冊。我這有兩個Eureka Server服務註冊中心,端口分別是6001 和 6002,下面主要說一下是如何搭建的
在這裏插入圖片描述

搭建步驟

下面說一下兩個Eureka Server的配置,它兩的配置基本上是一樣的,不一樣的地方我會着重說明一下,如果對單機版的Eureka Server 不瞭解的同學可以看下我上篇博客. 傳送門:搭建 Eureka Server 服務註冊中心

  1. 配置啓動類
@EnableEurekaServer
@SpringBootApplication
public class EurekaServer_6001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer_6001.class, args);
    }
}

  1. 配置application.yml文件(這個地方少有不同)
    端口號6001:
server:
  port: 6001

eureka:
  server:
    enable-self-preservation: false # 禁用自我保護模式
  instance:
    hostname: eureka6001.com # eureka 服務端的實例名稱
  client:
      registerWithEureka: false # 服務註冊,false表示不將集資註冊到Eureka服務中心
      fetchRegistry: false # 服務發現 false表示自己不從Eureka服務中獲取註冊信息
      serviceUrl: # Eureka客戶端與Eureka服務端的交互地址,  集羣版配置對方的地址  單機版配置自己(如果不配置默認端口是8761)
        defaultZone: http://localhost:6002

端口號6002:

server:
  port: 6002

eureka:
  server:
    enable-self-preservation: false # 禁用自我保護模式
  instance:
    hostname: eureka6002.com  # eureka 服務端的實例名稱
  client:
      registerWithEureka: false # 服務註冊,false表示不將集資註冊到Eureka服務中心
      fetchRegistry: false # 服務發現 false表示自己不從Eureka服務中獲取註冊信息
      serviceUrl: # Eureka客戶端與Eureka服務端的交互地址,  集羣版配置對方的地址  單機版配置自己(如果不配置默認端口是8761)
        defaultZone: http://localhost:6001
  1. 然後我們分別啓動6001和6002,可見如下圖:

在這裏插入圖片描述
在這裏插入圖片描述
我們可以幾點紅框裏的localhost回跳到另一個Eureka Server裏,這是我們的進羣就搭建好了
4. 現在啓動兩個微服務註冊到剛剛搭建的Eureka集羣上,兩個微服務連接了兩個不同的數據庫,下面的主要是兩個服務提供者的配置,其他代碼就不一一列出來了.

spring:
  application:
    name: microservice-product # 服務與服務之間的調用一般都是根據這個name
eureka:
  client:
    registerWithEureka: true # 服務註冊開關
    fetchRegistry: true # 服務發現開關
    serviceUrl: # 註冊到哪一個Eureka Server服務註冊中心,多箇中間用逗號分隔
      #defaultZone: http://localhost:6001/eureka
      defaultZone: http://localhost:6001/eureka,http://localhost:6002/eureka
  instance:
    instanceId: ${spring.application.name}:${server.port}
    prefer-ip-address: true  # 開啓顯示IP地址
  1. 搭建消費者
    創建ConfigBean配置類
@Configuration
public class ConfigBean {

    @LoadBalanced  //開啓負載均衡
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

       創建消費者接口


@RestController
public class ProductController_Consumer {

	//這是服務提高着的url前綴
    private static final String REST_URL_PREFIX = "http://microservice-product";
    
    @Autowired
    private RestTemplate restTemplate;
    
    @RequestMapping(value = "/consumer/product/list")
    public List<Product> list() {
        return restTemplate.getForObject(REST_URL_PREFIX + "/product/list", List.class);
    }
}

       創建消費者application.yml

eureka:
  client:
    registerWithEureka: false # 服務註冊,false表示不將本消費者註冊到 Eureka 服務器

    fetchRegistry: true # 服務發現,true從 Eureka 服務器中獲取註冊信息
    serviceUrl:
      defaultZone: http://localhost:6001/eureka,http://localhost:6002/eureka

       配置啓動類

@EnableEurekaClient
@SpringBootApplication
public class ProductConsumer_80 {
    public static void main(String[] args){
        SpringApplication.run(ProductConsumer_80.class,args);
    }
}
  1. 開始測試,訪問 http://localhost:81/consumer/product/list

在這裏插入圖片描述
再次訪問
在這裏插入圖片描述
可見兩次訪問的結果並不相同,此致搭建負載均衡的Eureka Server集羣就算完畢了,負載均衡也有很多規則,我們這裏默認的輪詢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章