发布时间:2025-06-24 19:17:59  作者:北方职教升学中心  阅读量:513


注册服务至单实例Eureka Server

2.1 pom文件
<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-actuator</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>    </dependency>    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>    </dependency></dependencies>
2.2 配置文件
server.port=8082spring.application.name=eureka02eureka.client.register-with-eureka=trueeureka.client.fetch-registry=trueeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8080/eureka/eureka

配置文件说明:

  • server.port:客户端服务启动端口,与Eureka Server的端口无关
  • spring.application.name:服务名,在微服务系统中就是微服务名,也是注册到Eureka Server后的名字,在微服务调用的时候,就是用这个名字进行调用的
  • eureka.client.register-with-eureka:是否向注册中心注册自己
  • eureka.client.fetch-registry:是否要获取已经注册了的服务
  • eureka.client.service-url.defaultZone:Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址
2.3 启动类
@EnableEurekaClient@SpringBootApplicationpublic class EurekaTest02 {    public static void main(String[] args) {        SpringApplication.run(EurekaTest02.class, args);    }}
2.4 查看注册结果

三、这里选择的是Tomcat9。注册服务至集群Eureka Server

6.1 pom文件

与单实例版一致:

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-actuator</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>    </dependency>    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>    </dependency></dependencies>
6.2 配置文件
server.port=8081spring.application.name=eureka01eureka.client.register-with-eureka=trueeureka.client.fetch-registry=trueeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8081/eureka/v2
6.3 启动类
@EnableEurekaClient@SpringBootApplicationpublic class EurekaTest01 {    public static void main(String[] args) {        SpringApplication.run(EurekaTest01.class, args);    }}
6.4 查看注册结果

七、单实例Eureka Server

部署目标:

IP\信息操作系统架构规格
192.168.189.41Centos7.9x862c4g
1.1 依赖环境准备
1.1.1 JDK 8

(1)上传安装包

JDK安装包已经上传到:https://cloud.189.cn/t/UBB7NnUN3eeu (访问码:th44)
将安装包上传到目标部署服务器/root/目录下,并执行命令:

cd /root/tar -zxvf jdk-8u341-linux-x64.tar.gzrm -rf jdk-8u341-linux-x64.tar.gzmv jdk1.8.0_341 jdkmv jdk /usr/local/

(2)配置环境变量

配置环境变量:

vi /etc/profile# 追加如下内容:export PATH=/usr/local/jdk/bin:$PATHexport CLASSPATH=/usr/local/jdk/lib:$CLASSPATH# 使环境变量对当前会话生效source /etc/profile

(3)验证

java

结果如下:

安装完成。

3.2 配置本地域名

对三台机器都执行:

vi /etc/hosts# 添加如下内容,三台主机的配置相同:192.168.189.41 www.eureka41.com192.168.189.42 www.eureka42.com192.168.189.43 www.eureka43.com

3.3 修改主机名
vi /etc/hostname# 修改为各自主机的域名:www.eureka41.com

备注:这里配置主机名,可以类比在嵌入式部署时候的eureka.instance.hostname

修改完毕后重启主机:

reboot
3.3 配置集群
3.3.1 eureka-client.properties

修改/usr/local/tomcat/webapps/eureka/WEB-INF/classes/eureka-client.properties文件,将“eureka.serviceUrl.default=http://localhost:8080/eureka/v2/”替换为:

eureka.serviceUrl.default=http://www.eureka41.com:8080/eureka/v2/,http://www.eureka42.com:8080/eureka/v2/,http://www.eureka43.com:8080/eureka/v2/eureka.serviceUrl.default=http://192.168.189.41:8080/eureka/v2/,http://192.168.189.42:8080/eureka/v2/,http://192.168.189.43:8080/eureka/v2/

