Eureka高可用2
在完成Eureka注册中心高可用(多注册中心)之后,我们回顾下之前的配置是这样:
我们发现在这两个位置我们本机测试全部写的localhost,但是实际中是互联网多个计算机协调调用,所以这里需要修改一下,以及下边Eureka操作界面这个位置
这里现在默认显示的格式是:计算机名+application-name+端口号,这在我们实际生产环境中也是非常不利于我们对多服务器的管理,所以我们来修改一下。
- 首先我们将eureka-server-instance-hostname修改为peer1(可以随意修改为项目需要的名字)
- 新增eureka-server-instance-id用于在Eureka界面上显示的名字(默认的命名规则:计算机名+application-name+端口号)
- service-url-defaultZone 原来写的是server2的注册地址
http://localhost2:8082/eureka/
,我们现在修改为http://peer2:8002/eureka/(其中peer2为server2的服务器命名) - register-with-eureka 和 fetch-registry这两个默认值就是true所以不需要添加
按照同样的方法修改我们的server2的配置文件(server2的端口为8002)
spring:
application:
name: server
server:
port: 8002
eureka:
server:
instance:
hostname: peer2
instance-id: ${spring.application.name}:${server.port}:${eureka.instance.hostname}
client:
service-url:
defaultZone: http://peer1:8001/eureka/
现在我们分别重启两个工程,我们在启动server1(peer1)节点的时候发现现在系统并不能启动,并且报错:
异常日志显示UnknownHostException,找不到名字叫peer1的服务节点。我们之前这里配置的是
eureka.instance.hostname=localhost
现在修改为了
eureka.instance.hostname=peer1
localhost默认是指向我们计算机本机地址,而peer1是我们自定义的,所以认识不到了,所以这里的解决方案是让我们的系统认识peer1是什么就可以解决了。
打开
C:\Windows\System32\drivers\etc
这个路径,找到hosts文件,在里边做如下修改
这里其实就是说peer1指向地址为127.0.0.1(在真实主机上的时候需要修改成当前服务器的IP地址)
再次观察页面,首先进入server1的
我们看到DS Replicas这次开始显示类容了:peer2(就是server2的地址),而DS Replicas位置显示的含义是***Eureka Server相邻节点,互为一个集群*** 现在连个Eureka server就达到了互相注册的效果,我们把鼠标移动到peer2上边,注意浏览器左下角的访问连接
peer2:8002/eureka/
就证明了当前server1指向集群的相邻节点为peer2(host文件配置的ip地址):8002/eureka/这个域,同样的切换到server2的界面我们也可以看到
server2反向指向了server1节点
我们在回到server1Eureka界面看界面下部分的General Info这一部分的信息提示:
registered-replicas代表的注册副本,我们看到它指向了peer2
available-replicas代表可用副本,也指向了peer2这个节点
中间的unavailable-replicas——不可用副本为空,代表当前高可用Eureka两个注册中心都是可用的
这里算是完成了eureka server的高可用性
我们再回到我们之前的服务节点上去,product节点之前配置如下:
我们现在可以让product注册到多个注册中心去了,当某一台注册中心发生故障或者网络问题,它所注册的另外一个注册中心也能让它正常对外提供服务,具体配置:
在注册这个位置同时向之前配置的peer1,peer2两个注册中心注册
需要特别注意的是:现在环境中product\peer1\peer2不可能在同一太服务器上,一定要向之前在host文件中首先配置peer1指向的IP地址,否则不知道peer1代表的是什么