从日志中可以明确看到核心错误原因:
- 端口超出有效范围:
port out of range:80812
(Java 中端口号的有效范围是0-65535
,80812 超过了最大值 65535,属于无效端口); - Tomcat 无法启动:因无效端口导致 Tomcat 连接器启动失败,进而 Eureka 服务启动报错。
一、第一步:修正 Eureka 服务的端口配置(最关键)
问题根源是 server.port
配置为 80812(无效端口),需将其改为 65535 以内的有效端口(Eureka 集群常用端口建议:8761、8762、8763 等,避免与其他服务冲突)。
操作步骤:
- 打开 Eureka 服务(
eureka-server2
)的配置文件(application.yml
或application.properties
); - 找到
server.port
配置项,将值改为有效端口(如 8762,假设第一个 Eureka 节点用 8761):- YAML 格式示例:
server: port: 8762 # 改为 65535 以内的端口,如 8762、8082 等
- Properties 格式示例:
server.port=8762 # 同样改为有效端口
- YAML 格式示例:
- 保存配置文件,重新尝试启动 Eureka 服务。
二、第二步:检查 Eureka 集群的相互注册配置(避免集群节点配置错误)
若你在搭建 Eureka 集群(多节点),还需确保每个节点的 eureka.client.service-url.defaultZone
配置正确(指向其他 Eureka 节点的地址,而非自身无效端口),避免因集群配置错误导致启动异常。
集群配置示例(以 2 个节点为例):
假设你有 2 个 Eureka 节点,分别为 eureka-server1
和 eureka-server2
:
- eureka-server1 配置(端口 8761):
server: port: 8761 # 有效端口 eureka: client: register-with-eureka: true # 集群节点需相互注册(单机可设为 false) fetch-registry: true # 集群节点需拉取其他节点的服务列表 service-url: defaultZone: http://localhost:8762/eureka/ # 指向 eureka-server2 的地址(端口 8762) instance: hostname: eureka-server1 # 可选,集群节点建议配置不同 hostname
- eureka-server2 配置(端口 8762):
server: port: 8762 # 有效端口,与 server1 不重复 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka/ # 指向 eureka-server1 的地址(端口 8761) instance: hostname: eureka-server2
注意事项:
register-with-eureka: true
和fetch-registry: true
:集群模式下必须设为true
(单机模式可设为false
,避免自我注册);defaultZone
:需填写其他 Eureka 节点的 正确地址+有效端口(如http://localhost:8761/eureka/
),不可填写自身端口或无效端口。
三、第三步:验证端口是否被占用(避免启动冲突)
若修正端口后仍报错“端口被占用”,需检查目标端口是否已被其他进程占用:
Windows 系统检查端口占用:
- 打开 命令提示符(CMD),输入以下命令(以端口 8762 为例):
netstat -ano | findstr "8762"
- 若输出结果中包含
LISTENING
,记录最后一列的 **PID(进程ID)**; - 打开 任务管理器 → 切换到“详细信息”标签 → 找到对应 PID 的进程 → 右键“结束任务”,释放端口。
Linux/Mac 系统检查端口占用:
- 打开终端,输入命令(以端口 8762 为例):
lsof -i:8762 # 查看占用端口的进程 # 或 netstat -tuln | grep 8762
- 若有占用,执行
kill -9 进程ID
结束进程(如kill -9 1234
)。
四、第四步:重启 Eureka 服务并验证
- 确保上述配置修改完成且保存;
- 重新启动 Eureka 服务(
eureka-server2
); - 若启动成功,访问 Eureka 控制台验证(如节点 2 端口 8762,访问
http://localhost:8762/eureka/
):- 控制台顶部会显示“Registered-replicas”(已注册的集群副本),如
http://eureka-server1:8761/eureka/
,说明集群节点相互注册成功; - 若只有单个节点,控制台会显示“no replicas available”(无副本),属于正常现象。
- 控制台顶部会显示“Registered-replicas”(已注册的集群副本),如
总结
本次问题的核心是“无效端口 80812”,解决优先级:
- 修正
server.port
为 65535 以内的有效端口 → 2. 检查 Eureka 集群的相互注册配置 → 3. 释放端口占用 → 4. 重启验证。
按此步骤操作后,Eureka 服务即可正常启动,后续可继续扩展集群节点(如 8763、8764),确保每个节点端口不重复且相互注册正确。