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
.......
........    
View Code

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
View Code

 

posted @ 2018-11-19 19:36  命由己造~  阅读(342)  评论(0)    收藏  举报