Rancher运行dubbo服务 原

一、环境

    本文假定:

        1、OS是Centos7.4

        2、Docker18.01.0

        3、Rancher1.6.14

        4、私服是Harbor

        5、dubbo是dubbo-spring-boot-starter:1.0.0

二、dubbo程序

    总共有两个核心项目,base、inf。base是dubbo服务提供者,inf是服务消费者,同时也是springmvc的http接口程序。另外还有api项目是接口类和工具类集合,parent是父项目。完整代码请见,下面列出核心代码。https://github.com/shang7053/base/tree/master/dubbo-docker-parent

    RC(restcontroller)

@RestController
@RequestMapping("test")
public class TestRc {
	@Reference
	private ITestService testService;

	@RequestMapping("hello")
	@ResponseBody
	public String hello() {
		return this.testService.test("inf run on " + IPUtil.getIp());
	}

}

    接口

public interface ITestService {
	public String test(String str);
}

    实现

@Service
public class TestServiceImpl implements ITestService {

	/*
	 * (非 Javadoc) <p>Title: test</p> <p>Description: </p>
	 * 
	 * @param str
	 * 
	 * @return
	 * 
	 * @see com.scc.dubbo.docker.api.service.ITestService#test(java.lang.String)
	 */
	@Override
	public String test(String str) {
		return str + " and base run on " + IPUtil.getIp();
	}

}

    通过访问http://hostname:port/test/hello,输出一段话,这段话类似

inf run on 10.42.242.44 and base run on 10.42.143.50

    另外需要注意的是,配置依赖环境变量,本例中base以及inf依赖三个环境变量,分别是:

server_port=8080
dubbo.port=20880
dubbo.zk.address=172.16.40.4:2181,172.16.40.5:2181

三、创建&发布镜像

    首先执行命令,将代码打包成jar包

mvn clean package

    然后将base-0.0.1.jar和inf-0.0.1.jar上传到服务器(该服务必须安装Docker以及Harbor私服的证书),比如上传到/opt/soft文件夹下。

    首先创建base镜像,在soft文件夹下创建Dockerfile文件,内容如下:

#基于java8镜像构建,该镜像从dockerhub随便找的,生产建议自己创建
FROM gonitro/java8
#切换镜像目录,进入/opt目录
WORKDIR /opt
#在/usr/下创建webapps目录,用来存放程序文件
RUN mkdir webapps
#将宿主机的程序文件拷至镜像的/opt/webapps目录下
ADD base-0.0.1.jar webapps

    然后构建镜像

#注意最后一个点,代表Dockerfile的路径
docker build -t base:0.0.1 .

    输出如下

docker build -t base:0.0.1 .
Sending build context to Docker daemon  20.45MB
Step 1/4 : FROM gonitro/java8
 ---> dab560f3e6fa
Step 2/4 : WORKDIR /opt
 ---> Using cache
 ---> 57c206f31357
Step 3/4 : RUN mkdir webapps
 ---> Using cache
 ---> df3240be3cf1
Step 4/4 : ADD base-0.0.1.jar webapps
 ---> Using cache
 ---> 48d8842b848c
Successfully built 48d8842b848c
Successfully tagged base:0.0.1

    然后tag base:0.0.1并push到harbor上

docker tag inf:0.0.1 harbor.voole.com/library/base:0.0.1
docker push harbor.voole.com/library/base:0.0.1

    在harbor的管理后台上即可看到

    按照同样的步骤将inf打包到harbor上。

四、配置Rancher

    打开RancherUI,进入Default环境。

    首先创建一个应用,名称叫dubbo测试

    然后进入应用首页,点击添加服务按钮。名称输入base,镜像输入

harbor.voole.com/library/base:0.0.1

    端口映射只输入私有端口20880.然后在第三块,命令处输入

java -jar /opt/webapps/base-0.0.1.jar >/dev/null &

    环境变量输入

server_port=8080
dubbo.port=20880
dubbo.zk.address=172.16.40.4:2181,172.16.40.5:2181

    最后配置健康检查端口为20880,再点击创建即可。

    同样的步骤创建inf服务,但需要注意的是,映射端口要输入8080,而不是20880,因为dubbo消费者不占用20880端口。

    创建完base和inf之后,需要创建一个负载均衡,创建过程详见上一遍博文。下面展示最终的效果图

五、升级&验证

    应用创建完成后,可能会对单个服务进行更新,比如更新base。

    这时,按照第三节的步骤将新的base服务打成镜像并发布到harbor。然后登陆RancherUI找到base服务,点击最后面的升级按钮

    升级页面分三块,第一块是优雅升级设置,可以设置一次升级多少个容器,并且可以设置批次的间隔等。第二块、第三块和创建时一样。如果版本号没变,进入升级页面直接点升级即可,如果版本变了,需要修改至对应的版本号,然后点升级。

    点击升级后,耐心等待全部升级完成。

    若此时发现程序有问题,可以点击回滚,回退到上一个镜像。若没有问题,需要点击一次升级完成,确认此次升级成果。

    打开浏览器或者其他能够发送http请求的工具测试安装或升级成果,我这里使用postman,发送http://hostname:port/test/hello,结果如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏圣杰的专栏

eShopOnContainers 知多少[2]:Run起来

执行命令git clone https://github.com/dotnet/eShopOnContainers.gitclone代码到本地。使用默认DEV分...

4532
来自专栏容器云生态

overlayfs存储驱动的使用以及技术探究

overlayfs存储驱动的使用以及技术探究 1.overlayfs 基本概念 一种联合文件系统,设计简单,速度更快。overlayfs在linux主机上只有两...

39210
来自专栏jeremy的技术点滴

docker排雷记

3373
来自专栏Samego开发资源

IDEA配置Tomcat服务器并创建Java Web项目

3023
来自专栏程序小工

【Docker】--安装与配置

docker 是 linux 虚拟化技术,能够一键式搭建开发环境,并且能保证运维、开发、上线部署的环境完全一致,避免了运行环境差异性带来的问题。 具有简单、轻...

1393
来自专栏熊二哥

SpringBoot详细研究-04部署测试与监控

这部分的内容实际就是devops的主要工作内容,当然一名合格的程序要也需要掌握这部分的知识。 ? ? 热部署 简单来说,在开发时,修改了任何的代码,I...

2549
来自专栏偏前端工程师的驿站

CentOS6.5菜鸟之旅:U盘安装CentOS64位

一、前言                                      之前下载了个CentOS7 32位版,一下就安装成功了,但由于其目录结构等与...

3055
来自专栏jeremy的技术点滴

基于Docker for macOS的Kubernetes本地环境搭建与应用部署

2.1K5
来自专栏码神联盟

框架 | SpringBoot项目发布到自动化容器Docker步骤

5143
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Docker Swarm安装和保护OpenFaaS

无服务器架构从开发人员隐藏服务器实例,并且通常公开允许开发人员在云中运行其应用程序的API。这种方法可以帮助开发人员快速部署应用程序,因为他们可以将配置和维护实...

4581

扫码关注云+社区

领取腾讯云代金券