前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rancher运行dubbo服务 原

Rancher运行dubbo服务 原

作者头像
尚浩宇
发布2018-08-17 11:22:33
8270
发布2018-08-17 11:22:33
举报
文章被收录于专栏:杂烩

一、环境

    本文假定:

        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)

代码语言:javascript
复制
@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());
	}

}

    接口

代码语言:javascript
复制
public interface ITestService {
	public String test(String str);
}

    实现

代码语言:javascript
复制
@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,输出一段话,这段话类似

代码语言:javascript
复制
inf run on 10.42.242.44 and base run on 10.42.143.50

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

代码语言:javascript
复制
server_port=8080
dubbo.port=20880
dubbo.zk.address=172.16.40.4:2181,172.16.40.5:2181

三、创建&发布镜像

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

代码语言:javascript
复制
mvn clean package

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

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

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

    然后构建镜像

代码语言:javascript
复制
#注意最后一个点,代表Dockerfile的路径
docker build -t base:0.0.1 .

    输出如下

代码语言:javascript
复制
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上

代码语言:javascript
复制
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,镜像输入

代码语言:javascript
复制
harbor.voole.com/library/base:0.0.1

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

代码语言:javascript
复制
java -jar /opt/webapps/base-0.0.1.jar >/dev/null &

    环境变量输入

代码语言:javascript
复制
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,结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境
  • 二、dubbo程序
  • 三、创建&发布镜像
  • 四、配置Rancher
  • 五、升级&验证
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档