非java应用,如何使用eureka的rest api来操作eureka?
其实这是一个非常有意思的问题······
对于大多数非开发的运维来说,有需要维护的eureka服务的场景,那么,问题是:如何才能对eureka进行运维?首要的条件是什么呢?
没错,就是eureka,了解其中的参数,了解客户端注册的时候,到底注册了哪些的信息,如果对这个信息有非常充分的了解了,那么自然,对于eureka的运行也会有更加深刻的理解,那么接下来的文章中,我们就来看看如何通过eureka的接口来获取应用的信息,以及怎么进行注册、删除。
先来看看eureka的提供的一些接口。
- 查询所有应用的实例
get /eureka/v2/apps
<applications> <versions__delta>1</versions__delta> <apps__hashcode>UP_3_</apps__hashcode> <application> <name>ZHAIMM2</name> <instance> <instanceId>nctest-snap-zhaimm</instanceId> <hostName>nctest-snap-test-02</hostName> <app>ZHAIMM2</app> <ipAddr>172.20.58.152</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8080</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"> <name>MyOwn</name> </dataCenterInfo> <leaseInfo> <renewalIntervalInSecs>30</renewalIntervalInSecs> <durationInSecs>90</durationInSecs> <registrationTimestamp>1659593782745</registrationTimestamp> <lastRenewalTimestamp>1659593782745</lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1659593297381</serviceUpTimestamp> </leaseInfo> <metadata class="java.util.Collections$EmptyMap"/> <appGroupName>UNKNOWN</appGroupName> <homePageUrl>http://nctest-snap-test-02:8080/</homePageUrl> <statusPageUrl>http://nctest-snap-test-02:8080/Status</statusPageUrl> <healthCheckUrl>http://nctest-snap-test-02:8080/healthcheck</healthCheckUrl> <vipAddress>eureka.mydomain.net</vipAddress> <isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1659593782745</lastUpdatedTimestamp> <lastDirtyTimestamp>1659505507804</lastDirtyTimestamp> <actionType>ADDED</actionType> </instance> </application> <application> <name>EUREKA</name> <instance> <instanceId>nctest-snap-test-02</instanceId> <hostName>nctest-snap-test-02</hostName> <app>EUREKA</app> <ipAddr>172.20.58.152</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8080</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"> <name>MyOwn</name> </dataCenterInfo> <leaseInfo> <renewalIntervalInSecs>30</renewalIntervalInSecs> <durationInSecs>90</durationInSecs> <registrationTimestamp>1659505508457</registrationTimestamp> <lastRenewalTimestamp>1659593867486</lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1659505507898</serviceUpTimestamp> </leaseInfo> <metadata class="java.util.Collections$EmptyMap"/> <appGroupName>UNKNOWN</appGroupName> <homePageUrl>http://nctest-snap-test-02:8080/</homePageUrl> <statusPageUrl>http://nctest-snap-test-02:8080/Status</statusPageUrl> <healthCheckUrl>http://nctest-snap-test-02:8080/healthcheck</healthCheckUrl> <vipAddress>eureka.mydomain.net</vipAddress> <isCoordinatingDiscoveryServer>true</isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1659505508457</lastUpdatedTimestamp> <lastDirtyTimestamp>1659505507804</lastDirtyTimestamp> <actionType>ADDED</actionType> </instance> </application> <application> <name>ZHAIMM</name> <instance> <instanceId>nctest-snap-zhaimm</instanceId> <hostName>nctest-snap-test-02</hostName> <app>ZHAIMM</app> <ipAddr>172.20.58.152</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8080</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"> <name>MyOwn</name> </dataCenterInfo> <leaseInfo> <renewalIntervalInSecs>30</renewalIntervalInSecs> <durationInSecs>90</durationInSecs> <registrationTimestamp>1659593278568</registrationTimestamp> <lastRenewalTimestamp>1659593278568</lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1659593261166</serviceUpTimestamp> </leaseInfo> <metadata class="java.util.Collections$EmptyMap"/> <appGroupName>UNKNOWN</appGroupName> <homePageUrl>http://nctest-snap-test-02:8080/</homePageUrl> <statusPageUrl>http://nctest-snap-test-02:8080/Status</statusPageUrl> <healthCheckUrl>http://nctest-snap-test-02:8080/healthcheck</healthCheckUrl> <vipAddress>eureka.mydomain.net</vipAddress> <isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1659593278568</lastUpdatedTimestamp> <lastDirtyTimestamp>1659505507804</lastDirtyTimestamp> <actionType>ADDED</actionType> </instance> </application> </applications>
查询出来的是所有的应用的注册的信息。
- 查询某个特定的应用
get /eureka/v2/apps/<app名字>
<application> <name>EUREKA</name> <instance> <instanceId>nctest-snap-test-02</instanceId> <hostName>nctest-snap-test-02</hostName> <app>EUREKA</app> <ipAddr>172.20.58.152</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8080</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"> <name>MyOwn</name> </dataCenterInfo> <leaseInfo> <renewalIntervalInSecs>30</renewalIntervalInSecs> <durationInSecs>90</durationInSecs> <registrationTimestamp>1659505508457</registrationTimestamp> <lastRenewalTimestamp>1659593987495</lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1659505507898</serviceUpTimestamp> </leaseInfo> <metadata class="java.util.Collections$EmptyMap"/> <appGroupName>UNKNOWN</appGroupName> <homePageUrl>http://nctest-snap-test-02:8080/</homePageUrl> <statusPageUrl>http://nctest-snap-test-02:8080/Status</statusPageUrl> <healthCheckUrl>http://nctest-snap-test-02:8080/healthcheck</healthCheckUrl> <vipAddress>eureka.mydomain.net</vipAddress> <isCoordinatingDiscoveryServer>true</isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1659505508457</lastUpdatedTimestamp> <lastDirtyTimestamp>1659505507804</lastDirtyTimestamp> <actionType>ADDED</actionType> </instance> </application>
这样得到的结果,就是具体的某个应用的信息。
- 查询某个应用的某个特定的实例
get /eureka/v2/apps/<app名字>/<实例ID>
<instance> <instanceId>nctest-snap-test-02</instanceId> <hostName>nctest-snap-test-02</hostName> <app>EUREKA</app> <ipAddr>172.20.58.152</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8080</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"> <name>MyOwn</name> </dataCenterInfo> <leaseInfo> <renewalIntervalInSecs>30</renewalIntervalInSecs> <durationInSecs>90</durationInSecs> <registrationTimestamp>1659505508457</registrationTimestamp> <lastRenewalTimestamp>1659594497540</lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1659505507898</serviceUpTimestamp> </leaseInfo> <metadata class="java.util.Collections$EmptyMap"/> <appGroupName>UNKNOWN</appGroupName> <homePageUrl>http://nctest-snap-test-02:8080/</homePageUrl> <statusPageUrl>http://nctest-snap-test-02:8080/Status</statusPageUrl> <healthCheckUrl>http://nctest-snap-test-02:8080/healthcheck</healthCheckUrl> <vipAddress>eureka.mydomain.net</vipAddress> <isCoordinatingDiscoveryServer>true</isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1659505508457</lastUpdatedTimestamp> <lastDirtyTimestamp>1659505507804</lastDirtyTimestamp> <actionType>ADDED</actionType> </instance>
- 注册某个应用
POST /eureka/v2/apps/<应用ID>
BODY如下:
<instance> <instanceId>zhaimm01</instanceId> <hostName>nctest-snap-test-02</hostName> <app>ZHAIMMTEST</app> <ipAddr>172.20.58.152</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8080</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"> <name>MyOwn</name> </dataCenterInfo> <leaseInfo> <renewalIntervalInSecs>30</renewalIntervalInSecs> <durationInSecs>90</durationInSecs> <registrationTimestamp>1659505508457</registrationTimestamp> <lastRenewalTimestamp>1659593267433</lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1659505507898</serviceUpTimestamp> </leaseInfo> <metadata class="java.util.Collections$EmptyMap"/> <appGroupName>UNKNOWN</appGroupName> <homePageUrl>http://nctest-snap-test-02:8080/</homePageUrl> <statusPageUrl>http://nctest-snap-test-02:8080/Status</statusPageUrl> <healthCheckUrl>http://nctest-snap-test-02:8080/healthcheck</healthCheckUrl> <vipAddress>eureka.mydomain.net</vipAddress> <isCoordinatingDiscoveryServer>true</isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1659505508457</lastUpdatedTimestamp> <lastDirtyTimestamp>1659505507804</lastDirtyTimestamp> <actionType>ADDED</actionType> </instance>
注册中心,可以看到这个应用和对应的实例信息。
多个实例,循环执行上面的注册过程就可以了。
- 删除某个应用的某个实例
DELETE /eureka/v2/apps/appID/instanceID
当所有的实例,都被删除后,应用也就不存在了。
OK,如果以上的东西,你都掌握了,通过api的方式,就可以轻而易举的操作eureka了。
对于非java应用,可以轻松的通过eureka来实现服务、发现了。