ansible--一键部署redis5.0.5集群及全套脚本
前两天带着大家写了两个脚本,难度是递增的,可以到公众号脚本命令板块的an脚本中找到相关例子。其中有些配置是都是我们实际生产生活能用到的。今天我们把难度再上一些!源码安装redis5.0.5最新版集群。
声明:因为脚本需要反复测试,prot 这个变量名写错了到后来才发现,但是全局调用的最多的就还是它。所以不改了。就这样吧!
脚本功能:
利用ansible构建三台物理机组成的redis集群,每台物理机上面都有一主一备两个实例,故障自动切换并保证redis相关实例开机自启动。
先说怎么用:
vim /etc/ansible/hosts
波哥配置的是这样:
咱们项目就是订好了这个端口号,不要变了。因为有个地方我把端口号写死了。
再配置:
vim work_yml/redis.yml
这里面按我的例子写就行了。然后执行
ansible-playbook redis.yml
集群会自动开机启动
手动关机机命令:
ansible redis -m shell -a "sh /opt/redis/redis_cluster/script/shutdown.sh"
手动开机命令:
ansible redis -m shell -a "sh /opt/redis/redis_cluster/script/start.sh"
登录集群
redis-cli -h 192.168.1.117 -p 7000
192.168.1.117:7000> cluster nodes
波哥不容易!江湖规矩:人不走空,点赞或者转发奥!
OK伸手党可以撤离战场!!!
################################################
剩下的继续!上脚本架构图:
系列文章我们就接着之前的篇幅说,有些步骤我直接不讲了。大家可以看到这次波哥创建了很多templates,是的,因为源码安装比较复杂,还有很多脚本都在里面配置。但是看字面的意思大家应该能理解个差不多,这些东西都是干嘛的。
走!跟波哥看看我们的入口文件:
之前我们入口文件内容都比较多,但是这次不一样了,因为我们要做的不是一步就能完成的事,那么我们的入口文件就不做逻辑处理使用,他有两个作用:
第一:启动文件使用。就好比我们要玩游戏,那么桌面上就会给你们创建一个快捷方式。OK,就这个文件就是快捷方式的作用。
第二:全局的参数配置。
上面的参数大家能看懂,不多说了!
入口文件过!
接下来我们去看roles目录的tasks:
上面的目录架构我们看到tasks下面有三个文件,当我们ansible执行playbook的时候,动作就会到tasks目录下面去找,他默认会第一个找main.yml
我们再看看这main.yml是如何写的?
就这两句,这里就说明task的任务顺序和指定任务文件名奥!
include就是干这个用的。这个就是jinjia2语句,都得记住!
咱们再去看init_env.yml
内容比较多,这里不多介绍,就是初始化作用的,创建目录,配置模板,分发脚本什么的杂活。没什么值得特别介绍的。
咱们再看install_redis文件:
这里面有点东西全网都没人提这个事。
变量的运算:这里面有些内容是需要变量运算的,因为我们的端口是有规律的增长7000到7005,我看有不少人干脆写出来,确实可以写但是麻烦。要是100个呢?对吧,所以这里需要多口数进行加法运算。
- set_fact: prot={{prot|int+1}}
大家看这句话,就是端口数+1,变成了7001了。这个int就是强调运算完之后prot这个变量还是数字类型,如果不强调添加,那么就会变成字符串,下一个节点就没办法对其进行运算了。这个是个大坑奥!
- name: make redis
shell: /bin/bash {{baseDir}}/redis_cluster/script/installRedis.sh
async: 300
poll: 5
tags: ['make redis']
照比之前的普通脚本,咱们这里咱们用到了playbook的异步,当然playbook默认异步是同时触发5个任务(这个知识点记住,面试的时候有可能会考)。
async:参数值代表了这个任务执行时间的上限值。即任务执行所用时间如果超出这个时间,则认为任务失败。此参数若未设置,则为同步执行。poll:参数值代表了任务异步执行时轮询的时间间隔。templates有点多:波哥写个时候还挺费劲的。就不讲了,应该能看懂就是shell脚本。
咱们最后总结一下咱们这个项目的ansible-playbook的写法和特点。
1、入口文件:全局变量配置。2、tasks文件拆分:将一个大的目的拆分成几个大步骤,然后用main文件导入细分的二级任务文件并且控制其执行顺序。3、变量类型声明和运算。4、模板配置及ansible+shell脚本调用。
波哥不容易!江湖规矩,人不走空,如果对你有用的情况下或者你觉得还行,点赞、转发分享选一样奥!
关注公众号后回复 :redis集群 获得项目源码
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2019-04-25 Redis 高级部分
2019-04-25 Istio
2019-04-25 浅谈Kubernetes生产架构
2019-04-25 使用cert-manager实现Ingress https
2019-04-25 Ceph mimic
2019-04-25 X-pack 6.4.0 破解
2019-04-25 elk插件以及分词器安装