rancher cattle管理docker容器,lb负载实现水平扩展

1. 安装Rancher服务

 

环境准备

至少准备一台linux主机(我用的是3台centos7.9),并支持docker

IP主机名系统docker版本
192.168.56.104mastercentos71.13.1
192.168.56.102slave1centos71.13.1
192.168.56.105slave2centos71.13.1

 

基于docker构建

 

使用如下镜像,Rancher server服务只需要构建在一台机器上即可。我选用的slave1(资源空闲多)构建rancher server

下载镜像

$ docker pull rancher/server

构建容器

$ docker run -d -p 8090:8080 --name rancher rancher/server

rancher集群参数:

$ –advertise-address IP or Node

rancher有内置的数据库,一般不需要连接外部数据 如果需要连接外部数据库,参数:

$ –db-host myhost.example.com –db-port 3306 –db-user username –db-pass password –db-name cattle

 

初始设置

访问:http://192.168.56.102:8090/,访问失败请稍等一会。

 

设置中文

拉到右下角,我最后才发现~

 

2. 实践Docker容器管理

 

在添加你的第一个服务或构建第一个容器之前,需要先添加一台支持Docker的Linux主机,要不然什么都做不了:

 

向Rancher服务注册Linux主机

注意:在添加主机时,先填写当前要添加的主机IP。不设置主机IP的话,添加loadbalance服务时,分布在其他主机上的容器服务可能会代理不到。

下面红框的意思是:复制这个命令,在支持docker的Linux主机上运行。向rancher服务注册该主机。其实际操作是下载并运行 rancher/agent:v1.2.11 这个镜像。并向192.168.56.102:8090这个Rancher服务注册。

可以发现,我的3台机器都注册到rancher服务了。

 

尝试构建应用服务

 

我先简单尝试,在Default环境构建一个基于docker的Nginx服务。

添加Nginx服务,端口映射90->80

点击构建后,可以看到在主机名为slave2的机器上,已经构建完成。下图那个IP=10.42.77.212,是构建后的容器内部地址,外部无法访问。

访问成功,没有问题。这个slave2我已经在本机电脑hosts配置了域名解析。

至此,Rancher构建完成并完成了简单的测试。

 

总结几点

  1. 对应用点击升级后,rancher支持滚动发布。原先的容器停用并启动一个新的容器。但必须点击“升级完成”,新应用才生效。否则是原应用生效。(点击升级时,修改映射主机的端口号。就可以看到是原端口还是新端口生效)
  2. Default环境注册了3个主机.(master、slave1、slave2、)。我升级应用服务Nginx并修改映射主机端口是100。原生效的服务是slave2:90,但新运行容器构建到主机master了。它会在多个可用主机间,自行选择来构建应用服务。
  3. Default环境,我从“基础架构” -> “主机”,把该环境注册的master, slave2先停用、再删除。结果发现刚构建在master机器上的Nginx容器,又被其挪到了主机slave1上。

以上3点亲测。就不截图了。

 

 

3. 使用loadblance代理应用服务

 

我先添加一个应用 mynginx。在这个应用上添加服务

继续添加一个Nginx服务(请注意:选择 “总是在每台主机上运行一个此容器的实例”)。

再添加一个loadbalance服务,给nginx服务做代理。

负载均衡服务(请注意:选择 “总是在每台主机上运行一个此容器的实例”):

当构建完成后。我们发现,rancher在两台主机上分别构建了 nginx 和 nginx-loadbalance 两个服务。

需要明确:这两个lb服务分别只能对本主机上的nginx服务,实现代理。跨主机间的代理不能实现。

 

测试以下,访问代理 loadbance 服务提供的端口:

测试完成,应用的代理服务能正常使用。

 

4. 容器集群的横向扩容,以及loadbalance代理的意义

 

现有一个应用栈myapp,在每台主机上分别构建一个nginx服务,以及该服务的loadbalance代理服务。代理服务的端口映射是:8000->80。

现在因为service1压力比较大,我们准备横向扩容,继续添加服务节点。点击编辑:

将该应用服务节点,扩展至5个

我们可以发现,当服务节点数 > 环境主机数时。容器会随机散布在各主机上。现在slave2主机已经运行了3个service1服务的容器。

当N次请求http:slave2:8000时,通过分别监控slave2主机这3个容器的日志,可以发现:slave2上的lb实现了对应用服务,在本主机的多个容器的负载均衡。

 

总结loadbalance代理的意义:

  1. 容器服务不对主机进行端口映射,而是使用rancher提供的基础设施li-service-haproxy。lb代理通过绑定引用服务名作为标签。会负载当前环境下、分布在多个主机里的应用服务的容器。
  2. 实际应用中lb一般会启动两个容器服务,来避免单点问题。
  3. lb服务已经实现了负载均衡,能直接对接F5。如果一个环境对应的主机过多,2个lb容器要绑定到固定的两台主机。以便F5或ng代理能匹配到对应的ip上。

 

5. 访问控制

添加登录用户验证

登录成功后,设置默认环境

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值