Rancher 再学习(一)

前段时间转载了这篇《Rancher安装手册》文章, 也尝试着安装了一下,有了一些浅显的认识。今天从0开始又一次部署,算是对 Rancher 的再学习。 这一篇主要是将各种事先需要准备的一些东西。

使用的环境为 CentOS 7.4 ( cat /etc/redhat-release

事先准备几个命令,后边你可能会经常用到(但愿不需要用到)

docker kill $(docker ps -a -q) # 杀死所有正在运行的容器
docker rm $(docker ps -a -q)	# 删除所有已经停止的容器
docker rmi $(docker images -q)	# 删除所有镜像

重置 docker/rancher:

rm -rf /var/lib/docker
rm -rf /var/lib/rancher

Docker再安装

按照 Rancher 的官方推荐,使用 17.06 版本的 Docker。所以要先把本机的docker 卸载,再重新安装。

# 查看安装版本号、卸载
yum list installed | grep docker
yum -y remove docker-ce.x86_64

# 查看可用的版本
yum makecache fast
yum list docker-ce.x86_64 --showduplicates | sort -r

yum -y install docker-ce-17.06.0.ce

加速

安装成功后需要对 Docker 源进行加速。我试用 Docker 官方的加速办法:在 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。

touch /etc/docker/daemon.json
vi /etc/docker/daemon.json
{  
	"registry-mirrors": ["https://registry.docker-cn.com"]
}

重启 Docker 后生效。

开机自启动

systemctl enable docker
# Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Rancher 安装

参照我先前的文章《Rancher安装手册》进行安装。

注意要使用 Chrome 访问 Rancher。在 IE 下会出现无法添加主机的情况(嗯,我踩过的坑。)

防火墙firewall

容器之间通信需要借助防火墙。使用 Rancher 添加不同主机的时候,就需要打通各个主机的通信,主要是 Rancher 服务器的默认 8080 端口和 IPsec 的 500、4500端口(UDP协议)。这里列几个,其他的我会再开一篇文章记录一下。

关于 firewall,只要记住服务和端口两个概念即可。

iptables -F; # 清除 iptables,防止两个防火墙冲突。
iptables -L;
firewall-cmd --zone=public --list-ports  # 查看所有打开的端口
firewall-cmd --list-services			# 查看开启的服务。
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)							#  添加端口
firewall-cmd --permanent --add-service="ipsec"  # 添加服务
firewall-cmd --reload
systemctl start firewalld.server		# 重启 firewall

打了这么些命令,可以参考一下

检查远端端口是否可用

使用 nc 命令进行检测:

nc -v host port

出现 Connection refused 或者 Connected 都说明端口可用。如果出现 No route to host. 则说明端口未开放。例如:

参考资料


Rancher 中文文档 —— Rancher 安装

原文:http://rancher.com/docs/rancher/v1.6/en/installing-rancher/installing-server/

查看本系列翻译的目录

安装 Rancher 服务器


Rancher 由一系列的 Dcoekr 容器组成。 运行 Rancher 就像添加两个容器一样简单: 一个服务管理容器和一个作为客户端的节点容器。

注意:Rancher 服务器容器帮助选项docker run rancher/server --help

要求

  • 支持 Dcoekr 的 Linux 发行版。我们在 RancherOS Ubuntu 和 RHEL/CentOS 7 行会进行更多的测试(画外音:所以会更稳定一些)。。
    • 在 RHEL/CentOS 里,Docker 不支持默认的存储驱动器,比如devicemapper 使用的 loopback。所以请参考 Dcoker 的相关文档如何进行修改。
    • 对于RHEL / CentOS的,如果要启用SELinux的,需要安装附加的SELinux模块
  • 1GB RAM
  • MySQL服务器应该设置 MAX_CONNECTIONS > 150
    • 配置要求:
      • Option 1: Run with Antelope with default of COMPACT
      • Option 2: Run MySQL 5.7 with Barracuda where the default ROW_FORMAT is Dynamic
    • 推荐设置:
      • max_packet_size > = 32M
      • innodb_log_file_size > = 256M(如果你有一个现有的数据库,请确保适当的计划如何更改此设置。)
      • innodb_file_per_table=1
      • innodb_buffer_pool_size > = 1GB(对于内存较大的主机,建议4-8G池)

