Rancher安装手册 | 转自dockerinfo

这几天在搭建 Rancher 环境。

Rancher 是以在生产环境中运行容器为目标而构建的开源软件平台。随着 Docker 容器这种类型的应用工作负载的逐渐流行,它催生了很多与之相应的基础架构服务,如网络服务、存储服务、负载均衡,安全,服务发现和资源管理。

官方网站: https://rancher.com/

官方文档在此: http://rancher.com/docs/rancher/latest/en/

dockerinfo对其中的部分章节做了翻译http://www.dockerinfo.net/rancher/page/5

今天这篇就是dockerinfo其中的一篇翻译。需要学习的朋友可以两边都对照着看,又达到比较快的速度,也可以达到深入理解的层次。

以下是转载:

准备 Linux 主机

先安装一个64位的 Ubuntu 14.04 Linux 主机,其内核必须高于 3.10 。或者其它同等的 Linux 发行版。你可以使用一台笔记本、一个虚拟机或者一台物理的服务器。请确保目标安装 Linux 主机的内存至少1GB。

然后安装 Docker 在这个 Linux 主机上, 可以参考 Docker安装说明。

启动 Rancher 服务器

启动 Rancher 服务器所需要做的动作就只有一条命令。在启动了这个容器之后,我们将能查看到这个运行中的服务器的日志。

$ sudo docker run -d --restart=always -p 8080:8080 rancher/server
# 显示 Rancher 服务器的容器 ID,替换containerid
$ sudo docker ps
# 显示并查看 Rancher 服务器的日志
$ sudo docker logs -f containerid

启动 Rancher 服务器可能需要花几分钟时间。这取决于您下载 Rancher Server镜像的速度。当日志中显示 “…. Startup Succeeded, Listening on port…” 以后,Rancher UI 图形界面现在就能正常访问了。

Rancher 服务器的图形界面访问端口是 8080 ,通过在浏览器中访问这个网址 http://linux_host_ip:8080 , 您就可以打开 Rancher 服务器的图形界面。如果您的浏览器和 Rancher 服务器都运行在同一台服务器上,你需要使用主机的真实 Ip 地址,如: http://192.168.1.100:8080 , 而不是 http://localhost:8080 或者http://127.0.0.1:8080

注意: Rancher 的访问控制在初始安装时并没有配置,你的 Rancher 服务器图形界面和 API 能在任何能访问到您的 IP 地址的地方被访问到。我们建议配置访问控制参考 访问控制.

添加主机

为简化操作,我们将添加运行 Rancher 服务器容器的主机。而在实际的生产环境中,我们建议使用专用的主机来运行 Rancher 服务器。

通过点击图形界面的 Infrastructure 标签来添加主机,然后您将会看到 Hosts 页面。Rancher 会提示您选择一个 IP 地址。这个 IP 地址必须可以被所有即将添加的主机访问到。把 Rancher 服务器的端口通过防火墙的 NAT 或者负载均衡器暴露出来,或者暴露到 Internet上在有些情况下是很有用的。如果你的主机有一个私有或者本地 IP 地址,例如: 192.168.*.*;Rancher 将打印一个提示信息,告诉您是否确认这个 IP 地址可以被正常访问到。

现在我们添加 Rancher 服务器主机自身,因此我们可以忽略这个提示信息。点击 Save ;您将进入默认的Custom 选项页面,您在这可以得到运行 rancher/agent 容器的命令。这里还有其它的公有云的选项,使用这个选项可以实现通过 docker-machine 去启动主机节点。在 Web 界面上,Rancher 提供的用于添加主机的命令如下:

$ sudo docker run -d –privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.7.9 http://172.17.0.3:8080/v1/scripts/DB121CFBA836F9493653:1434085200000:2ZOwUMd6fIzz44efikGhBP1veo

由于我们正在添加 Rancher 服务器的主机,我们需要添加这个主机所使用的共有 IP。Rancher agent 命令中如果没有这个参数,这个主机的 IP 很可能会是个错误的配置。您可以添加这个 IP 地址在Step 4,这将会修改命令,并加入一个环境变量。

$ sudo docker run -e CATTLE_AGENT_IP=172.17.0.3 -d –privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.7.9 http://172.17.0.3:8080/v1/scripts/DB121CFBA836F9493653:1434085200000:2ZOwUMd6fIzz44efikGhBP1veo

在运行 Rancher 服务器的主机上运行这个命令。

当您在 Rancher 的页面中点击 Close 按钮后,您会被返回到 Infrastructure -> Hosts 页面。在一两分钟后,这个主机将自动出现在这里。

使用图形界面创建一个容器

进入 Applications -> Stacks 页面,如果这里还没有服务,你可以点击 “Add Service” 按钮。你可以输入一个类似 “first_container” 的名字。您现在使用默认配置并点击 Create 。Rancher 将开始在这个主机上启动两个容器。一个容器是您所创建的名为first_container ;另外一个容器是Network Agent,这是个由 Rancher 创建的系统容器,它用来处理扩主机联网和健康检查等任务。

