saltstack之实现Redis主从及job管理
1 Redis主从实现
1.1 需求分析
需求:
主机: 1. 主:10.0.0.211 从:10.0.0.212
2. redis监听自己的ip地址,而不是0.0.0.0
分析:slave1 安装 配置 启动
slave2 安装 配置 启动 设置主从
1.2 主从配置
[root@slave1 ~]# yum install slave1 [root@slave1 prod]# mkdir redis/files -p [root@slave1 prod]# cp /etc/redis.conf /srv/salt/prod/redis/files/ [root@slave1 prod]# cd redis/ [root@slave1 redis]# vim init.sls redis-install: pkg.installed: - name: redis redis-config: file.managed: - name: /etc/redis.conf - source: salt://redis/files/redis.conf - user: root - group: root - mode: 644 - template: jinja defaults: PORT: 6379 IPADDR: {{ grains['fqdn_ip4'][0] }} redis-service: service.running: - name: redis - enable: True - reload: True [root@slave1 redis]# tree . ├── files │ └── redis.conf └── init.sls 1 directory, 2 files #执行state.sls单点测试 [root@slave1 redis]# salt 'slave1' state.sls redis.init slatenv=prod [root@slave1 redis]# netstat -tulnp|grep redis-server tcp 0 0 10.0.0.211:6379 0.0.0.0:* LISTEN 1261/redis-server 1 [root@slave1 redis]# salt '*' state.sls redis.init saltenv=prod [root@slave2 ~]# netstat -tulnp |grep redis-server tcp 0 0 10.0.0.212:6379 0.0.0.0:* LISTEN 1284/redis-server 1 [root@slave1 redis]# vim master.sls include: - redis.init [root@slave1 redis]# vim slave.sls include: - redis.init slave_config: cmd.run: - name: redis-cli -h 10.0.0.212 slaveof 10.0.0.211 6379 #<==设置主从 - unless: redis-cli -h 10.0.0.212 info |grep role:slave #<==判断slave2是否为slave,如果是就不执行设置主从 - require: - service: redis-service #配置top file文件 [root@slave1 base]# vim top.sls prod: 'slave1': - redis.master 'slave2': - redis.slave #测试 [root@slave1 base]# salt '*' state.highstate 注意:生产环境中,务必使用test=True进行与测试,并且目标选择一个节点进行,避免错误,影响业务的运行。 [root@slave2 ~]# redis-cli -h 10.0.0.212 10.0.0.212:6379> info ........ ...... # Replication role:slave ....... ........
2 saltstack-Job管理
参考:https://docs.saltstack.com/en/2016.11/ref/modules/all/salt.modules.saltutil.html
说明:在SaltStack里面执行任何一个操作都会在Master上产生一个jid号。Minion端会在cache目录下的proc目录创建一个以jid为名称的文件,
这个文件里面的内容就是记录此次操作的记录,当操作处理完成后改文件会自动删除。而master端会记录每次操作的详细信息,
这个记录都是存到在Master端cache目录下的jobs下。
[root@slave1 base]# cd /var/cache/salt/master/jobs [root@slave1 jobs]# pwd /var/cache/salt/master/jobs #任务管理目录 [root@slave1 jobs]# ls 00 0c 22 33 42 50 61 6e 81 90 a3 b2 c4 d1 e5 f6 01 0d 23 34 43 51 62 70 83 96 a4 b5 c5 d2 e6 f7 02 11 25 35 44 52 63 74 84 98 a5 b6 c6 d3 e8 f9 03 12 27 37 46 53 65 76 85 9a a8 b7 c7 d5 ea fa 04 13 29 39 47 55 66 77 86 9b a9 ba c9 d6 eb fb 05 17 2a 3a 48 57 67 78 8a 9c aa bb ca d7 ed fc 06 19 2b 3b 49 58 68 79 8b 9d ab be cb dd ee fd 07 1c 2c 3c 4c 59 69 7a 8c 9f ac bf cc de f2 ff 08 1d 2d 3d 4d 5c 6a 7e 8d a0 ad c0 cd e0 f3 09 1f 31 3e 4e 5d 6b 7f 8e a1 ae c1 cf e1 f4 0b 21 32 40 4f 60 6c 80 8f a2 b1 c2 d0 e2 f5 [root@slave1 jobs]# tree ........................ ________________________________ 省略部分内容 ── f9 │ ├── 2b5ae1b8b35f5422d1248ad335b726 │ │ ├── jid │ │ └── slave1 │ │ └── return.p #返回结果 │ └── b77748f078f00d00f4f0cc00be3771 │ ├── jid │ ├── slave1 │ │ └── return.p │ └── slave2 │ └── return.p ├── fa │ └── b5a6df606936b4a1634d1c5305be01 │ ├── jid │ └── slave2 │ └── return.p [root@slave1 ~]# grep "#keep_jobs: 24" /etc/salt/master #keep_jobs: 24 #默认的缓存是24小时,可以进行修改。管理job是模块进行管理,由执行模块进行管理:SALT.MODULES.SALTUTIL salt '*' saltutil.clear_cache 清除缓存 salt '*' saltutil.find_job <job id> 查找当前在运行的job,并返回它的id salt '*' saltutil.is_running 查看当前在运行的job salt '*' saltutil.kill_job <job id> 杀死job

浙公网安备 33010602011771号