注:目前,Docker Mac 暂不支持 Rancher。

Rancher server 标签

Rancher server 有两个不同的标签。对于每一个主要版本的标签,我们将提供特定版本的文档。

  • rancher/server:latest标签将是我们最新开发版本。这些版本会已经通过我们的CI自动化框架验证。这些版本不意味着在它们可以在生产环境中部署。
  • rancher/server:stable标签将是我们最新的稳定版本。这个标签是我们推荐用于生产的版本。

请不要使用有任何带有rc{n}后缀的版本。这些rc是 Rancher 的测试版本

启动 Rancher 服务器 - 单容器(非HA)

在已安装了 docker 的 Linux 机器上,启动 Rancher 的单个实例很简单。

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

Rancher 界面

Rancher 的界面和 API 可以通过 8080 端口访问。docker 镜像下载完成后,需要1到两分钟时间才可以使用。

进入网站: http://<SERVER_IP>:8080. <SERVER_IP>是 Rancher server 的公网地址.

当 Rancher 界面启动后, 我们可以添加主机或者从应用仓库里添加容器。 默认情况下 Rancher 使用 cattle 作为容器编排的环境。在主机添加吼,我们就可以开始添加服务或者在应用商店中通过模板添加服务了。

启动 Rancher 服务器 - 单容器 - 外部数据库

我们可以指定使用外部数据库来启动 Rancher。 命令行还是相同的,不过我们会添加额外的参数来设定如何使用外部数据库。

注意:数据库,名称和数据库的用户需要事先创建好,模式Schema不需要创建。Rancher 将自动创建所有与 Rancher 的模式Schema。

下面是创建一个数据库和用户的SQL命令的例子。

> 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 myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle

大多数的选项有默认值,不是必需的。只有 MySQL 服务器的位置是必需的。

--db-host               IP or hostname of MySQL server
--db-port               port of MySQL server (default: 3306)
--db-user               username for MySQL login (default: cattle)
--db-pass               password for MySQL login (default: cattle)
--db-name               MySQL database name to use (default: cattle)

注: Rancher server 的早期版本中,我们使用环境变量连接到外部数据库,这些环境变量也会继续生效,不过我们建议使用参数来运行 Rancher

启动 Rancher 服务器 - 单容器 - 绑定 Mysql 数据卷

如果你想将容器的数据库与主机商的存储设备绑定起来,那么应当这么启动 Rancher server:

$ sudo docker run -d -v <host_vol>:/var/lib/mysql --restart=unless-stopped -p 8080:8080 rancher/server

使用此命令,数据库将会把数据卷绑定到主机上。如果你已经有了 Rancher 数据库,也想绑定 MySQL 数据卷,参考我们的升级文件

启动 Rancher 服务器 - 全主动/主动HA

Rancher server 上跑 HA 和上文的跑外部数据库一样简单。通过一个额外的端口和参数,与外部的负载均衡器进行通信。

要求:

  • HA节点:
    • 支持 Dcoekr 的 Linux 发行版。我们在 RancherOS Ubuntu 和 RHEL/CentOS 7 行会进行更多的测试(画外音:所以会更稳定一些)。
      • 在 RHEL/CentOS 里,Docker 不支持默认的存储驱动器,比如devicemapper 使用的 loopback。所以请参考 Dcoker 的相关文档如何进行修改。
      • 对于RHEL / CentOS的,如果要启用SELinux的,需要安装附加的SELinux模块
    • 1GB RAM
    • 节点之间开通需要的端口:93458080
  • MySQL服务器应该设置 MAX_CONNECTIONS > 150
    • 配置要求:
      • Option 1: Run with Antelope with default of COMPACT
      • Option 2: Run MySQL 5.7 with Barracuda where the default ROW_FORMAT is Dynamic
  • 外部负载均衡器
    • 8080