不管你的主机是什么 IP 地址,first_containerNetwork Agent 将会的到 10.42.*.* 网段的 IP 地址。Rancher 已经创建了能在不同主机之上的让所有容器可以相互通信的覆盖网络。

如果你点击 first_container的下拉菜单,你可以执行各种动作,例如:停止容器,查看日志,或者进入容器的 控制台。

使用 Docker 原生命令创建一个容器

Rancher 会显示所有在主机上的容器,即使有些容器是在图形界面之外创建的。在主机的 shell 命令行里创建一个容器。

$ docker run -it --name=second_container ubuntu:14.04.2

在图形界面中,你将看到 second_container 在你的主机上出现!如果你通过退出命令行来退出用命令方式创建的容器,在 Rancher 图形界面中将立刻显示这个容器的状态为停止。

Rancher 可以对带外发生的事件作出反应,并把当前的显示状况如实地整合在它的视图中。

如果你查看容器 second_container 的 IP 地址,你会注意到他不在 10.42.*.* 网段中。它的 IP 地址是通过 Docker 后台服务获得的。这是通过命令行方式创建容器的正常的结果。

如果我希望通过命令行创建的容器依然具有 Ranger 覆盖网络的网络地址呢?我们所需要做的就仅仅是在命令中加一个标签。

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

标签 io.rancher.container.network 让我们通过命令行传递了一个通知,这样 Rancher 会为把容器配置为连接到覆盖网络。

Rancher中文手册目录


一个简单的局域网服务器互联案例(3.5) —— 使用说明

接上篇。这是一篇使用手册。

经过前三篇文章的操作后,已经可以将环境交付给开发人员使用了。这是一篇简单的使用说明。分为管理员篇和开发人员篇。

管理员

所有的操作统一在100机器上进行。

添加用户

例如我们需要添加以为名叫keluTest的用户,使用

./addUser.sh keluTest

即可在4台机器上生成该用户,初始密码是Qweewq,密钥所在位置为 /home/keluTest/.ssh/keluTest

删除用户

./delUser.sh keluTest

即可在四台机器上同步删除用户。

开发人员

使用管理员提供的密钥和密码进行登陆,例如开发人员为keluTest,登陆方式为

ssh keluTest@10.37.231.228:10100
ssh keluTest@10.37.231.228:10101
ssh keluTest@10.37.231.228:10102
ssh keluTest@10.37.231.228:10103

在开发机上简单使用

ssh 100
ssh 101
ssh 102
ssh 103

即可访问。

本地Windows上使用putty或其它工具登陆。其它工具可以直接使用密钥登陆,putty需要生成自用密钥,生成方式参照这篇文章:《一个简单的局域网服务器互联案例 1》putty大概如下图配置即可:


一个简单的局域网服务器互联案例(3) —— 一键生成新用户

接上篇。

背景

在前面的系列里我完成了服务器安装、访问配置、局域网组建和普通网段下对开发网段的访问。一个可用的雏形已经成型。

不过里面还缺少一些东西,其中一个就是开发用户的管理。共用root账号进行服务器操作,虽说可行,也简单粗暴了一些。基本的用户管理也是应该有的。

所以这一篇主要完成在4台机器中创建新用户,并快捷生成密钥的脚本。系统环境为CentOS 7.

过程

脚本的逻辑

  1. 生成一个带有默认密码的用户
  2. 将用户加入wheel组,使之拥有sudo权限(centos下wheel用户组有sudo权限)
  3. 生成密钥
  4. 生成config文件并修改文件属性
  5. 在其它服务器上生成同名账号
  6. 将生成的密钥和配置文件同步到其他服务器上去
  7. 在其他机器上修改文件用户组
  8. 修改本机文件用户组

脚本已经放到github上了:https://github.com/kelvinblood/gist/blob/master/addUser.sh

#!/bin/bash

. /etc/profile


VERSION=' Version 0.0.1, 2017年10月12日, Copyright (c) 2017 kelvinblood';

usage () {
    echo '没有帮助';
}



if [ "$#" -eq 0 ]; then
    usage
    exit 0
fi

case $1 in
    -h|h|help )
        usage
        exit 0;
        ;;
    -v|v|version )
        echo $VERSION;
        exit 0;
        ;;
esac

if [ "$EUID" -ne 0 ]; then
    echo "必需以root身份运行,请使用sudo等命令"
    exit 1;
fi

USERNAME=$1
PASSWDCH="$USERNAME:Qweewq"


if [ -e "/home/$USERNAME" ]; then
    echo '该账户home目录已存在'
    exit 0
fi

useradd $USERNAME -d /home/$USERNAME -G wheel;
echo $PASSWDCH | chpasswd

if [ -e "/home/$USERNAME/.ssh" ]; then
    rm -rf "/home/$USERNAME/.ssh"
fi


mkdir /home/$USERNAME/.ssh
cd /home/$USERNAME/.ssh

sudo ssh-keygen -b 1024 -t rsa -C $USERNAME -f "/home/$USERNAME/.ssh/$USERNAME"
touch authorized_keys
touch config

