Spring Cloud on DC/OS
Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它与Netflix OSS技术体系整合为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud Data Flow Server for Apache Mesos 适用于mesos平台的springcloud数据流服务器(DCOS构建)
目前,研发可考虑使用Spring Cloud作为微服务的基础框架。
假如目前产品的输出物是一个jar包,一个包含Jetty和Sprig Boot的软件包,数据库是运行在其它服务器上的实例。
运行:java -jar huihoo-1.0.0.jar
将huihoo-1.0.0.jar部署DC/OS,进行Jetty web server层的集群。
参考:
- Spring Cloud Marathon
- https://mesosphere.com/blog/application-jvm-startup/
- Demo Java-Spring App
- Spring Cloud Data Flow Server for Apache Mesos 适用于mesos平台的springcloud数据流服务器(DC/OS构建)
- spring-cloud-vault
- spring-cloud-mesos-deployer
- Spring Cloud Data Flow Server for Apache Mesos
- spring-cloud-dataflow-server-mesos
- spring-cloud-dashboard
- spring-cloud-cluster
1、下载Spring Boot 镜像
$ docker pull java:openjdk-8
2、创建 huihoo-app
mkdir huihoo-docker
touch Dockerfile
FROM java:openjdk-8
VOLUME /tmp
ADD huihoo-1.0.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
3、构建 huihoo-app 镜像
docker build -t huihoo/spring-boot-docker .
4、上传仓库
docker login
docker push huihoo/spring-boot-docker
本地运行
docker run -p 8080:8080 -t huihoo/spring-boot-docker
http://localhost:8080/huihoo/v1/push/wechat/templateCustomer
5、通过Marathon JSON部署3个实例的huihoo-app,并通过Marathon-LB进行负载均衡。
jar的打包、上传、多实例部署的过程是OK的,目前主要问题是访问外部的网络资源,涉及域名解析的问题,如:service.huihoo.com
服务发现包
vim /etc/hosts
127.0.0.1 hh1 hh2
docker run -p 8761:8761 -t huihoo/server-discovery –spring.profiles.active=hh1
docker run -p 8762:8762 -t huihoo/server-discovery –spring.profiles.active=hh2
出现的问题:
点击hh2,连接被重置。
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused) at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar!/:1.19.1]
WARN 6 — [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
折腾 Spring Cloud Samples 各种例子。
The Spring Cloud Deployer project defines a Service Provider Interface (SPI) for deploying long lived applications and short lived tasks.
https://github.com/spring-cloud/spring-cloud-deployer-mesos
$ ./mvnw clean install