安装Rancher服务器


Rancher被作为一组Docker容器来部署,rancher运行只启动两个简单容器。一个容器作为管理服务器,另一个容器在节点上作为代理。

注意:您可以通过运行docker run rancher/server --help获取Rancher服务器容器的所有帮助选项。

要求

  • 任何主流的Linux发行版都有docker的支持版本。RancherOS,Ubuntu,RHEL / CcntOS 7进行了更严格的测试。

    • 对于RHEL / CcntOS,Docker不推荐使用默认存储驱动程序,即使用环回的devicemapper 。请参考Docker文档,了解如何更改。
    • 对于RHEL / CcntOS,如果要启用SELinux,则需要安装其他SELinux模块
  • 1GB RAM

  • MySQL服务器应该有一个max_connections设置> 150

    • MYSQL配置要求
      • 选项1:用Antelope运行,默认值为 COMPACT
      • 选项2:与Barracuda一起运行MySQL 5.7,默认ROW_FORMAT值为Dynamic

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

Rancher服务器标签

Rancher服务器有2个不同的标签。对于每个主要版本标签,我们将提供特定版本的文档。

  • 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用户界面

UI和API在8080端口上提供服务。在Docker镜像下载完成之后,Rancher成功启动后可能需要一两分钟的时间才能查看。

导航到以下网址:http://<SERVER_IP>:8080。该<SERVER_IP>是运行Rancher主服务器主机的公网IP地址。

一旦UI启动并运行,您可以通过添加主机或从基础架构目录中选择一个容器编排。默认情况下,如果没有选择不同的容器编排类型,环境默认使用cattle。将主机添加到Rancher之后,您可以从Rancher目录开始添加服务或启动模板。

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

如果不是使用Rancher服务器附带的内部数据库,您可以在启动时指向外部数据库。该命令将是一样的,但附加参数以指导如何连接到外部数据库。

注意:您的数据库,数据库的名称和用户需要先创建,但不需要创建任何模式。Rancher会自动创建与Rancher相关的所有模式。

以下是创建数据库和用户的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 (数据库地址) --db-port 3306 --db-user (数据库用户名) --db-pass (数据库密码) --db-name (数据库名)

传入的大多数选项具有默认值,不是必需的。也可以只配置MySQL服务器的地址。

--db主机的IP或MySQL服务器的主机名
- MySQL服务器的db-port端口(默认值:3306)
- 用于 MySQL登录的db-user用户名(默认值:cattle)
--db通密码为 MySQL的登录(默认:cattle)
--db-name要使用的MySQL数据库名称(默认值:cattle)

注意:在以前的Rancher服务器版本中,我们使用环境变量连接到外部数据库,但这些环境变量将继续工作,但是Rancher建议使用参数。

启动Rancher服务器 - 单容器 - 绑定MySQL卷

如果要将容器内的数据库保存到主机上的卷上,请通过绑定MySQL卷来启动Rancher服务器。

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

使用此命令,数据库将保存在主机上。如果您已有一个Rancher容器,希望绑定MySQL卷,请查阅我们的升级文档中

启动Rancher服务器 - Full Active/Active HA

在高可用性(HA)中运行Rancher服务器与使用外部数据库运行Rancher服务器一样简单,暴露了一个附加端口,并为外部负载平衡器的命令添加了一个附加参数。

HA要求

  • HA节点:

    • 任何流行的Linux发行版,都具有受支持的Docker版本。RancherOS,Ubuntu,RHEL / CcntOS 7进行了更严格的测试。

      • 对于RHEL / CcntOS,Docker不推荐使用默认存储驱动程序,即使用环回的devicemapper 。请参考Docker文档,了解如何更改。
      • 对于RHEL / CcntOS,如果要启用SELinux,则需要安装其他SELinux模块
    • 节点之间开通需要的端口:93458080

    • 1GB RAM

  • MySQL数据库:

    • 至少1 GB RAM
    • 每个Rancher服务器节点有50个连接(例如,A 3节点设置将需要至少支持150个连接)
    • MYSQL配置要求
      • 选项1:用Antelope运行,默认值为 COMPACT
      • 选项2:使用Barracuda运行MySQL 5.7,默认ROW_FORMAT值为Dynamic
  • 外部负载均衡:

    • 需要在节点和外部负载平衡器之间打开的端口: 8080

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

