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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

概述


结合大家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

相关文章
|
5月前
|
Kubernetes 安全 Cloud Native
Service Mesh和Kubernetes:加强微服务的通信与安全性
Kubernetes已经成为云原生应用程序的事实标准,它为容器编排和管理提供了出色的解决方案。然而,微服务架构的广泛采用使得服务之间的通信变得复杂,同时安全性和可观测性需求也在不断增加。这正是Service Mesh技术的用武之地。本文将深入探讨Service Mesh如Istio和Linkerd如何增强Kubernetes集群中微服务的通信和安全性。
|
7月前
|
Kubernetes 网络协议 Java
架构解密从分布式到微服务:从微服务到Service Mesh
Kubernetes平台很好地解决了大规模分布式系统架构中的一些通用问题,从基本的自动化部署,服务注册、服务发现、服务路由,到全自动化的运维体系,几乎面面俱到。但由于Kubernetes致力于从更基础的TCP/IP层面提供更广泛的分布式系统的统一架构方案,因此必定以牺牲上层应用层协议的适配为代价。我们看到Kubernetes在解决一些问题时多少有些“鞭长莫及”:
|
9月前
|
负载均衡 Kubernetes 监控
微服务之Service Mesh浅析
随着技术体系的不断革新,基于原有的模式或思路使得软件的架构越来越难以维护,无论是国外还是国内的软件行业,都得到进一步的证实。依据各大主流技术论坛或者商业网站,目测,全球大约有85%以上的企业计划使用或者正在使用微服务体系生态。毕竟,原有的单一架构体系难以继续开发和持续维护,而基于微服务生态则允许使用较小的目标服务来实现更大的敏捷性收益。
236 0
|
9月前
|
运维 Kubernetes 负载均衡
Go微服务架构实战 中篇:5. k8s基于ingress和service实现金丝雀发布和蓝绿发布
Go微服务架构实战 中篇:5. k8s基于ingress和service实现金丝雀发布和蓝绿发布
|
负载均衡 NoSQL 安全
微服务 Spring Boot 整合Redis分布式锁 实现优惠卷秒杀 一人一单
高并发集群模式下,秒杀出现问题,如何解决,Redis 分布式锁来搞定!
271 0
微服务 Spring Boot 整合Redis分布式锁 实现优惠卷秒杀 一人一单
|
JSON 数据格式 微服务
Angular 实现类似微服务的效果
Angular 实现类似微服务的效果
Angular 实现类似微服务的效果
|
存储 监控 数据可视化
ELK搭建(一):实现分布式微服务日志监控
本次我们搭建的目标是通过ELK来收集微服务中的日志。本期主要以实操、快速搭建为主进行讲解,部分基础概念不做过多描述,后续会再单独出几期博客说明。更多ELK搭建可以关注本专栏,后续会持续输出。
347 0
ELK搭建(一):实现分布式微服务日志监控
|
消息中间件 SpringCloudAlibaba 监控
【springcloud alibaba】 一条龙服务实现微服务案例(下)
【springcloud alibaba】 一条龙服务实现微服务案例(下)
199 0
【springcloud alibaba】 一条龙服务实现微服务案例(下)
|
存储 SpringCloudAlibaba 负载均衡
【springcloud alibaba】 一条龙服务实现微服务案例(上)
【springcloud alibaba】 一条龙服务实现微服务案例
215 0
【springcloud alibaba】 一条龙服务实现微服务案例(上)
|
运维 Kubernetes Devops
通过云效 CI/CD 实现微服务全链路灰度
在微服务治理架构中,MSE 全链路灰度提供了虚拟泳道能力,极大的方便了测试、发布时的快速验证,能够帮助 Devops 同学减少保障半径、提升线上稳定性。同时,阿里云微服务引擎(MSE)也能给您带来全生命周期的、全方位的微服务治理、流量防护能力,保障您的线上稳定性,提升开发、运维效率。
通过云效 CI/CD 实现微服务全链路灰度