spring cloud server.port not working with active profiles - spring

config server:
src\main\resources\configPath\cloud-config-repo\movie.yml:
---
spring:
profiles: cloud
jpa:
show_sql: false
database: MYSQL
hibernate:
ddl-auto: none
eureka:
client:
serviceUrl:
defaultZone: http://discovery-kb.cfapps.io/eureka/
instance:
hostname: movie-kb.cfapps.io
nonSecurePort: 80
ribbon:
eureka:
enabled: true
---
application:
name: movie
spring:
profiles: lattice
jpa:
show_sql: false
hibernate:
ddl-auto: none
datasource:
platform: hsqldb
server:
port: 9006
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_CLIENT_SERVICEURL_DEFAULTZONE:http://localhost:8761/eureka/}
instance:
hostname: ${vcap.application.uris[0]:localhost:9006}
nonSecurePort: 80
ribbon:
eureka:
enabled: true
---
spring:
profiles: development
jpa:
show_sql: false
hibernate:
ddl-auto: update
server:
port: 9005
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
preferIpAddress: true
ribbon:
eureka:
enabled: true
when i started move-service , Tomcat initialized with port(s): 8080 (http).
why not 9005?
move service :
src\main\resources\application.yml:
spring:
profiles:
active: development

Related

Name or service unknow with eureka server

I use spring boot with eureka.
When I try to start the eureka server, I get
Caused by: java.net.UnknownHostException: MiWiFi-RA72-srv: Name or
service not known
My config
server:
port: 8761
spring:
security:
user:
name: admin
password: password
logging:
level:
org:
springframework:
security: DEBUG
eureka:
client:
registerWithEureka: false
fetchRegistry: false
service-url:
defaultZone: http://admin:password#localhost:8761/eureka/
server:
waitTimeInMsWhenSyncEmpty: 0
instance:
hostname: localhost
prefer-ip-address: true
I tried to replace localhost by MiWiFi-RA72-srv, but I get the same result

Eureka preferIpAddress: true is not working with spring boot 2.1.3 'Greenwich.RELEASE' '

Due to some reasons, I want microservices clients to be registered into Eureka with their IP address, instead of host name.
This is not working even after setting eureka: instance: preferIpAddress: true [yaml given below].
Still eureka display only host names. Anyone faced this type of issue and possible remedy would be really helpful.
Springbootversion : 2.1.3 , Spring cloud - Greenwich Release
application.yml of microservice instance Please note the preferIpAddress: true
spring:
profiles: default
application:
name: booking
cloud:
config:
uri: http://localhost:8888,http://localhost:8889
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8761/eureka
healthcheck:
enabled: false
instance:
leaseRenewalIntervalInSeconds: 1
leaseExpirationDurationInSeconds: 2
preferIpAddress: true
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
security:
enabled: false
application.yml of Eureka server
spring:
profiles: localpeer1
eureka:
server:
client:
register-with-eureka: false
fetch-registry: false
serviceUrl:
defaultZone: http://localhost:8762/eureka
server:
port: 8761
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
---
spring:
profiles: localpeer2
eureka:
server:
client:
register-with-eureka: false
fetch-registry: false
serviceUrl:
defaultZone: http://localhost:8761/eureka
server:
port: 8762
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
Dashboard of Eureka still shows the hostname instead of IP address.
Thanks for the inputs.

How to use eureka.client.service-url: property of netflix eureka in spring cloud