注:目前,Docker Mac 暂不支持 Rancher。

对大规模部署的建议

  • 每个 Rancher server 节点应该有一个4 GB或8 GB 堆的大小,这需要具有至少8 GB或16 GB的RAM
  • MySQL数据库应该有快速磁盘
  • 对于真正的HA,建议MySQL数据库进行适当策略的备份。例如构建一个 Galera Cluster,提高MySQL服务的可用性和性能。
  1. 在每个要加入HA的节点,运行以下命令:

    # Launch on each node in your HA cluster
    $ docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server \
         --db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle \
         --advertise-address <IP_of_the_Node>
    

    对于每个节点,<IP_of_the_Node>都是唯一的,因为这将是正被加入到HA设置的每个特定节点的IP。 如果你需要更改-p 8080:8080,使HTTP端口暴露在主机上的不同端口上,将需要添加--advertise-http-port <host_port>的命令。

    注意:您可以通过运行得到帮助的命令docker run rancher/server --help

  2. 配置外部负载均衡器,平衡端口80443之间的流量,将流量指向运行 Rancher Server 的节点池。负载平衡器必须支持的WebSockets和headers转发。请参阅SSL设置页查看配置示例。

Option Example Description
IP address --advertise-address 192.168.100.100 Uses the give IP address
Interface --advertise-address eth0 Retrieves the IP of the given interface
awslocal --advertise-address awslocal Retrieves the IP from http://169.254.169.254/latest/meta-data/local-ipv4
ipify --advertise-address ipify Retrieves the IP from https://api.ipify.org

Rancher HA注意事项

如果你的 Rancher 主服务器节点更改IP,你的节点将不再是 Rancher HA 群集的一部分。您必须使用--advertise-address + 不正确的IP停止老的 Rancher server 容器 ,并使用 --advertise-address + 正确的IP 开始一个新的Rancher server 容器。

在 AWS 上运行 Rancher server 的 ELB

因为译者不用这一块,所以现在先不翻译了 2333333333333

在 AWS 的应用负载平衡器(ALB)

我们不再建议在AWS应用负载平衡器(ALB)在使用弹性/经典负载均衡器(ELB)。如果您仍然选择使用ALB,您需要将流量引导到节点上的HTTP端口,默认是8080端口。

启用ACTIVE DIRECTORY 或 OPENLDAP FOR TLS

要启用 Active Directory 或 OpenLDAP P for TLS, Rancher server 容器需要在启动时候加载由 LDAP 提供的证书。

我们需要通过绑定拥有证书的数据卷来启动 Rancher 容器。证书必须命名为ca.crt:

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 \
  -v /some/dir/cert.crt:/var/lib/rancher/etc/ssl/ca.crt rancher/server

我们可以通过跟踪 Rancher server 地日志来检查 ca.crt是不是正确地传递给了 Rancher server:

$ docker logs <SERVER_CONTAINER_ID>

日志的开头,就会出现正确添加证书的信息。

Adding ca.crt to Certs.
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
Certificate was added to keystore

启用 Rancher http 代理

为了启用 http 代理, docker daemon 需要修改代理的配置。在启动 Rancher server 之前进行配置:

sudo vi /etc/default/docker

在文件中,编辑#export http_proxy="http://127.0.0.1:3128" 指向您的代理。保存更改,然后重新启动 Docker。

重启 Docker 的方式在不同操作系统之间会有所差别。

注: 如果您使用 systemd 运行 Docker,请根据 Docker 的说明 配置HTTP代理。

配置好了 Docker,为了在Rancher 应用里也能加载,需要进行一些配置,并把代理的配置参数添加到 Rancher 的环境变量。

$ sudo docker run -d \
    -e http_proxy=<proxyURL> \
    -e https_proxy=<proxyURL> \
    -e no_proxy="localhost,127.0.0.1" \
    -e NO_PROXY="localhost,127.0.0.1" \
    --restart=unless-stopped -p 8080:8080 rancher/server

