SaltStack入门篇(六)之部署Redis主从实现和Job管理

一、部署Redis主从

需求:

  1. 192.168.56.11是主,192.168.56.12是从
  2. redis监听自己的ip地址,而不是0.0.0.0

分析: 
linux-node1 安装 配置 启动 
linux-node2 安装 配置 启动 设置主从

[[email protected] ~]# yum install redis -y
[[email protected]-node1 prod]# mkdir redis/files -p
[[email protected]-node1 redis]# cp /etc/redis.conf /srv/salt/prod/redis/files/
[[email protected]-node1 redis]# tree
.
├── files
│   └── redis.conf
└── init.sls

1 directory, 2 files
[[email protected]-node1 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
[[email protected]-node1 redis]# salt ‘*‘ state.sls redis.init saltenv=prod  #测试单一执行sls是否成功
[[email protected]-node1 redis]# netstat -tulnp|grep redis-server
tcp        0      0 192.168.56.11:6379      0.0.0.0:*               LISTEN      10186/redis-server
[[email protected]-node2 ~]# netstat -tulnp |grep redis-server
tcp        0      0 192.168.56.12:6379      0.0.0.0:*               LISTEN      17973/redis-server  

主从配置:
[[email protected]-node1 redis]# vim master.sls
include:
  - redis.init
[[email protected]-node1 redis]# vim slave.sls
include:
  - redis.init

slave_config:
  cmd.run:
    - name: redis-cli -h 192.168.56.12 slaveof 192.168.56.11 6379--->设置主从
    - unless: redis-cli -h 192.168.56.12 info |grep role:slave-->判断node2是否为从,如果是就不执行设置主从
    - require:
      - service: redis-service
[[email protected]-node1 redis]# vim /srv/salt/base/top.sls #配置top file
prod:
  ‘linux-node1.example.com‘:
    - lamp
    - redis.master
  ‘linux-node2.example.com‘:
    - lamp
    - redis.slave
[[email protected]-node1 redis]# salt ‘*‘ state.highstate
......
----------
          ID: slave_config
    Function: cmd.run
        Name: redis-cli -h 192.168.56.12 slaveof 192.168.56.11 6379
      Result: True
     Comment: Command "redis-cli -h 192.168.56.12 slaveof 192.168.56.11 6379" run
     Started: 12:08:46.428924
    Duration: 31.328 ms
     Changes:
              ----------
              pid:
                  18132
              retcode:
                  0
              stderr:
              stdout:
                  OK

Summary for linux-node2.example.com
-------------
Succeeded: 14 (changed=1)
Failed:     0
-------------
Total states run:     14
Total run time:    1.527 s
......
[[email protected]-node1 redis]# tree
.
├── files
│   └── redis.conf
├── init.sls
├── master.sls
└── slave.sls

1 directory, 4 files
[[email protected]-node1 redis]# cat slave.sls
include:
  - redis.init

slave_config:
  cmd.run:
    - name: redis-cli -h 192.168.56.12 slaveof 192.168.56.11 6379
    - unless: redis-cli -h 192.168.56.12 info |grep role:slave
    - require:
      - service: redis-service

TIPS:生产环境中,务必使用test=True进行与测试,并且目标选择一个节点进行,避免错误,影响业务的运行。

二、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下。

[[email protected] ~]# cd /var/cache/salt/master/jobs/----->任务管理目录
[[email protected]-node1 jobs]# pwd
/var/cache/salt/master/jobs
[[email protected]-node1 jobs]# ls
07  0e  2f  3a  44  4c  53  5c  72  92  ac  b2  bf  e6  f4
0c  0f  34  3f  45  4e  5a  63  8b  93  ad  b9  c1  e9  fb
0d  13  37  43  49  52  5b  64  8c  a5  af  be  c4  f1  fe
[[email protected]-node1 linux-node1.example.com]# pwd
/var/cache/salt/master/jobs/07/f8d6ec1380412c95718d931cfb300e793f6b7316d58ad3f34dd57052ca178f/linux-node1.example.com
[[email protected]-node1 linux-node1.example.com]# ll
total 8
-rw------- 1 root root   10 Jan 20 09:39 out.p
-rw------- 1 root root 1748 Jan 20 09:39 return.p---->结果返回
[[email protected]-node1 ~]# 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

原文地址:https://www.cnblogs.com/linuxk/p/9273499.html

时间: 2024-09-30 19:43:43

SaltStack入门篇(六)之部署Redis主从实现和Job管理的相关文章

部署redis主从高可用集群

部署redis主从高可用集群本文部署的redis集群是一主一从,这两台服务器都设置了哨兵进程,另外再加一台哨兵做仲裁,建议哨兵数量为基数172.16.1.187    redis主+哨兵172.16.1.188    redis从+哨兵172.16.1.189    哨兵以上系统均为CentOS6 在187,188,189上部署redis过程如下:(1)redis使用编译安装方式,所以需要安装编译基本组件# yum -y install gcc gcc-c++ make cmake cpp gl

【SSRS】入门篇(六) -- 分组和总计

原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加订单总计 添加每日总计 添加总计 对数据进行分组: 1.单击"设计"选项页.(如果看不到"行组.列组"窗格,右键单击设计图画,选择"视图 -> 分组".) 2.从"报表数据"窗格把"Date"字段拖放到&

(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https://blog.csdn.net/qq_28804275/article/details/80938659 下载redis镜像(不带tag标签则表示下载latest版本) docker pull redis 从github 下载最新的redis.conf,注意重要参数 # 端口 port 6379 #

部署redis主从集群并开启哨兵模式

一.部署环境系统:centos7通过在Linux系统上启动两个不同的redis实例来完成主从集群的部署yum源已部署 二.redis的下载与安装1.下载:官网下载2.安装创建/app/目录,redis安装在/app/目录下 [[email protected] ~]# mkdir /app [[email protected] ~]# cd /usr/local/src/ [[email protected] src]# ls redis-4.0.11.tar.gz [[email protec

centos部署redis主从

安装环境 CentOS 6.5 .CentOS 7.4 主Redis:10.159.44.175 从Redis: 10.159.44.176.10.159.44.177 Redis下载和安装 在3台机器上分别安装redis #添加yum仓库 yum install epel-release -y #安装redis yum install redis -y 程序文件说明 安装完毕后有以下几个文件位于/usr/bin目录: redis-server:Redis服务器的daemon启动程序 redis

单机部署redis主从备份

redis为了避免单点故障,也支持主从备份.个人在做主从备份的实验时,因为机器数量有限,一般非常少有多台机器做支撑. 本文就将叙述怎样在一台电脑上实现redis的主从备份. 同一台机器上部署多个redis实例,为了避免冲突,每一个实例须要使用不同的port号.非常easy.在启动redis时,指定不同的port号,或者在配置文件里指定port号.我的这个实验是在配置文件里指定的port号: 然后在启动时,指定配置文件启动: ./redis-server ./redis.conf 还能够以其它方式

lintcode入门篇六

185. 矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 样例 1: 输入: [[1]] 输出: [1] 样例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12] ] 输出: [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12] class Solution: ''' 1.首先i,j都不能小于0,并且i<len(matrix) and j<len(mat

OpenStack入门篇(四)之KVM虚拟机介绍和管理

1.查看虚拟机,启动虚拟机 [[email protected] ~]# virsh list --all Id Name State ---------------------------------------------------- - CentOS-7-x86_64 shut off [[email protected]-node1 ~]# virsh start CentOS-7-x86_64 通过TightVNC连接,修改网络vi /etc/sysconfig/network-sc

【SSRS】入门篇(七) -- 报表发布

完成[SSRS]入门篇(六) -- 分组和总计后,第一份简单的报表就已完成了,下面把报表发布到报表服务器上. (实际情况下,报表展示给用户未必是用报表服务器,而嵌入到原来的系统,如OA.CRM.ERP中,以链接形式打开.) 配置.启动报表服务: 1.打开Reporting Services 配置管理器: 2.服务器选择本机: 3.启动报表服务器: 4.设置Web服务URL,报表的URL地址是http://SOMEONE:80/ReportServer: (URL地址的格式是 http://你的电