对更大部署的建议

  • 每个Rancher服务器节点应具有4 GB或8 GB堆大小,这需要至少8 GB或16 GB的RAM
  • MySQL数据库应该有快速的磁盘
  • 对于真正的HA,建议使用具有适当备份的复制MySQL数据库。使用Galera并强制写入单个节点,由于事务锁定,将是一种替代方案。

  • 在您要添加到HA设置的每个节点上,运行以下命令:

    #在HA群集中的每个节点上启动
    $ 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获取帮助

  • 配置一个外部负载平衡器,它将平衡端口80和443之间的流量,这些节点将在一个节点池中运行,该节点将运行Rancher服务器,并针对端口8080上的节点。您的负载平衡器必须支持websockets and forwarded-for headers,以使Rancher正常运行。请参阅SSL设置页面,假如需要配置SSL设置。

关于HA中的Rancher服务器节点的注意事项

如果您的Rancher服务器节点的IP更改,您的节点将不再是Rancher HA群集的一部分。您必须使用不正确的--advertise-addressIP来停止旧的Rancher服务器容器,并启动具有正确--advertise-address IP的新的Rancher服务器。

在AWS中的弹性/经典负载平衡器(ELB)后面运行Rancher服务器

在AWS中,我们建议在您的Rancher服务器前面使用ELB。为了使ELB能够正确使用Rancher的Websockets,您需要启用代理协议模式,并确保禁用HTTP支持。默认情况下,ELB在HTTP / HTTPS模式下启用,不支持websockets。监听器配置必须特别注意。

如果您有ELB设置的问题,我们建议您尝试使用terraform版本,因为这样可以减少设置错误的几率。

注意:如果您使用自签名证书,请阅读更多关于如何在我们的SSL部分的AWS配置您的ELB

侦听器配置 - 明文

对于简单的,未加密的负载平衡目的,需要以下监听器配置:

配置类型 负载平衡器协议 负载平衡器端口 实例协议 实例端口
Plaintext TCP 80 TCP 8080(或--advertise-http-port启动Rancher服务器时使用的端口)

启用代理协议

为了使Web套接字正常运行,必须应用ELB代理协议策略。

$ aws elb create-load-balancer-policy --load-balancer-name <LB_NAME> --policy-name <POLICY_NAME> --policy-type-name ProxyProtocolPolicyType --policy-attributes Attributcname=ProxyProtocol,AttributeValue=true
$ aws elb set-load-balancer-policies-for-backcnd-server --load-balancer-name <LB_NAME> --instance-port 443 --policy-names <POLICY_NAME>
$ aws elb set-load-balancer-policies-for-backcnd-server --load-balancer-name <LB_NAME> --instance-port 8080 --policy-names <POLICY_NAME>
  • 健康检查可以配置为使用HTTP:8080 /ping作为您的路径。

配置使用Terraform

以下可用作使用Terraform进行配置的示例:

resource "aws_elb" "lb" {
  name               = "<LB_NAME>"
  availability_zones = ["us-west-2a","us-west-2b","us-west-2c"]
  security_groups = ["<SG_ID>"]

  listcner {
    instance_port     = 8080
    instance_protocol = "tcp"
    lb_port           = 443
    lb_protocol       = "ssl"
    ssl_certificate_id = "<IAM_PATH_TO_CERT>"
  }

}

resource "aws_proxy_protocol_policy" "websockets" {
  load_balancer  = "${aws_elb.lb.name}"
  instance_ports = ["8080"]
}

在AWS中运行应用程序负载平衡器(ALB)后的Rancher服务器

我们不再推荐使用弹性/经典负载平衡器(ELB)的应用程序负载平衡器(ALB)。如果仍然选择使用ALB,则需要将通信流引导到节点上的HTTP端口,默认情况下是8080。

为TLS启用Active Directory或OpcnLDAP

为使用TLS的Rancher服务器启用Active Directory或OpcnLDAP,Rancher服务器容器将需要使用由LDAP设置提供的LDAP证书启动。在要启动Rancher服务器的Linux机器上,保存证书。

通过绑定安装证书的卷来启动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服务器容器的日志来检查ca.crt是否成功传递给Rancher服务器容器。

$ 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

在HTTP代理之后启动Rancher服务器

为了设置一个HTTP代理,Docker守护进程将需要修改以指向代理。在启动Rancher服务器之前,编辑该/etc/default/docker文件以指向您的代理并重新启动Docker。

$ sudo vi /etc/default/docker

在文件中,编辑#export http_proxy="http://127.0.0.1:3128/"它以指向您的代理。保存更改,然后重新启动docker。每个操作系统上重新启动Docker是不同的。

注:如果您使用systemd运行docker,请按照码docker说明了解如何配置HTTP代理。

为了加载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,还有后面的HTTP代理没有额外的要求。

results matching ""

    No results matching ""