如果不使用 Rancher 应用,按照正常情况启动 Rancher server 即可。

主机添加到 Rancher 之后,后续就不需要再添加其他配置了。

与 MySQL 通过 SSL 通信

注:目前,Rancher 1.6.3+ 以上支持这个特性

重要提示

如果你使用了 LDAP/AD authentication 作为认证后端,由其它客户端生成CA证书(而不是MySQL生成的),那么接下里的操作不适合你,不会达到预期效果。

要求

  • 认证文件 或 MySQL 服务器的 CA 证书(PEM编码)

说明

  1. 将服务器的证书或CA证书复制到 Rancher server 的主机。当启动rancher/server容器时需要挂载认证文件到/lib/rancher/etc/ssl/ca.crt
  2. 替换服务器变量中的默认值,构建一个自定义的JDBC URL: jdbc:mysql://<DB_HOST>:<DB_PORT>/<DB_NAME>?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&prepStmtCacheSize=517&cachePrepStmts=true&prepStmtCacheSqlLimit=4096&socketTimeout=60000&connectTimeout=60000&sslServerCert=/var/lib/rancher/etc/ssl/ca.crt&useSSL=true
  3. 根据这个 JDBC URL 设置容器中的环境变量,包括 CATTLE_DB_CATTLE_MYSQL_URLCATTLE_DB_LIQUIBASE_MYSQL_URL

  4. 在容器中设置 export CATTLE_DB_CATTLE_GO_PARAMS="tls=true"。如果服务器的证书的主题字段不匹配服务器的主机名,需要使用CATTLE_DB_CATTLE_GO_PARAMS="tls=skip-verify"代替。

例子


$ export JDBC_URL="jdbc:mysql://<DB_HOST>:<DB_PORT>/<DB_NAME>?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&prepStmtCacheSize=517&cachePrepStmts=true&prepStmtCacheSqlLimit=4096&socketTimeout=60000&connectTimeout=60000&sslServerCert=/var/lib/rancher/etc/ssl/ca.crt&useSSL=true"

$ cat <<EOF > docker-compose.yml
version: '2'
  services:
    rancher-server:
      image: rancher/server:stable
      restart: unless-stopped
      command: --db-host <DB_HOST> --db-port <DB_PORT> --db-name <DB_NAME> --db-user <DB_USER> --db-pass <DB_PASS>
      environment:
        CATTLE_DB_LIQUIBASE_MYSQL_URL: $JDBC_URL
        CATTLE_DB_CATTLE_MYSQL_URL: $JDBC_URL
        CATTLE_DB_CATTLE_GO_PARAMS: "tls=true"
      volumes:
        - /path/to/mysql/ca.crt:/var/lib/rancher/etc/ssl/ca.crt
      ports:
        - "8080:8080"
EOF

$ docker-compose up -d

重要提示: 需要同时修改 JDBC URL 和 命令行中 --db-xxx 的变量!


Rancher 中文文档 —— 快速入门指南

原文:http://rancher.com/docs/rancher/v1.6/en/quick-start-guide/

查看本系列翻译的目录

快速入门指南


在本指南中,我们将在一台 Linux 主机上安装 Rancher。

准备一台 Linux 主机

准备一台Linux主机:

  • 使用64位的Ubuntu 16.04,必须有3.10+的内核
  • 至少1G内存
  • 安装了 Docker。

你可以使用笔记本、虚拟机或者物理服务器。

如何安装Docker可以参考官方文档

注意: 目前 Rancher 不支持 Mac和 Windows 下的 Docker

译者注: 目前 Rancher v1.6 最好安装 Rancher 官方推荐的 Docker 17.06.0-ce.

Rancher server 标签

Rancher server 有两个不同的标签。对于每一个主要版本的标签,我们将提供特定版本的文档。

  • rancher/server:latest标签将是我们最新开发版本。这些版本会已经通过我们的CI自动化框架验证。这些版本不意味着在它们可以在生产环境中部署。
  • rancher/server:stable标签将是我们最新的稳定版本。这个标签是我们推荐用于生产的版本。