cat $USERNAME.pub >> authorized_keys
chmod 400 authorized_keys

cat >> config << EOF
# add by weikelu
Host    100
  HostName        172.10.1.100
  Port            22
  User            $USERNAME
  IdentityFile    /home/$USERNAME/.ssh/$USERNAME
Host    101
  HostName        172.10.1.101
  Port            22
  User            $USERNAME
  IdentityFile    /home/$USERNAME/.ssh/$USERNAME
Host    102
  HostName        172.10.1.102
  Port            22
  User            $USERNAME
  IdentityFile    /home/$USERNAME/.ssh/$USERNAME
Host    103
  HostName        172.10.1.103
  Port            22
  User            $USERNAME
  IdentityFile    /home/$USERNAME/.ssh/$USERNAME
EOF

###########################################################

ssh 101 "useradd $USERNAME -d /home/$USERNAME -G wheel"
ssh 101 "echo $PASSWDCH | chpasswd"

cd /home/$USERNAME/.ssh

ssh 101 "mkdir /home/$USERNAME/.ssh"
scp config 101:"/home/$USERNAME/.ssh/config"
scp $USERNAME 101:"/home/$USERNAME/.ssh/$USERNAME"
scp authorized_keys 101:"/home/$USERNAME/.ssh/authorized_keys"
ssh 101 "chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh"

###########################################################

ssh 102 "useradd $USERNAME -d /home/$USERNAME -G wheel"
ssh 102 "echo $PASSWDCH | chpasswd"

cd /home/$USERNAME/.ssh

ssh 102 "mkdir /home/$USERNAME/.ssh"
scp config 102:"/home/$USERNAME/.ssh/config"
scp $USERNAME 102:"/home/$USERNAME/.ssh/$USERNAME"
scp authorized_keys 102:"/home/$USERNAME/.ssh/authorized_keys"
ssh 102 "chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh"

###########################################################

ssh 103 "useradd $USERNAME -d /home/$USERNAME -G wheel"
ssh 103 "echo $PASSWDCH | chpasswd"

cd /home/$USERNAME/.ssh

ssh 103 "mkdir /home/$USERNAME/.ssh"
scp config 103:"/home/$USERNAME/.ssh/config"
scp $USERNAME 103:"/home/$USERNAME/.ssh/$USERNAME"
scp authorized_keys 103:"/home/$USERNAME/.ssh/authorized_keys"
ssh 103 "chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh"

###########################################################

chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh

一个简单的局域网服务器互联案例(2) —— 不同网段下的访问

接上篇。

背景

在上一篇我组建一个由4台服务器组成的局域网。然而这个局域网是有一个限制——必须要接入WiFi才能进行访问和开发。

由于这个局域网和开发人员不处在同一个网段内,每次访问都需要切换到WiFi所在的网络才能访问,非常繁琐,而且如果是在不同楼层,甚至不同地区的开发人员,基本就不能访问了。

所以这一篇的目标是在公司内网环境下可以自由接入该局域网开发环境。

搭建

组网示意图

过程

解决这样的需求有两种方式,一种是类似于花生壳的内网穿透技术,请求发送到外部服务器,外部再转发到内网里来。然而这并不是这次开发中需要的。二是在路由器上做端口映射,像aws一样配置路由即可。

端口映射

如上图配好映射后,同网段内的电脑访问开发机的方式变为:

ssh root@xx.xx.xx.39:10100
ssh root@xx.xx.xx.39:10101
ssh root@xx.xx.xx.39:10102
ssh root@xx.xx.xx.39:10103

今后每当服务器启动某些对外的服务时,通过路由器的这个设置,打开对应的端口映射即可。


一个简单的局域网服务器互联案例(1)

用了一天时间安装服务器和组建局域网,记录一下过程。

背景

组建一个由4台服务器组成的局域网,提供给开发人员使用,要求安装CentOS 7系统,部署好docker环境。

搭建

组网示意图

安装CentOS

最简便的方法是,在官网下载好CentOS镜像,写入U盘,从U盘启动的方式,将系统安装到目标的服务器中。

配置路由器

  1. 配置LAN地址

    为了不和上一级路由器冲突,局域网内最好避免选择诸如192.168.1.1这样的IP地址段。

    想了一下最后用了“172.10.1.1”的IP段。

    配置LAN地址

  2. 配置IP与Mac映射

    在路由器不设定IP与Mac映射时,每当有新的设备连接到网络是,路由器DHCP会随机选择一个可用的IP提供给设备。

    开发环境里我们尽量避免这种不确定性带来的麻烦。

    配置IP与Mac映射

    在这里我配置了100-103,一共4台机器。

配置第一台服务器 - 100

  1. docker ce

    CentOS 下使用的是 yum 命令,更新一下。

     yum update
    

    发现速度不慢,就不更改源地址了。

    然后安装docker ce

     yum install -y yum-utils device-mapper-persistent-data lvm2
     yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
     yum-config-manager --enable docker-ce-edge
     yum-config-manager --enable docker-ce-test
     yum install docker-ce
    

1 2 3 4 5 6 44 45 46 47 48