eureka-client.properties部分参数说明

  • eureka.port:Eureka Server的端口,与客户端无关,可以类比在嵌入式部署时候的server.port
  • eureka.name:如果要搭建集群,那么三个节点的name值必须一致,Eureka会根据这个值判断是否是同一个服务,如果是的话,才会有replica的概念,可以类比在嵌入式部署时候的spring.application.name
  • eureka.serviceUrl.default:配置这个参数,就相当于Server充当了客户端,将自己的信息也注册到了Server中。
    + [三、

    1.1.2 Tomcat

    (1)版本选择

    Tomcat版本选择可以参考官方给出的表格:

    我们jdk选择的是1.8,因此Tomcat就选择9或者10版本。

    4.1 编写系统服务
    vi /usr/lib/systemd/system/tomcat.service# 内容如下:[Unit]Description=tomcat[Service]Environment="JAVA\_HOME=/usr/local/jdk"Type=forkingExecStart=/usr/local/tomcat/bin/startup.shExecStop=/usr/local/tomcat/bin/stutdown.shRestart=always[Install]WantedBy=multi-user.target
    4.2 配置开机自启
    systemctl daemon-reloadsystemctl enable tomcat

    五、高可用集群部署](#_214)+ - [3.1 统一配置](#31__226) - [3.2 配置本地域名](#32__231) - [3.3 修改主机名](#33__247) - [3.3 配置集群](#33__267) - * [3.3.1 eureka-client.properties](#331_eurekaclientproperties_270) * [3.3.2 eureka-server.properties](#332_eurekaserverproperties_288) - [3.4 重启集群](#34__297) - [3.5 查看集群搭建成果](#35__307)+ [四、负载均衡

    部署目标:

    IP\信息操作系统架构规格
    192.168.189.50Centos7.9x862c4g

    其实使用Nginx做负载均衡和使用Keepalived的浮动VIP都是可以的,具体看业务需求。高可用集群部署

    部署目标:

    IP\信息操作系统架构规格
    192.168.189.41Centos7.9x862c4g
    192.168.189.42Centos7.9x862c4g
    192.168.189.43Centos7.9x862c4g
    3.1 统一配置

    按照单实例的部署步骤,将192.168.189.42与192.168.189.43同样部署好Eureka。

    (1)下载源码

    源码下载地址:https://cloud.189.cn/t/qqu26jQRbMvi (访问码:tan2)
    (或者直接下载已经编译好的:https://cloud.189.cn/t/bamIRnrINzyq (访问码:mn9w))

    (2)编译
    在本地机器编译:

    cd eureka/gradlew clean build

    编译完成后,在下面的目录中找到编译成果:

    目录说明
    ./eureka-server/build/libs/eureka-server-XXX.warTomcat中运行的war包
    ./eureka-server/build/libs/eureka-server-XXX-SNAPSHOT-javadoc.jarJavadoc
    ./eureka-client/build/libs/eureka-client-XXX.jar客户端jar包
    ./eureka-client/build/libs/eureka-client-XXX-SNAPSHOT-javadoc.jarJavadoc
    1.3 上传并启动

    将war包重命名为eureka.war,并上传到Tomcat的webapps目录下:

    访问http://ip:8080/eureka/,查看结果:

    至此,Eureka单机版安装成功!

    二、可以类比在嵌入式部署时候的eureka.client.service-url.defaultZone

  • eureka.eurekaServer.context:指定 Eureka 服务器的上下文路径(Context Path)
3.3.2 eureka-server.properties

关闭eureka server的自我保存模式,修改/usr/local/tomcat/webapps/eureka/WEB-INF/classes/eureka-server.properties文件,追加如下内容:

eureka.enableSelfPreservation=false
3.4 重启集群

在三台机器上都执行如下命令:

shutdown.shstart.sh
3.5 查看集群搭建成果

四、服务调用](#_495)+ - [7.1 消费者](#71__498) - * [7.1.1 pom文件](#711_pom_501) * [7.1.2 配置文件](#712__544) * [7.1.3 接口类](#713__557) * [7.1.4 启动类](#714__586) - [7.2 生产者](#72__599) - * [7.2.1 pom文件](#721_pom_602) * [7.2.2 配置文件](#722__645) * [7.2.3 接口类](#723__658) * [7.2.4 启动类](#724__686) - [7.3 调用结果](#73__700)

一、

5.1 安装Nginx

参考:
尚硅谷笔记

5.2 配置Nginx
vi /usr/local/nginx/conf/nginx.conf# 修改成如下内容:worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    upstream httpds {        server 192.168.189.41:8080;        server 192.168.189.42:8080;        server 192.168.189.43:8080;    }    server {        listen       8081;        server_name  eureka_server;        location /eureka {            proxy_pass http://httpds/eureka;            proxy_set_header Host $host:$server_port;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Proto $scheme;            proxy_set_header X-Forwarded-Host $host;            proxy_set_header X-Forwarded-Port $server_port;            proxy_set_header X-Forwarded-Server $host;            proxy_set_header X-Forwarded-Scheme $scheme;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}
5.3 查看效果

六、配置系统服务

独立部署的Eureka是基于Tomcat的,因此只需要把Tomcat注册到系统服务即可。配置系统服务](#_312)+ - [4.1 编写系统服务](#41__317) - [4.2 配置开机自启](#42__339)+ [五、负载均衡](#_347)+ - [5.1 安装Nginx](#51_Nginx_359) - [5.2 配置Nginx](#52_Nginx_364) - [5.3 查看效果](#53__418)+ [六、

(2)上传安装包

Tomcat安装包已经上传到:https://cloud.189.cn/t/6FjiqiiYfuIr (访问码:urj4)
将安装包上传到目标部署服务器/root/目录下,并执行命令:

cd /root/tar -zxvf apache-tomcat-9.0.82.tar.gzmv apache-tomcat-9.0.82 tomcatmv tomcat /usr/local/tomcatrm -rf apache-tomcat-9.0.82.tar.gz

(3)配置环境变量

vi /etc/profile# 追加如下内容:export PATH=/usr/local/tomcat/bin:$PATH# 使环境变量对当前会话生效source /etc/profile

(4)验证
在任意目录下执行命令:

startup.sh

在确保防火墙是关闭的条件下,使用浏览器访问http://ip:8080,效果如下:

Tomcat安装完成!

1.2 下载源码与编译

可以使用已经编译好的:https://mvnrepository.com/artifact/com.netflix.eureka/eureka-server

这里如果使用的是Tomcat9,那么Euraka的版本不能是2.x,会有不兼容的问题。服务调用

7.1 消费者
7.1.1 pom文件
<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-actuator</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>    </dependency>    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-devtools</artifactId>        <scope>runtime</scope>        <optional>true</optional>    </dependency></dependencies>
7.1.2 配置文件
server.port=8082spring.application.name=eureka-separate-client-consumereureka.client.register-with-eureka=trueeureka.client.fetch-registry=trueeureka.client.service-url.defaultZone=http://192.168.189.41:8080/eureka/v2,http://192.168.189.42:8080/eureka/v2,http://192.168.189.43:8080/eureka/v2
7.1.3 接口类
@RestController@RequestMapping("/eureka")public class EurekaConsumerController {    @Autowired    private RestTemplate restTemplate;
注册服务至集群Eureka Server](#Eureka_Server_423)+ - [6.1 pom文件](#61_pom_426) - [6.2 配置文件](#62__465) - [6.3 启动类](#63__477) - [6.4 查看注册结果](#64__490)+ [七、