请不要使用有任何带有rc{n}后缀的版本。这些rc是 Rancher 的测试版本。

启动 Rancher server

你需要一行命令来启动 Rancher server。启动后,我们将跟踪查看容器的日志。

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

# 跟踪日志  
$ sudo docker logs -f <CONTAINER_ID>

需要几分钟的时间等待 Rancher serer 启动。当日志显示.... Startup Succeeded, Listening on port...后,Rancher的 UI 就会启动并运行。

日志显示基本上是实时的。请不要以为这是在初始化时的日志的最后一行,后边可能还会有更多的日志。

注: 任何有 Rancher 所在主机IP的人员都可以访问 Rancher 的主界面和API。我们建议你进行 访问控制 的配置

添加主机

为简单起见,我们将 Rancher Server 所在的机器添加为主机。在实际环境中,我们推荐使用独立的(一个或多个)主机来运行 Rancher server。

要添加主机,访问的用户界面,然后单击Infrastructure,它会立即跳到Hosts页面。点击 Add Host

非原文图片

Rancher 会提示你选择一个主机注册 URL。这个网址是 Rancher server 运行的地址,必须要保证其它被添加的主机都能访问到。把 Rancher 服务器的端口通过防火墙的 NAT 或者负载均衡器暴露出来,或者暴露到 Internet上在有些情况下是很有用的。如果你的主机有一个私有或者本地 IP 地址,例如: 192.168.*.*;Rancher 将打印一个提示信息,告诉您是否确认这个 IP 地址可以被正常访问到。

现在我们添加 Rancher 服务器主机自身,因此我们可以忽略这个提示信息。点击保存。之后的页面中,默认情况下选中的是custom选项。在这可以得到运行 rancher/agent 容器的命令。这里还有其它的公有云的选项。

网页列出了需要服务器预先打开的端口和说明。由于我们正在添加 Rancher 服务器的主机,我们需要添加这个主机所使用的共有 IP。Rancher agent 命令中如果没有这个参数,这个主机的 IP 很可能会是个错误的配置。

在需要添加的主机上运行界面提示的命令。

当您单击关闭之后就会到达Stacks - > Infrastructure页面。等待一两分钟后,主机就自动出现了。

基础架构服务

第一次登录 Rancher, 你会自动处于 默认 环境中。在默认环境中我们使用了 cattle 的环境模板来添加一些基础架构服务。 这些基础架构服务需要预先被添加进来,才能获得 Rancher 框架的支持。这些基础架构服务可以在 ` Stacks -> Infrastructure` 里找到。

这些应用在添加主机之前都会会保持 unhealthy 的状态。在增加主机后,我们需要等待一点时间,直到这些应用变为 active 的状态。

在主机页面中,默认情况下,作为基础设施服务的容器不会显示出来。你也可以勾选显示系统容器,将系统容器显示出来。

通过界面创建容器

编者注:你可能会混淆一些概念,下文翻译的“应用”英文原文都是stack,而不是application。这个翻译是按照 Rancher 里的中文翻译对应的,并非编者所创。

点击 stacks 进入 stack 页面。如果您看到欢迎屏幕,您可以点击定义一个应用。如果已经存在了一些应用,您可以点击添加服务于任何现有的应用,或创建一个新应用中添加服务。

应用/statck 仅仅是一个方便的方式来组服务结合在一起。如果你需要创建一个新的应用,点击添加应用,填好名称和描述,单击创建,然后点击添加服务。

假设我们定义了一个服务叫first-service。你可以使用默认设置单机创建。 Rancher 就会将容器添加到主机中。无论你的主机IP地址是多少,这个first-service容器的IP都会在 10.42.*.* 的范围内,因为在前文中 Rancher 使用了 ipsec 的基础设施服务,这个服务采用了 overlay 的网络架构解决容器间的跨主机通信问题。

在容器界面中,点击 first-container 的下拉菜单,你就可以进行一些容器的管理操作,例如停止容器、擦好看日志,或者进入命令行等。

通过 Docker 原生命令创建容器

