SaltStack 利用pillar实现Redis多实例部署

需求:基于业务环境,需在一台机器上部署N多Redis实例,之前部署只能实现部署单个redis,在手工修改目录名字以区分不同redis实例,现想设计能部署一个redis,剩余实例递增即可,以实现多实例部署。

设计:多redis启动只需要一个配置文件和启动脚本即可,而启动程序是不变的,那么我可以安装一个redis,以/usr/local/redis目录为例,在目录下生成基于应用的redis,下发对应的脚本到/etc/init.d/,而配置文件做成模板化,变化参数通过pillar来渲染,例如log name、pid name、data directory。

Redis 的详细介绍请点这里
Redis 的下载地址请点这里

推荐阅读:

Redis集群明细文档

Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis

Redis系列-安装部署维护篇

CentOS 6.3安装Redis

Redis配置文件redis.conf 详解

note: 多实例部署,要涉及到多个脚本,想通过salt的service.running启动,那么必须要满足几个条件

1.rc.d/init.d脚本

2.脚本内容必须有start、stop、status,status必须有,因为service模块会先执行status来判定服务是否在运行,在执行启动

3.脚本包含启动和关闭参数。Sxx、Kxx

整体目录结构如下

/usr/local/redis/bin

redis-benchmark

redis-cli

redis-server

redis-check-aof

redis-check-dump

/usr/local/redis/redis-s-user

redis.conf

/usr/local/redis/redis-s-group

redis.conf

/etc/init.d/redis-s-user

/etc/init.d/redis-s-group

上述设计完成,那么开工,Saltstack安装,验证我就不演示啦。直接上代码

pillar

redis-server1:

- name: redis-s-user

port: 7379

- name: redis-s-group

port: 7479


定义不同端口和服务名,在SLS文件中渲染。

sls

redis:

pkg.installed:

- name: redis

{% if 'redis-server1' in pillar %}

{% for eachredis in pillar['redis-server1'] %}

/usr/local/redis/{{ eachredis.name }}/redis.conf:

file.managed:

- source: salt://redis/files/redis.conf

- makedirs: True

- template: jinja

- defaults:

name: {{ eachredis.name }}

port: {{ eachredis.port }}

- require:

- pkg: redis

{% endfor %}

{% endif %}

{% if 'redis-server1' in pillar %}

{% for eachredis in pillar['redis-server1'] %}

/etc/init.d/{{ eachredis.name }}:

file.managed:

- source: salt://redis/files/test

- mode: 755

- require:

- pkg: redis

- template: jinja

- defaults:

name: {{ eachredis.name }}

service.running:

- name: {{ eachredis.name }}

- enable: True

- watch:

- pkg: redis

{% endfor %}

{% endif %}


1.安装redis服务,包是打的RPM包,包的结构就顶楼 - -

2.下发配置文件,配置文件需要指定不同端口、路径名。所以提供2个值。

3.下发启动脚本,redis启动只需要redis-server指定不同配置文件,所以这里只给了一个name值

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4709233b5a7d39ec5a6d77515659b484.html