九、(Eureka篇)集群Eureka 搭建

一、EurekaServer 多節(jié)點(diǎn)搭建

1、目標(biāo):如下圖,這一步我們建立兩個(gè) EurekaServer 節(jié)點(diǎn),端口分別為7001和7002,然后讓這兩個(gè)節(jié)點(diǎn)之間可以【互相注冊,相互守望】

image.png

2、參照 cloud-eureka-server7001 新建 moudle cloud-eureka-server7002

參照《七、(Eureka篇)單機(jī)Eureka 服務(wù)端和客戶端配置》(http://www.itdecent.cn/p/02fc3c38b315)來新建

3、修改yml

cloud-eureka-server-7001 的 yml 文件修改如下。

(1)eureka.instance.hostname:之前的服務(wù)名 hostname 都是 localhost,現(xiàn)在多個(gè)節(jié)點(diǎn)不能用同一個(gè)名字了,以示區(qū)分,分別用 eureka7001.com 和 eureka7001.com
(2)eureka.client.service-url.defaultZone:相互注冊,所以 7001 注冊進(jìn) 7002 , 7002 注冊進(jìn)7001中
server:
  port: 7001

eureka:
  instance:
#    hostname: localhost      #eureka 服務(wù)端的實(shí)例名稱
    hostname: eureka7001.com      #eureka 服務(wù)端的實(shí)例名稱
  client:
    register-with-eureka: false     #false表示不向注冊中心注冊自己
    fetch-registry: false       #是否去注冊中心fetch信息,false表示自己就是注冊中心,所以自己不必找自己去檢索服務(wù)
    service-url:
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/    #設(shè)置與eureka server交互的地址查詢服務(wù)和注冊服務(wù)都需要依賴這個(gè)地址
      defaultZone: http://eureka7002.com:7002/eureka/    #設(shè)置與eureka server交互的地址查詢服務(wù)和注冊服務(wù)都需要依賴這個(gè)地址


同理,cloud-eureka-server-7002 的 yml 文件修改如下圖

server:
  port: 7002

eureka:
  instance:
    hostname: eureka7002.com      #eureka 服務(wù)端的實(shí)例名稱
  client:
    register-with-eureka: false     #false表示不向注冊中心注冊自己
    fetch-registry: false       #是否去注冊中心fetch信息,false表示自己就是注冊中心,所以自己不必找自己去檢索服務(wù)
    service-url:
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/    #設(shè)置與eureka server交互的地址查詢服務(wù)和注冊服務(wù)都需要依賴這個(gè)地址
      defaultZone: http://eureka7001.com:7001/eureka/    #設(shè)置與eureka server交互的地址查詢服務(wù)和注冊服務(wù)都需要依賴這個(gè)地址

4、修改 hosts 文件中的域名映射

hosts文件地址:C:\Windows\System32\drivers\etc,需要用管理員權(quán)限才能修改。


image.png

5、此時(shí)先后啟動(dòng) 7001 和 7002

在瀏覽器中分別輸入 http://http://eureka7001.com:7001http://eureka7002.com:7002,可以看到他們之間相互注冊

7001.png

二、業(yè)務(wù)模塊 cloud-payment-service 多節(jié)點(diǎn)搭建

1、新建moudle moudle cloud-payment-service8002

(1)參照 cloud-payment-service8001 ,新建moudle cloud-payment-service8002,修改一下啟動(dòng)類名和yml 中的端口,改為 8002
(2)為了方便區(qū)分調(diào)用的是哪個(gè)接口,在 controller 中打印調(diào)用的端口,如下圖
image.png

2、修改 yml ,8001 和 8002都要修改

eureka.client.service-url.defaultZone:之前是注冊到單節(jié)點(diǎn) eureka 上,現(xiàn)在注冊到多個(gè)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)地址都要加上。所以該值修改為:http://http://eureka7001.com/eureka,http://http://eureka7001.com/eureka
image.png

3、修改 cloud-consumer-order80 服務(wù)中 OderController 調(diào)用 支付模塊的服務(wù)地址。

該地址就是 支付模塊 中 yml 配置的服務(wù)名


image.png

image.png

4、負(fù)載均衡

使用 @LoadBalanced 賦予 RestTemplate 負(fù)載均衡的能力。
修改 cloud-consumer-order80 服務(wù)的配置類 ApplicationContextConfig.java

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced  //使用 @LoadBalanced 賦予 RestTemplate 負(fù)載均衡的能力
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

5、按順序啟動(dòng),調(diào)用接口測試

(1)先啟動(dòng) EurekaServer 的所有節(jié)點(diǎn):7001和7002。
(2)啟動(dòng)支付模塊:8001 和 8002
(3)啟動(dòng)消費(fèi)者模塊:80

在 eureka 的 dashboard 可以看到我們注冊了 8001 和 8002 兩個(gè) 支付模塊 的節(jié)點(diǎn)

image.png

多次訪問消費(fèi)模塊,查看返回信息中的端口號是 8001 和 8002 交替展示,說明負(fù)載均衡實(shí)現(xiàn)了輪詢策略。到此,集群 Eureka 的搭建成功!

image.png
image.png

三、actuator 微服務(wù)信息完善

actuator 可以用來監(jiān)控、管理、控制 springBoot項(xiàng)目,比如健康檢查、資源使用情況,接口訪問情況等??梢酝ㄟ^常用的 http 接口訪問的方式來實(shí)現(xiàn)。

我們的目的是為了像下圖一樣:

1、實(shí)例名稱自定義,方便區(qū)分
2、鼠標(biāo)懸停在實(shí)例名稱上時(shí),左下角展示 ip+port 信息

在 application.yml 中加入針對實(shí)例的如下配置即可:

instance.instance-id:=order80 當(dāng)前實(shí)例id
instance.prefer-ip-address:=true 是否展示ip地址信息
server:
  port: 80

spring:
  application:
    name: cloud-order-service

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: order80    #當(dāng)前實(shí)例id
    prefer-ip-address: true    #是否展示ip地址信息
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容