I am trying to add Eureka client in one of the microservices, but i am unable to figure out if how can I use the service-url.
I am using the Greenwich.SR1 version of spring-cloud.
Below is my application.yml
spring:
application:
name: stock-service
server:
port: 9901
eureka:
instance:
hostname: localhost
client:
register-with-eureka: true
fetch-registry: true
service-url: http://${eureka.instance.hostname}:9902/eureka/
I tried to search it out but everywhere I am getting the old way which is not supported in this version:
Old Way:
eureka: #tells about the Eureka server details and its refresh time
instance:
leaseRenewalIntervalInSeconds: 1
leaseExpirationDurationInSeconds: 2
client:
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka/
Could someone help here?
Finally, I find the configuration:
spring:
application:
name: stock-service
server:
port: 9901
eureka:
instance:
hostname: localhost
client:
register-with-eureka: true
fetch-registry: true
service-url:
default-zone: http://localhost:9902/eureka
I just tried this configuration in Spring Cloud Hoxton.SR4, and it doesn't work.
Then I find out the correct way (at least for me):
spring:
application:
name: hello-world-server
server:
port: 8010
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/
We could see the logs below after starting your client application:
2020-05-02 16:39:21.914 INFO 27104 --- [ main] c.n.d.DiscoveryClient : Discovery Client initialized at timestamp 1588408761914 with initial instances count: 0
2020-05-02 16:39:21.915 INFO 27104 --- [ main] o.s.c.n.e.s.EurekaServiceRegistry : Registering application HELLO-WORLD-SERVER with eureka with status UP
2020-05-02 16:39:21.915 INFO 27104 --- [ main] c.n.d.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1588408761915, current=UP, previous=STARTING]
2020-05-02 16:39:21.916 INFO 27104 --- [nfoReplicator-0] c.n.d.DiscoveryClient : DiscoveryClient_HELLO-WORLD-SERVER/tumbleweed:hello-world-server:8010: registering service...
And the Server side:
It works!

Set hibernate dialect for jpa in YML

I tried to set hibernate dialect for jpa in YML,
checked many topics, but it does not set:
spring:
datasource:
hikari:
allow-pool-suspension: true
connection-timeout: 1000
name: testDb
jpa:
database: h2
generate-ddl: false
database-platform: h2
package-to-scan: com.x.model
properties:
hibernate:
dialect: com.x.data.core.hibernate.dialect.ExtendedH2Dialect
h2:
console:
enabled: true
path: /h2
How to fix this?
what is com.x.data.core.hibernate.dialect.ExtendedH2Dialect ? You have to use dialect as org.hibernate.dialect.H2Dialect
below is the sample
server:
port: 8096
spring:
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:~/test
username: sa
password:
h2:
console:
enabled: true
jpa:
hibernate.ddl-auto: update
generate-ddl: false
show-sql: false
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
Note:
I'm using spring-boot-starter-data-jpa 2.0.5

Eureka service - locations

I am new to spring boot and spring cloud.
I would like to ask if I can have one eureka service for multiple locations (different countries).
For example
One eureka service and one app service which is running twice - for location SLOVAKIA and another one for location CZECH.
And then I want to have edge service for that location and for another common services.
Is it possible?
config eureka-service
spring:
application:
name: eureka-service
server:
port: 8761
eureka:
instance:
preferIpAddress: true
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://localhost:8761/eureka/
config service-common
server:
port: 9082
eureka:
instance:
preferIpAddress: true
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
config service-a
spring:
application:
name: service-a
eureka:
instance:
preferIpAddress: true
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
---
spring:
profiles: sk
server:
port: 9080
eureka:
instance:
metadataMap:
zone: skZone
---
spring:
profiles: cz
server:
port: 9081
eureka:
instance:
metadataMap:
zone: czZone
config service-a-apigateway
spring:
application:
name: service-a-apigateway
zuul:
routes:
book-apigateway:
serviceId: service-a
path: /api/**
book-common-api:
serviceId: service-common
path: /common/**
eureka:
instance:
preferIpAddress: true
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
---
spring:
profiles: sk
server:
port: 9050
eureka:
instance:
metadataMap:
zone: skZone
---
spring:
profiles: cz
server:
port: 9051
eureka:
instance:
metadataMap:
zone: czZone
Service-a-apigateway (profile: sk) can call only service-a (profile: sk) and service-common. Profile (cz) has the same behavior. It is good.
But when service-a (profile: sk) is down, service-a-apigateway (profile: sk) can call service-a (profile: cz). This behavior is undesirable.
I think so, by setting property eureka.instance.metadataMap.zone on both zuul edge and service A.
"By default it will be used to locate a server in the same zone as the client..."
http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_using_ribbon_with_eureka
I was able to resolve it when I had three eureka services running and one of them (common eureka) replicates to the remaining two services. But I don't know if it's a good idea.

Resources