如何通过Rancher webhook微服务实现Service/Host的弹性伸缩

概述


结合大家CICD的应用场景,本篇Blog旨在介绍如何通过Rancher的webhook微服务来实现Service/Host的弹性伸缩。


流程介绍


  • Service Scale

    • 创建example服务对象。

    • 创建service scale webhook对象。

    • 第三方触发webhook,完成service弹性伸缩。

  • Host Sacle

    • 通过阿里云machine driver创建实例对象,打上scale-up标签。

    • 创建host scale webhook对象。

    • 第三方触发webhook,完成host弹性伸缩。


webhook介绍


Rancher webhook的服务流程大致如下:


  1. Webhook Driver(WD)初始化。

  2. Router Handler(RH)初始化。

  3. 接收请求URL和Method,匹配调用RH.Execute或其他方法,RH.Execute解析请求数据得到WD_Id,进而执行WD.Execute,最后返回并response。


wKioL1ndd16jVI9EAACIqVM_u9U844.png


环境准备


Platform


  • Mac,Windows,Linux,Docker Cloud,AWS,Azure均可部署。


wKioL1ndd36w0-7xAAHmAIsmKp8867.png


  • 本次准备的平台是Ubuntu发行版(14.04),为了兼容docker,选择linux发行版的时候内核需控制在3.10以上。


Docker


  • 根据用户选择的平台安装docker引擎,安装指导可参考https://docs.docker.com官方文档,搭配Rancher使用,docker引擎版本最优选择1.12.6或者1.13.1。

  • 本次准备的docker引擎版本是1.12.6。


Rancher


wKioL1ndd5mCxmB5AAEqla1xTJw710.png


实践步骤


Service Scale


创建example service

curl -u "xx:xx" \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"description": "example service for scaling",
"name": "webapp",
"system": false,
"dockerCompose": "version: '2'\nservices:\n  NGX:\n    image: nginx:alpine\n    stdin_open: true\n    tty: true\n    cpuset: \"0\"\n    ports:\n    - 8787:80/tcp\n    cpu_shares: 1024\n    labels:\n      io.rancher.container.pull_image: always\n      servicename: nginx",
"rancherCompose": "version: '2'\nservices:\n  NGX:\n    scale: 1\n    start_on_create: true",
"binding": null,
"startOnCreate": true
}' 'http://a.b.c.d:8080/v2-beta/projects/1a5/stacks'


wKioL1ndd7zBZgDqAADEe3AIHdY194.png


创建webhook


wKiom1nd5tuhsio2AAEDL9OwhJQ891.png


Trigger webhook


wKioL1ndd-jBP2dCAADACu7qgpo392.png

wKiom1nd5vexSQEoAAK3jFvSdSI086.png

wKioL1ndd-rAdChCAAC9jJVNgmQ657.png


Host Scale


创建example host


wKioL1ndeAXy4efdAAKNp3wa8pE775.png

wKiom1nd5xTQpijqAADlLM3HWWU890.png


创建webhook


图11


Trigger webhook


wKiom1nd5yzBuT49AAEp4fuo764247.png

wKioL1ndeB_BjvXCAAK2-EUgNiY833.png

wKiom1nd5y6xoG7RAAFNhgc_hjM727.png


原文来源:Rancher Labs



本文转自 RancherLabs 51CTO博客,原文链接:http://blog.51cto.com/12462495/1971363

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/511489

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。