Rancher是什么

Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。

通俗的将它就是为了更方便的管理docker。

为什么需要Rancher

在原来, 如果我们需要做一个分布式集群我们需要学习一全套的框架并编码实现如 服务发现, 负载均衡等逻辑, 给开发者造成很大的负担, 不过好在现在有Docker以及他周边的一些技术能在上层解决这些问题, 而应用该怎么开发就怎么开发.

当你选择使用Docker技术栈的时候, 会发现在生产环境中不光光是 docker run就能解决的. 还需要考虑比如docker之间的组网, 缩扩容等问题, 于是你去学习kubernetes, 发现好像有点复杂啊, 有没有更傻瓜化一点的? 那就是rancher了.

使用Rancher

rancher-server

rancher-server 主要负责图形化管理主机容器, 并且储存用户的数据(账号, 主机信息, 应用(task)等).

他是一个管理者, 管理工作机应该启动什么容器.

启动

启动一个单节点server, 并将数据库数据挂载到宿主机, 保证容器删除后数据还在.

sudo docker run -d -v /workspace/rancher/mysql:/var/lib/mysql --restart=unless-stopped -p 8081:8080 rancher/server

稍等片刻就能通过访问8081端口进入到Rancher UI

因为rancher前端使用ws和后端通讯, 所以如果使用nginx作为代理访问这个服务器需要这样设置:

server {
listen 80;
server_name rancher.bysir.store; location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; }
}

配置

添加登陆账号

在"ADMIN->Access Contor"添加一个管理员用于登陆, 我使用的是本地认证方式, 没遇到什么问题就不赘述了.

添加新环境

在rancher-server中默认内置了一个Cattle Template的环境, 我也不知道Cattle是个啥, 我们还是用Kubernetes吧, 眼熟.

点击Add Environment按钮

 
 

这段话我们用中文版本来看:

Rancher 支持将资源分组归属到多个环境。 每个环境具有自己独立的基础架构资源及服务,并由一个或多个用户、团队或组织所管理。
例如,您可以创建独立的“开发”、“测试”及“生产”环境以确保环境之间的安全隔离,将“开发”环境的访问权限赋予全部人员,但限制“生产”环境的访问权限给一个小的团队。

先建一个Test试一试

 
 

在这个页面点击添加一个主机

 
 

rancher-agent

rancher-agent 也就是主机, 是用来执行具体工作的机器

按照提示来添加主机:

 
 

在第四步的输入框中填写上主机的ip地址, 在这里我填写的是10.117.195.190, 这个ip使用来给ipsec组网的, 所以需要暴露UDP的500和4500端口.

rancher在这里叫你添加的是公网ip, 但在实际生产环境中, 不可能每个主机都有公网ip并且也不应该使用公网建立网络, 所以我们在这里填写内网(私网)ip地址, 只要保证当你添加多个主机的时候他们之间的UDP500和4500能互相访问.

PS: 可以通过以下代码测试端口连通性:

$ nc -u -z -v 10.25.170.125 4500
Connection to 10.25.170.125 4500 port [udp/ipsec-nat-t] succeeded!

PPS: 阿里的只需要主机在同一个安全组就能实现内网所有端口互通

复制第五步的代码到主机上执行, 执行之后可以通过以下代码看它的运行情况:

docker logs rancher-agent

稍等片刻你就能在rancher的web页面"INFRASTRUCTURE->Hosts"下找到你刚刚添加的主机.

这时候能看到这个主机的很多服务(容器)正在启动, 不出意外的话能看到这个样子的主机:

 
图太长了, 没截完, 反正全绿就可以了

疑难杂症

如果遇到红色无法启动的容器, 首先查看日志, 找找有用信息, 然后尝试以下操作:

  • 按照错误日志排错, 通过: 经验(玄学), google, issue
  • 手动点击重启这个错误容器
  • 看一下列出的我遇到的错误(特别是 重新部署某个主机)

重新部署某个主机

当我们在测试或者某个主机出现某些难以解决的错误的时候, 会经常使用重启大法, 注意在重新将这个主机加入到rancher集群之前需要清理到原来运行的container以及挂载出来的volume, 否则的话, 当再次启动rancher/agent之后你会发现很多服务启动不了, 如etcd, kubernetes; 一般来说, 只需要清理 kubernetes留下来的东西就好了.

一般如下操作

  1. docker volume rm etcd, 如果提示它被某个容器使用了就停止掉这个容器后再操作
  2. rm -rf /var/etcd/backups, 删除etcd挂载出来的数据

参考这篇官方文章: 清理主机

ipsec unhealthy

ipsec会将所有主机组网, 当其中有某个主机连接不上的时候其他ipsec节点也会unhealthy, 这时候就需要检查是那个主机的问题, 看其UDP的500和4500端口是否能与其他主机互相访问.

ipsec 无法启动

ipsec会向rancher-server机器请求得到其他主机的ip地址以实现组网.

