spring-cloud 学习笔记 - 外传(1)

2021年11月24日 阅读数:1
这篇文章主要向大家介绍spring-cloud 学习笔记 - 外传(1),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

[外传] Spring Cloud Eureka Server服务注册中心高可用方案

在微服务架构中,做为核心的服务注册中心是整个系统的关键,它的高可用性决定了系统的总体的稳定性。html

在前面的学习中咱们讲到,Eureka Servers是单点运行的,可是它自己也算是一个微服务,因此它能够再多个Eureka Server实例中互相注册,这样就能够构建一个高可用的Eureka Server的服务集群。java

(注册中心的高可用方案图)nginx

注册中心的搭建

1. 建立项目

建立spring boot项目 spring-cloud-eureka-server,在SpringCloudEurekaServerApplication中添加EnableEurekaServer注解:spring

@SpringBootApplication 
@EnableEurekaServer 
public class SpringCloudEurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaServerApplication.class, args);
    }
} 

2. 添加配置

因为咱们须要运行三个服务,因此咱们须要准备三个配置文件:服务器

application-peer1.properties:架构

spring.application.name=spring-cloud-eureka-server
server.port=9001
eureka.client.service-url.defaultZone=http://192.168.1.110:9002/eureka/,http://192.168.1.110:9003/eureka/

application-peer2.properties:app

java spring.application.name=spring-cloud-eureka-server
server.port=9002
eureka.client.service-url.defaultZone=http://192.168.1.110:9001/eureka/,http://192.168.1.110:9003/eureka

application-peer3.properties:负载均衡

java spring.application.name=spring-cloud-eureka-server
server.port=9003
eureka.client.service-url.defaultZone=http://192.168.1.110:9001/eureka/,http://192.168.1.110:9002/eureka/

从上面的配置能够看出来,咱们使用三个服务,而且将其两两注册,这样咱们的就算是其中一个down掉,依然能够正常运行。maven

3. 打包运行

使用maven命令将项目进行打包。微服务

使用java命令来启动项目:

java -jar spring-cloud-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar spring-cloud-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

启动成功后就能够在注册中心页面看见对应的另外两个注册中心了:

4. 微服务注册

服务注册中心运行起来之后咱们就能够将服务注册到注册中心了,因为三个注册中心都是互相关联的,因此咱们只须要在其中一个注册咱们的服务就能够在其余两个注册中心看见咱们的服务了。

固然咱们也可使用nginx、zuul等服务网关对服务进行一个负载均衡,这里咱们使用nginx对服务进行负载均衡,具体设置以下:

worker_processes 1;

events { worker_connections 1024; }

http { include mime.types; default_type application/octet-stream;

sendfile        on;

keepalive_timeout  65;

upstream eureka-server{
    server 192.168.1.110:9001;
    server 192.168.1.110:9002;
    server 192.168.1.110:9003;
}

server {
    listen       80;
    server_name  192.168.1.110;

    location / {
        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://eureka-server/; 
    }

    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}

最后,咱们须要修改微服务的配置文件,将咱们的高可用注册中心设置进去:

spring.application.name=spring-cloud-eureka-client

server.port=1001

eureka.client.service-url.defaultZone=http://192.168.1.110/eureka/ 

结束

本文部分文原本源于互联网

感谢如下文章提供的灵感和帮助