Rancher也会显示那些通过 Docker 原生命令行创建的容器。

通过主机的终端,我们运行以下命令创建容器:

$ docker run -d -it --name=second-container ubuntu:14.04.2

在 Rancher 的主机页面上,你会看到一个名叫 second-container 的容器冒出来了。

Rancher 感知到 Docker daemon 发生的事件,并用恰当的方式将他们显示出来, 可以查看 native docker CLI. 获得更多的信息。

如果你查看 second-container 的 IP,你会发现它并不是10.42.*.* 范围里的,而是与 Docker deamon 类似的 IP。这是使用原生命令行创建容器的结果。

如果我们希望使用原生命令行创建容器,又将它纳入 Rancher 的 Overlay 网络,使得管理更为便利,应该怎么办呢? 很简单,我们为它在命令行中添加一个标签,例如io.rancher.container.network=true,使得 Rancher 将这个容器识别为可以管理的。

$ docker run -d -it --label io.rancher.container.network=true ubuntu:14.04.2

创建一个多容器应用

我们已经展示了如何创建单独的容器,并解释它们如何将我们的跨主机网络的连接。然而,大多数现实中的应用,是创建多种服务,每个服务由多个容器组成。例如一个LetsChat应用,可以包括以下服务:

  1. 负载均衡器LB。负载均衡网络流量重定向到“LetsChat”应用程序。
  2. 一个_网络_服务 web service 由两个“LetsChat”容器组成。
  3. 一个 db service 由一个“Mongo的”容器组成。

lb 与 web service 相连,web service 与 db service 相连(例如Mongo)。

在本节中,我们将详细介绍如何创建和部署LetsChat在牧场主的应用。

导航到stacks页面,如果您看到欢迎屏幕,您可以点击 Define a Service。如果已经有相关的应用存在了,您可以点击** Add Stack来创建一个新的应用。填好名称和描述,单击创建。然后在新的应用中点击 **Add Service

首先,我们使用mongo镜像,创建一个名为database的数据库服务。点击创建。你会立即回到应用页面(Stacks),其中将包含新创建的db service。

接下来,点击Add Service再添加另外的服务。我们将添加一个LetsChat服务,并链接到db service——创建一个名为web的服务的并使用sdelements/lets-chat镜像。 在页面中,我们将将滑块移动到——有服务的规模为2个容器。 在 Service Links,添加db service,并提供名称mongo

类似于Docker,Rancher 将从mongo中链接所需的环境变量到letschat镜像。点击创建

最后,我们创建一个负载平衡器。点击旁边的下拉菜单图标Add Service按钮。选择 Add Load Balancer。我们明明为letschatapplb。输入的源端口(即80),选择目标服务(即web),并选择一个目标端口(即8080, 假定 web service 监听 8080 端口), 点击创建

我们LetsChat应用程序现在完成了!在Stacks页面,你就可以找到负载平衡器为网络上暴露的端口。点击这个链接,你就到了 LetsChat 的应用上了。

使用 Rancher CLI 创建多容器应用程序

在本节中,我们将向您展示如何使用 Rancher CLI 创建和部署相同的LetsChat

在 Rancher 中,使用 Rancher CLI 把应用拉起来,就像 Docker Compose 工具那么简单。你同样需要docker-compose.yml文件来部署在 Rancher 上的应用。此外您可以指定一个额外的rancher-compose.yml扩展和覆盖docker-compose.yml的文件。

在上一节中,我们创建了一个带有负载均衡器的 LetsChat 应用。如果你已经在 Rancher 创建了它,你可以直接从应用中的下拉菜单导出配置。在docker-compose.ymlrancher-compose.yml文件是这样的:

DOCKER-COMPOSE.YML 示例