但我通过查看ipsec的错误日志发现这个ipsec容器访问不到rancher-server机器的外网地址, 登陆容器执行命令发现curl http://www.baidu.com都报错, 这种情况下... 我选择重启docker(没办法了啊, 如果读者有解决方案感谢告诉我哦).

但请谨慎操作呀 service docker restart会重启所有的容器, 这将导致所有服务不可用.

etcd无法启动

好像etcd无法启动和ipsec没有正常运行有关, 所以先解决ipsec的问题

在上面说了记得删除volume etcd

更多的可以参考这篇官方文章: 灾难恢复

etcd节点无限重启

如果你在"INFRASTRUCTURE->Containers"中看到红色的etcd容器并且在不断重启, 不要惊讶.

作者:bysir
链接:https://www.jianshu.com/p/3a492440c89b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

微服务下的容器部署和管理平台Rancher的更多相关文章

  1. [转帖]devops 容器管理平台 rancher 简介

    https://testerhome.com/topics/10828 chenhengjie123 for PPmoney · 2017年11月13日 · 最后由 c19950809 回复于 201 ...

  2. 微服务下 Spring Boot Maven 工程依赖关系管理

    单体 Spring Boot Maven 工程 最基本的 pom.xml 包含工程信息.Spring Boot 父工程.属性配置.依赖包.构建插件 <?xml version="1.0 ...

  3. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  4. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

  5. Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  6. 微服务从设计到部署(二)使用 API 网关

    链接:https://github.com/oopsguy/microservices-from-design-to-deployment-chinese 译者:Oopsguy 本书的七个章节是关于设 ...

  7. 微服务下的契约测试(CDC)解读

    1. 前言 有近两周没有在公众号中发表文章了,看过我之前公众号的读者都知道,公众号中近期在连载<RobotFramework接口自动化系列课程>,原本计划每周更新一篇,最近由于博主在带一个 ...

  8. AspNetCore微服务下的网关-Kong(一)

    Kong是Mashape开源的高性能高可用API网关和API服务管理层.它基于OpenResty,进行API管理,并提供了插件实现API的AOP.Kong在Mashape 管理了超过15,000 个A ...

  9. 探索解析微服务下的RabbitMQ

    概览 本文主要介绍如何使用RabbitMQ消息代理来实现分布式系统之间的通信,从而促进微服务的松耦合. RabbitMQ,也被称为开源消息代理,它支持多种消息协议,并且可以部署在分布式系统上.它轻量级 ...

随机推荐

  1. MySQL 处理海量数据时的一些优化查询速度方法

    查询速度慢的原因 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O 吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6 ...

  2. Linux安装配置vsftp搭建FTP的详细配置

    这里主要是说vsftp的配置:基础的可以参考Linux中VSFTP的配置 转自:https://www.jb51.net/article/103904.htm 修改配置文件 配置文件/etc/vsft ...

  3. Linux如何查找某个时间点后生成的空文件

    今天遇到一个特殊需求,需要找到某天(例如2017-04-13)以及这之后生成的空文件.那么这个要怎么处理呢?这个当然是用find命令来解决.如下所示, -mtime -5 表示查找距现在 5*24H ...

  4. python3 文件操作

    步骤:打开文件->操作文件->关闭文件 打开文件 文件句柄 = open('文件路径', '模式') 指定文件编码 文件句柄= open('文件路径','模式',encoding='utf ...

  5. LNMP时,出现502 Bad Gateway的错误提示

    因为工作需要,要在ubuntu中安装LNMP环境,在这里,php是最新版本php7.1.一切都进展得很顺利,安装完成后,在浏览器中输入http://127.0.0.1/info.php,出现了502 ...

  6. 获取高精度时间注意事项 (QueryPerformanceCounter , QueryPerformanceFrequency)

    花了很长时间才得到的经验,与大家分享. 1. RDTSC - 粒度: 纳秒级 不推荐优势: 几乎是能够获得最细粒度的计数器抛弃理由: A) 定义模糊- 曾经据说是处理器的cycle counter,但 ...

  7. sqlmap --tamper 绕过WAF脚本分类整理

    分类: https://blog.csdn.net/whatday/article/details/54774043 详细介绍: https://blog.csdn.net/qq_34444097/a ...

  8. [经验总结] 从其它sheet页引用数据生成图表时没有图例的解决办法

    1.先给出一个在有数据区域的sheet页中生成的图表,比较全,图表和图例全部都有,如下图: 2.但是如果在其它 sheet页中引用该有数据的sheet数据时并生成图表,生成的图表只有图表区域显示,图例 ...

  9. Maven pom.xml中的元素modules、parent、properties以及import

    前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...

  10. Mac下的效率工具autojump

    (转) IDE 用起来总是得不到满足,Mac 适合搞开发,我也十分喜欢 Mac 系统,当然可以说喜欢 Unix/Linux 系统.今天在 .zshrc 文件中添加了这么几行快捷命令: alias go ...