puppet(单机模式)-基于模块方式实现redis主从

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

说明:puppet模块存放位置有固定要求,不过为了实验方便,先建一个临时目录来存放,当配置完成后移动到指定目录。

实现步骤:

1、实现如下目录结构

[root@manifests modules]# tree ~/modules

~/modules

└── redis

     ├── files

     │    └── redis-master.conf

     ├── lib

     ├── manifests

     │    ├── init.pp

     │    ├── master.pp

     │    └── slave.pp

     ├── spec

     ├── templates

     │    └── redis-slave.conf.erb

     └── tests

mkdir -pv modules/redis/{manifests,files,templates,tests,lib,spec}

files以及templates文件夹下的文件内容大致同默认的配置文件,只是修改模板文件的slaveof指向master主机


2、编辑所需的清单文件

vim manifests/init.pp

   class redis {

        package {'redis':

                ensure => installed,

        }

        service {'redis':

                ensure => running,

                enable => true,

                hasrestart => true,

                hasstatus => true,

        }

}

 

vim manifests/master.pp

    class redis::master inherits redis {

        file{'/etc/redis.conf':

                ensure => file,

                source => 'puppet:///modules/redis/redis-master.conf',

                owner => 'redis',

                group => 'root',

                mode => 0640,

        }

        Package['redis'] -> File['/etc/redis.conf'] ~>Service['redis']

}

 

vim manifests/slave.pp

    class redis::slave($master_ip,$master_port='6379') inherits redis {

        file{'/etc/redis.conf':

                ensure => file,

                content => template('redis/redis-slave.conf.erb'),

                owner => 'redis',

                group => 'root',

                mode => 0640,

        }

        Package['redis'] -> File['/etc/redis.conf'] ~>Service['redis']

}

 

3、将模块移动到指定的位置

cp -r redis/ /etc/puppet/module/

查看模块有哪些

puppet module list

blob.png 

测试查看:-e指明调用的代码

puppet apply -v --noop -e "include redis"

puppet apply -v --noop -e "include redis::master"

puppet apply -v --noop -e "include redis::slave"  由于slave中使用了参数,所以include调用会报错,应该使用下面的命令

puppet apply -v --noop -e "class{'redis::slave': master_ip => '172.16.13.134'}"

如果多个参数,那么逗号隔开即可。也可以编辑一个.pp文件来调用redis::slave类而不使用命令行测试

vim ~/manifests/redis3.pp

   class{'redis::slave':

        master_ip => '172.16.13.134',

   }

执行:puppet apply -v redis3.pp















本文转自lc0108131451CTO博客,原文链接:http://blog.51cto.com/13150617/2053837 ,如需转载请自行联系原作者


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
Kubernetes NoSQL Redis
k8s快速部署Redis单机
k8s快速部署Redis单机
|
5月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
6月前
|
缓存 运维 NoSQL
Redis主从模式部署
Redis主从模式部署
66 4
|
1月前
|
NoSQL Java Redis
springCloud中将redis共用到common模块
通过将Redis配置和操作服务提取到Common模块,可以在Spring Cloud微服务架构中实现高效的代码复用和统一管理。这种设计不仅简化了各个服务的配置和依赖管理,还提高了代码的可维护性和可读性。希望本文对你在Spring Cloud项目中集成和使用Redis有所帮助。
48 0
|
6月前
|
缓存 NoSQL Redis
Redis主从架构
当看到图示中红色标记的,就代表从节点挂载成功了。
40 0
|
2月前
|
NoSQL API Redis
如何使用 C++ 开发 Redis 模块
如何使用 C++ 开发 Redis 模块
|
3月前
|
NoSQL Linux Redis
linux安装单机版redis详细步骤,及python连接redis案例
这篇文章提供了在Linux系统中安装单机版Redis的详细步骤,并展示了如何配置Redis为systemctl启动,以及使用Python连接Redis进行数据操作的案例。
79 2
|
2月前
|
缓存 NoSQL 关系型数据库
单机版Redis
【10月更文挑战第3天】
40 0
|
5月前
|
NoSQL API Redis
c++开发redis module问题之为什么在使用RedisModule_GetApi之前要通过((void**)ctx)[0]这种方式获取其地址
c++开发redis module问题之为什么在使用RedisModule_GetApi之前要通过((void**)ctx)[0]这种方式获取其地址
|
5月前
|
NoSQL 编译器 Redis
c++开发redis module问题之如果Redis加载了多个C++编写的模块,并且它们都重载了operator new,会有什么影响
c++开发redis module问题之如果Redis加载了多个C++编写的模块,并且它们都重载了operator new,会有什么影响

推荐镜像

更多