怎样搭建eureka集群(war包版)?
在之前的文章中,我们介绍了怎么样部署一个单机版本的eureka服务,但是从生产环境的角度来说,你最希望的是什么?
没错,就是一个具备高可用能力的eureka集群了。那好,在接下来的部分,我们就通过一个一个的步骤,来向你展示,搭建一个eureka集群,最关键的步骤和手段。
首先,我们先来看下搭建eureka集群的前置条件
1、前提条件
- jdk (1.8.0_212)
- tomcat (9.0.63)
- eureka war包(1.10.17,下载地址:https://search.maven.org/search?q=eureka-server)
说明:可以根据自己的环境,选择对应的版本即可。但是,jdk必须要1.8版本以上的
2、主机规划
本次演示的是,部署3个节点的eureka集群,将使用如下的主机进行eureka集群的部署:
- nccztsjb-node-23
- nccztsjb-node-24
- nccztsjb-node-25
在每个主机节点,都配置如下的hosts解析:
# 将IP-主机名的映射关系写入hosts文件中 cat <<EOF >> /etc/hosts # hosts for eureka cluster 172.20.58.83 nccztsjb-node-23 172.20.58.65 nccztsjb-node-24 172.20.58.18 nccztsjb-node-25 EOF # 确认主机名的解析已经正确的配置 cat /etc/hosts
3、修改eureka client配置
通过eureka服务中的client的配置,将eureka中注册的信息复制到不同的节点中。
在每个节点的tomcat的webapps目录中,做如下的操作:
- 解压eureka
cd apache-tomcat-9.0.63/webapps/ \ && wget -q -O eureka.war http://172.20.56.117/middleware/eureka/eureka-server-1.10.17.war \ && unzip -q eureka.war -d eureka
- 修改eureka-client.properties配置文件
# 设置其他的eureka的地址 sed -i "/eureka.serviceUrl.default/ceureka.serviceUrl.default=http://nccztsjb-node-23:8080/eureka/v2/,http://nccztsjb-node-24:8080/eureka/v2/,http://nccztsjb-node-25:8080/eureka/v2/" eureka/WEB-INF/classes/eureka-client.properties
- 修改eureka-server.properties配置文件
# 关闭eureka server的自我保存模式 cat <<EOF >> eureka/WEB-INF/classes/eureka-server.properties eureka.enableSelfPreservation=false EOF
注意!注意!注意!
这里必须要,配置为主机名,不能写IP地址。否则会出现如下的问题,在eureka启动后,集群的节点在不可用副本里:
OK,已经配置好了client配置之后,接下来就是最重要的一步了,启动eureka集群
4、运行eureka集群
启动eureka集群的方法,非常的简单。启动各个节点的tomcat即可
cd .. && bin/startup.sh
启动操作执行完成之后,可以登录eureka的web界面,查看eureka集群的状态(启动过程,eureka节点间相互查找,需要几分钟):
现在就可以看到,当前节点注册的实例信息,可用的副本信息了。
为了能够在本地PC端进行访问,也就是点击“DS Replicaton”中的节点时,自动可以连接上,可以在PC端的hosts中配置IP-主机名的解析
这样,就可以跳转到不同的eureka server端进行查看了。
OK,到这里,我们的eureka集群已经搭建完成了。
5、实例注册、信息复制的验证
那,我们看看,这个集群到底能不能注册?注册之后的实例信息是否可以被复制到其他的节点上。
为了达成这个效果,我们使用,eureka git中的eureka-examples这个示例来进行测试:
- 获取eureka-examples代码
git clone https://github.com/Netflix/eureka.git
- 修改eureka examples中的客户端配置
cd eureka/eureka-examples/conf/ # 修改sample-eureka-client.properties配置 # 修改为其中一个节点的配置即可 eureka.serviceUrl.default=http://172.20.58.83:8080/eureka/v2/
配置修改好后,接下来,就是见证奇迹的时刻。
- 启动service服务
cd eureka/ ./gradlew :eureka-examples:runExampleService
待看到:Service started and ready to process requests..
说明:服务已经启动完成,注册成功!
我们在回到web界面,可以看到,在每个节点都可以看到这个注册的示例服务的实例信息,并且,实例的状态是:up.
ok,通过以上的结果,我们就知道了,这是,一个已经实现了注册信息复制的eureka的集群。
6、eureka集群通信示意图