设为首页 收藏本站
查看: 1417|回复: 0

[经验分享] 如何为Keepalived服务创建基于Rancher的Catalog

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-18 11:16:04 | 显示全部楼层 |阅读模式
Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

首先我们简要说明一下Keepalived 的相关启动脚本及配置文件:keepalived.sh是核心的脚本用来启动服务,keepalived.conf文件则是该服务的配置文件。对于 Keepalived,我们需要关心的几个重要参数如下:
  • 虚拟IP地址及其掩码
  • VRRP所侦听检测的端口(也就是HA针对具体哪一个端口做健康检查)
  • VRRP基于哪个网卡接口发布。


我相信Rancher的官方手册已经对Catalog的制作流程做了详尽的说明,但是仍然有一些朋友看了Rancher手册上Catalog那一节,晕晕乎乎,不懂如何制作应用的 Catalog。

(官方手册链接在此):http://docs.rancher.com/rancher/ ... og/private-catalog/

结合Keepalived,我们来看具体的Catalog是如何创建的吧。

首先,你需要在github或者你自己的gitlab上创建一个项目,这个项目只要能被git clone指令正常处理就 OK。 例如我们在github网站上创建的项目结构如下图所示:

wKiom1h9eR3T0MxCAAHTbrP3j9M478.jpg

templates目录里对应的是我们Rancher里Cattle环境的Catalog。kubernetes-templates和swarm-templates以及mesos-templates则对应不同环境的模板。进入这个templates,我们可以看见在Rancher Catalog页面对应的那些软件模板名。

我们进入Keepalived文件夹看个究竟,就会很容易的了解官方文档对Catalog编制的流程指引。

这个catalogIcon-keepalived.png图正是我们看见的它:

wKiom1h9eVjhOmWdAAA9kI5I-sY910.jpg

config.yml文件则是该catalog的基础描述;0目录是指第一个版本,那么下一次你发新版的Catalog,则需另建立一个1目录。

wKiom1h9eWeTAr5eAAAZWL2UFGs957.jpg

每个版本文件夹例如0里面均包含了三个文件。

wKioL1h9eXWztu3oAAENrIVuVSg387.jpg

这正是我们创建一个Stack所需要的docker-compose.yml以及rancher-compose.yml,当然还有一个README.md 文件,用以对Stack进行详细描述。

wKiom1h9eYewb7g6AACSnus3Zj4731.jpg

对于这个Keepalived,其 docker-compose.yml特别的简单:

wKioL1h9eZmw5B_sAAAuJhR2tyc715.png

不过这里的image你可需要花点功夫了,你需要处理正确的环境变量、参数的传递。否则我们在Rancher Catalog里看到的这些参数传递一旦出现问题,那么服务肯定跑不起来了,用于制作image的Dockerfile内容如下 :

wKiom1h9eauTLx4-AAAsWRHUyTA479.png

这些自定义配置选项是如何实现的呢?

wKioL1h9ebmiym9NAACKTGGgeVU914.jpg

官方文档告诉我们,是在 rancher-compose文件里来定义。还是以我们的Keepalived服务为例子:

wKioL1h9ednR08vkAABOk3PpzDQ663.png

在rancher-compse.yml文件的question小节里定义了很多UI对象的属性(例如:变量名、数据类型、是否必选项、标签、描述、默认值等等),而在answers.txt文件中则相应的给出了这些项目的默认值状态。

以实际的Keepalived服务而言,我们可以看见docker-compose.yml文件里定义了四个环境变量 (VIRTUAL_IP、 CHECK_PORT、 INTERFACE、 NETMASK_BIT)以及一个常量VRID:

wKiom1h9efGQrdS5AAASuIeSf6I151.png

以上四个环境变量是可以被容器的shell所直接调用的,例如keepalived.sh脚本中就调用了这四个变量,而这四个变量的具体赋值正是在Catalog制作阶段完成的,其值由rancher-compose.yml文件里的变量进行输出,也就是:

wKioL1h9ef_TreNZAAAcNRXUG6o763.png

特别需要注意的是 keepalived.sh 脚本在运行期是需要读取配置文件 keepalived.conf 文件里的参数的,特别是上述这四个参数,那么由于 keepalived.conf 文件必须在 images 生成之前在 Dockerfile 里写好,因此在 Dockerfile 里,它们一定是变量,而在容器运行起来之后,keepalive.sh 运行之前需要把变量赋值,这些值正是用户填写的。我们看一下 keepalived.sh 是如何实现的呢?

通过关键的四句 sed 指令配合正则表达式:

wKioL1h9ehHQoEDOAAD0aTAPuHE685.jpg

keepalived.sh脚本成功的将容器运行期的 keepalived.conf配置文件中的变量参数替换为了常量(这个常量由容器的环境变量传递进 Linux Shell 环境)。

这样一个完整的Catalog创建流程包括如何处理环境变量与自定义参数的传递机制就解释清晰了,按照这种思路,我们可以很方便地创建各种不同的应用模板,以实现 Rancher 的一键部署功能。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-330195-1-1.html 上篇帖子: 最详细的keepalived+lvs-dr配置文档 下篇帖子: keepalived 详解 如何
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表