Ansible:实现一键部署redis主从复制的playbook
文章目录
- 前言
- 一、Ansible是什么?
- 二、使用步骤
- 1.安装ansible
- 2.配置资源清单
- 3.给所有主机传密钥
- 4.准备redis压缩包
- 5.手动安装获得redis主配置文件
- 6.playbook
- 7.启动所有节点的redis
前言
目前常见的运维自动化管理工具主要是Puppet、SaltStack、Ansible,其中Ansible是最简单易用的,本文主要探讨使用ansible来部署redis主从复制的playbook。(阅读本文需要对ansible有所了解)
一、Ansible是什么?
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
优点主要有:
- 模块可以用任何语言开发
- 被管理节点不需要安装任何代理软件
- 有web管理界面、可配置用户、组、资源清单和可执行的playbook
二、使用步骤
1.安装ansible
直接使用yum安装即可
# yum install ansible -y
2.配置资源清单
将要管理的节点的机器信息写入/etc/ansible/hosts中,写法非常丰富,这里不展开探讨。本文主要使用的是先在 本机添加域名解析,再写资源清单的方法:
vim /etc/hosts 192.168.186.161 master1 192.168.186.146 master2 192.168.186.162 slaver2-1 192.168.186.163 slaver1-1
/etc/ansible/hosts master1 master2 slaver2-1 slaver1-1
3.给所有主机传密钥
机器之间连接需要验证,传密钥方便管理,当然也可以不传,这个根据实际管理场景决定,这里我写了个脚本进行传密钥,在上一篇博客已经展示过,有需要可以查看:Linux:批量给主机传密钥的脚本
4.准备redis压缩包
只需要在管理节点准备一个压缩包即可,我使用的是 redis-4.0.10.tar.gz
官方:redis官网
5.手动安装获得redis主配置文件
进行这一步主要是为了得到redis的配置文件,我们要用它来做一份jinja2的模板。(redis的安装也非常简单,官网上就有,或者下次我再写一篇关于redis的安装)
cp /usr/local/redis-4.0.10/redis.conf /root/redis.conf.j2
然后对模板进行修改
修改部分如下:
bind {{ ansible_ens33['ipv4']['address'] }} protected-mode no daemonize yes slaveof 192.168.186.161 6379 masterauth 123 requirepass 123
6.playbook
准备工作做完之后,就可以开始写剧本了,直接看剧本redis_deploy.yaml:
--- - name: Deploy redis. hosts: all user: root tasks: - name: Remove redis existed. shell: rm -rf /usr/local/redis* - name: Unarchive redis package. unarchive: src: /root/redis-4.0.10.tar.gz dest: /usr/local/ - name: Install redis. shell: cmd: make MALLOC=libc chdir: /usr/local/redis-4.0.10 notify: Next we will deploy all redis.conf handlers: - name: Next we will deploy all redis.conf template: src: /root/redis.conf.j2 dest: /usr/local/redis-4.0.10/redis.conf backup: yes notify: lineinfile will work - name: lineinfile will work lineinfile: dest: /usr/local/redis-4.0.10/redis.conf regexp: ^slaveof state: absent when: ansible_ens33['ipv4']['address'] == "192.168.186.161"
以上使用到的都是很基本的剧本用法,主要用到shell、unarchive、template、lineinfile模块,使用了notify_handlers,when来简单进行简单的逻辑安排。
#检查剧本:
ansible-playbook redis_deploy.yaml --syntax-check
这里不用再进行模拟执行,-C不怎么好用,会报错,但是剧本是没有问题,主要是因为-C执行的步骤和实际的执行是不同的,所以有些逻辑再模拟执行时会被当作错误处理。
#开演
ansible-playbook redis_deploy.yaml
(过程应该会比较慢,耐心等待,不报错就可以了)
7.启动所有节点的redis
还是写个剧本开启动吧,很简单
--- - name: start redis clusters hosts: all gather_facts: false user: root tasks: - name: shell will take this. shell: cmd: /usr/local/redis-4.0.10/src/redis-server /usr/local/redis-4.0.10/redis.conf
其实用一句命令就能解决。。。不过有剧本以后就可以随时一键启动,不用每次都打了。
总结
本文都是一些比较基础的东西,欢迎指正。
- playbook一键源码部署nginx、Mysql主从复制
- 脚本一键安装redis实现主从复制
- redis实战--redis主从复制实现读写分离(部署搭建)
- Ansible-playbook 部署redis主从
- Ansible-playbook 部署redis主从
- Ansible-playbook自动部署mysql的主从复制读写分离
- redis实现主从复制和高可用(主从切换)
- CentOS7下安装部署redis主从复制+哨兵模式
- Redis基础之主从复制与sentinel实现
- 企业运维篇——ansible部署mysql主从复制
- mysqldump --master-data参数实现主从复制快速部署
- 集群与负载均衡系列(8)——redis主从复制+哨兵实现高可用性架构
- Redis实现主从复制(Master&Slave)
- redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(单机)
- redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机)
- springboot与redis哨兵模式实现主从复制
- 实现redis(主从,sentinel,cluster)的主从复制集群
- redis的主从复制+高可用简单部署
- 企业9,redis的运用。实现主从复制,储存数据的特点。
- centos6上redis+Keepalived实现Redis主从复制