version: '2'
services:
  letschatapplb:
    #If you only have 1 host and also created the host in the UI,
    # you may have to change the port exposed on the host.
    ports:
    - 80:80/tcp
    labels:
      io.rancher.container.create_agent: 'true'
      io.rancher.container.agent.role: environmentAdmin
    image: rancher/lb-service-haproxy:v0.4.2
  web:
    labels:
      io.rancher.container.pull_image: always
    tty: true
    image: sdelements/lets-chat
    links:
    - database:mongo
    stdin_open: true
  database:
    labels:
      io.rancher.container.pull_image: always
    tty: true
    image: mongo
    stdin_open: true

RANCHER-COMPOSE.YML 示例

version: '2'
services:
  letschatapplb:
    scale: 1
    lb_config:
      certs: []
      port_rules:
      - hostname: ''
        path: ''
        priority: 1
        protocol: http
        service: web
        source_port: 80
        target_port: 8080
    health_check:
      port: 42
      interval: 2000
      unhealthy_threshold: 3
      healthy_threshold: 2
      response_timeout: 2000
  web:
    scale: 2
  database:
    scale: 1

Rancher CLI 的二进制包可以在 Rancher 主页面的右下角找到。适用于 Windows Mac 和 Linux.

为了在Rancher CLI 中使用 Rancher 的一系列服务,我们还需要设置一些环境变量。我们需要在 Rancher 页面中创建一个帐户API密钥。点击API - > Key。点击添加帐户API密钥。填写名称,然后点击创建。保存Access KeySecret Key。 之后就可以通过 Rancher URL,Access Key和Secret Key,使用 rancher config 来配置 Rancher CLI了。

# Configure Rancher CLI
$ rancher config
# Set the Rancher URL
URL []: http://<SERVER_IP>:8080/
# Set the access key, i.e. username
Access Key []: <accessKey_of_account_api_key>
# Set the secret key, i.e. password
Secret Key []:  <secretKey_of_account_api_key>

现在,将 docker-compose.ymlrancher-compose.yml 保存后运行如下命令:

$ rancher up -d -s NewLetsChatApp

你就可以看到一个名为NewLetsChatApp的应用就启动起来了。


Rancher 中文文档 —— Rancher 概述

原文:http://rancher.com/docs/rancher/v1.6/en/

查看本系列翻译的目录

概述


Rancher 是一个开源软件平台,用于运行和管理 Docker 与 Kubernetes。在 Rancher 中,我们不再需要从头开始整合不同的开源技术搭建容器平台。Rancher 整合提供了容器生产环境中所需要的软件技术栈。

基础架构

Rancher 可以在任何公有云或私有云的 Linux 主机上使用底层的计算资源。 Linux 主机可以是虚拟机,也可以是物理机。Rancher 对主机资源的消耗也很小。从 Rancher 的角度看,Rancher 无法区分当前管理的机器是物理机还是虚拟机。

Rancher 实现了便携的专为 Dcoker 设计的基础架构,包括 网络、存储、负载均衡、DNS 和安全性。 Rancher 可以在任何Linux主机任何云上进行部署,因为 Rancher 的基础设施服务也是由 Docker 进行部署。

容器的编排和调度

许多用户使用容器编排和调度框架来管理容器化的应用。 Rancher 包含了当下所有流行的容器编排和调度框架,包括 Docker Swarm, Kubernetes 和 Mesos. 同一个用户可以创建多个 Swarm 或 Kubernetes 集群,然后再用 Swarm 或 Kubernetes 的原生工具管理他们的应用。

除了支持这些流行的框架 Swarm, Kubernetes 和 Mesos, Rancher 也支持了一套自家公司开发的编排和调度工具 —— Cattle。

应用商店

在 Rancher 中可以很方便地在应用商店中部署多个容器集群的应用。 如果应用有版本升级,应用升级的过程都是自动化的,简单无痛。

Rancher 用户除了可以使用公有的应用商店,也可以创建自己的私有应用商店。

企业级控制

Rancher 对用户身份验证的支持非常灵活,可以自由设置登陆用户的访问权限。除此之外,Rancher 还内置了Active Directory, LDAP, 和 GitHub 认证插件。 Rancher 基于角色的访问控制权限可以同时在开发环境和生产环境中使用。

下图是 Rancher 的主要组件和功能特性。