Rancher容器管理平台搭建

1. Rancher容器管理平台简介

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

Rancher由以下四个部分组成:

  • 基础设施编排

Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。

Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络存储负载均衡DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。

  • 容器编排与调度

很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker SwarmKubernetesMesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。

除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。

  • 应用商店

Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店

  • 企业级权限管理

Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。

下图展示了Rancher的主要组件和功能:

Rancher组件和功能

2. Rancher容器管理平台搭建

2.1 安装环境要求

  • 操作系统: CentOS 7.0+

  • 内存: 1GB+

  • 硬盘: 100GB+

  • 数据库: MySQL5.0+

    • MySQL服务器需要 max_connections 的设置 > 150

    • MYSQL配置需求

      • 选项1: 用默认COMPACT选项运行Antelope
      • 选项2: 运行MySQL 5.7,使用Barracuda。默认选项ROW_FORMAT需设置成Dynamic
    • 推荐设定

      • max_packet_size >= 32M
      • innodb_log_file_size >= 256M (如果你已有现存数据库,请根据实际情况更改此设定)
      • innodb_file_per_table=1
      • innodb_buffer_pool_size >= 1GB (对于更高需求的配置,请在专属MySQL服务器机器上使用4-8G的值)
  • 服务依赖:Docker服务

  • Rancher版本: Rancher 1.5+

2.2 Rancher Server版本说明

Rancher Server当前版本中有2个不同的标签。对于每一个主要的release标签,我们都会提供对应版本的文档。

  • rancher/server:latest 此标签是我们的最新一次开发的构建版本。这些构建已经被我们的CI框架自动验证测试。但这些release并不代表可以在生产环境部署。
  • rancher/server:stable 此标签是我们最新一个稳定的release构建。这个标签代表我们推荐在生产环境中使用的版本。

注: 请不要使用任何带有 rancher/server:rc{n} 前缀的release。这些都是Rancher构建的测试版本。

2.3 Rancher部署

2.3.1 单容器部署(使用容器内部自带的MySQL数据库)

在安装和部署了Docker容器环境的Linux服务器上,使用一个简单的命令就可以启动一个单实例的Rancher。

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

2.3.2 单容器部署(使用外部MySQL数据库)

除了使用内部的数据库,你可以启动一个Rancher Server并使用一个外部的数据库。启动命令与之前一样,但添加了一些额外的参数去说明如何连接你的外部数据库。

使用外部数据库,需要提前创建数据库名和数据库用户,Rancher服务启动后会自动创建Rancher管理平台需要的数据库表。以下为相关的建库脚本, 可供参考:

> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';

启动一个Rancher连接一个外部数据库,你需要在启动容器的命令中添加额外参数。

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server \
    --db-host 192.168.202.44 --db-port 3306 --db-user username --db-pass password --db-name cattle

大部分的输入参数都有默认值并且是可选的,只有MySQL数据库主机地址配置项是必须配置的。

--db-host               数据库主机名或IP地址
--db-port               数据库服务端口(默认为:3306)
--db-user               数据库用户名(默认为:cattle)
--db-pass               数据库用户密码(默认为:cattle)
--db-name               数据库名(默认为:cattle)

2.3.3 高可用集群部署

在高可用(HA)的模式下运行Rancher Server与单容器部署方式一样简单,但需要暴露一个额外的服务端口用于实现集群节点之间的通讯,需要添加额外的参数到启动命令中,并且运行一个外部的负载均衡就可以了。

1. HA部署需求

  • HA 节点:
    • 9345, 8080 端口需要在各个节点之间能够互相访问
    • 至少1GB内存
  • MySQL数据库
    • 至少 1 GB内存
    • 每个Rancher Server节点需要50个连接 (例如:3个节点的Rancher则需要至少150个连接)
    • MYSQL配置要求
      • 选项1: 用默认COMPACT选项运行Antelope
      • 选项2: 运行MySQL 5.7,使用Barracuda。默认选项ROW_FORMAT需设置成Dynamic
  • 外部负载均衡服务器
    • 负载均衡服务器需要能访问Rancher Server节点的 8080 端口

注意:目前Rancher中并不支持Docker for Mac

2. 大规模部署建议

  • 每一个Rancher Server节点需要有4 GB 或者8 GB的堆空间,意味着需要8 GB或者16 GB内存
  • MySQL数据库需要有高性能磁盘
  • 对于一个完整的HA,建议使用一个有备份的MySQL数据库。另一种选择则是使用MySQL集群(Galera)。

3. 部署步骤

  1. 在每个需要加入Rancher Server HA集群的节点上,运行以下命令:

    $ docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 \
        rancher/server --db-host 1952.168.202.44 --db-port 3306 \
        --db-user Cattle --db-pass cattle --db-name cattle \
        --advertise-address <IP_of_the_Node>
    

    在每个节点上,<IP_of_the_Node> 需要在每个节点上唯一,因为这个IP会被添加到HA的设置中。

    如果你修改了 -p 8080:8080 并在host上暴露了一个不一样的端口,你需要添加 --advertise-http-port <host_port> 参数到命令中, 如下所示:

    $ docker run -d --restart=unless-stopped -p 8000:8080 -p 9345:9345 \
        rancher/server --db-host 1952.168.202.44 --db-port 3306 \
        --db-user Cattle --db-pass cattle --db-name cattle \
        --advertise-address 192.168.202.15 --advertise-http-port 8000
    

    ADVERTISE-ADDRESS参数配置说明:

    • 使用IP地址 --advertise-address 192.168.202.14
    • 使用网络接口 --advertise-address eth0
  2. 在负载均衡应用(如Nginx、HAProxy等)中添加负载均衡配置,这个负责均衡负责将例如80443端口的流量,转发到运行Rancher Server的节点的8080端口中。负载均衡器必须支持websockets 以及 forwarded-for 的Http请求头以支持Rancher的功能。

4. 注意事项

如果修改了Rancher集群节点上的IP地址,Rancher集群上该节点将不会再提供服务,此时需要删除修改IP地址的容器节点服务, 并重新运行新的容器并配置修改后的IP地址。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容