zoukankan      html  css  js  c++  java
  • SaltStack安装Redis-第十篇

    实验环境

    node1  192.168.56.11   角色  salt-master 

    node2  192.168.56.12   角色  salt-minon

    完成内容

    Salt远程安装Redis服务

    步骤

    在前面的文章中已经搭建好了salt-master和saltminion环境

    一,在prod目录下创建redis相关的目录,存放状态文件
    [root@linux-node1 ~]# cd /srv/salt/prod/
    [root@linux-node1 prod]# mkdir modules/redis -p
    [root@linux-node1 prod]# tree 
    .
    └── modules
        └── redis
    二,进入redis目录创建redis基础状态文件,这里我们用简单的rpm包按照为例
    [root@linux-node1 redis]# cat redis-install.sls 
    redis-install:
      pkg.installed:
        - name: redis
    三,有时候我们修改redis的配置文件或创建集群
    [root@linux-node1 prod]# pwd
    /srv/salt/prod
    [root@linux-node1 prod]# mkdir redis-cluster
    [root@linux-node1 prod]# cd redis-cluster/
    [root@linux-node1 redis-cluster]# vi redis-master.sls
    [root@linux-node1 redis-cluster]# cat redis-master.sls 
    include:
      - modules.redis.redis-install
    
    redis-master-config:
      file.managed:
        - name: /etc/redis.conf
        - source: salt://redis-cluster/files/redis-master.conf
        - user: root
        - group: root
        - mode: 644
        - template: jinja
        - defaults:
          REDIS_MEM: 1G
    
    redis-master-service:
      service.running:
        - name: redis
        - enable: True
        - watch:
          - file: redis-master-config
    四,按照redis取配置文件作为salt模板
    [root@linux-node1 redis-cluster]# yum install redis
    [root@linux-node1 redis-cluster]# cp /etc/redis.conf  /srv/salt/prod/redis-cluster/files/
    [root@linux-node1 redis-cluster]# tree
    .
    ├── files
    │   └── redis.conf
    └── redis-master.sls
    五,重命名redis模板文件名
    [root@linux-node1 files]# mv redis.conf redis-master.conf
    [root@linux-node1 files]# pwd
    /srv/salt/prod/redis-cluster/files
    六,更改redis配置文件模板,bind也可以只监听内网端口
    [root@linux-node1 files]# grep -E  'bind|daemonize|maxmemory' redis-master.conf  |grep -v ^#
    bind 0.0.0.0
    daemonize yes
    maxmemory {{ REDIS_MEM }}
    七,测试,因为是在prod目录下 需要添加 saltenv=prod环境变量
    [root@linux-node1 redis-cluster]# salt 'linux-node2*' state.sls redis-cluster.redis-master test=True saltenv=prod
    linux-node2.example.com:
    ----------
              ID: redis-install
        Function: pkg.installed
            Name: redis
          Result: None
         Comment: The following packages are set to be installed/updated: redis
         Started: 22:45:55.034779
        Duration: 2514.889 ms
         Changes:   
    ----------
              ID: redis-master-config
        Function: file.managed
            Name: /etc/redis.conf
          Result: None
         Comment: The file /etc/redis.conf is set to be changed
         Started: 22:45:57.551713
        Duration: 27.659 ms
         Changes:   
                  ----------
                  newfile:
                      /etc/redis.conf
    ----------
              ID: redis-master-service
        Function: service.running
            Name: redis
          Result: None
         Comment: Service is set to be started
         Started: 22:45:57.637546
        Duration: 71.324 ms
         Changes:   
    
    Summary
    ------------
    Succeeded: 3 (unchanged=3, changed=1)
    Failed:    0
    ------------
    Total states run:     3
    八,执行redis状态模块
    [root@linux-node1 redis-cluster]# salt 'linux-node2*' state.sls redis-cluster.redis-master  saltenv=prod
    linux-node2.example.com:
    ----------
              ID: redis-install
        Function: pkg.installed
            Name: redis
          Result: True
         Comment: The following packages were installed/updated: redis
         Started: 22:48:16.616612
        Duration: 15732.74 ms
         Changes:   
                  ----------
                  jemalloc:
                      ----------
                      new:
                          3.6.0-1.el7
                      old:
                  redis:
                      ----------
                      new:
                          3.2.10-2.el7
                      old:
    ----------
              ID: redis-master-config
        Function: file.managed
            Name: /etc/redis.conf
          Result: True
         Comment: File /etc/redis.conf updated
         Started: 22:48:32.351877
        Duration: 45.19 ms
         Changes:   
                  ----------
                  diff:
                      --- 
                      +++ 
                      @@ -44,7 +44,7 @@
                       #
                       # Examples:
                       #
                      -# bind 192.168.1.100 10.0.0.1
                      +#bind 0.0.0.0
                       # bind 127.0.0.1 ::1
                       #
                       # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
                      @@ -58,7 +58,7 @@
                       # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
                       # JUST COMMENT THE FOLLOWING LINE.
                       # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      -bind 127.0.0.1
                      +bind 0.0.0.0
                       
                       # Protected mode is a layer of security protection, in order to avoid that
                       # Redis instances left open on the internet are accessed and exploited.
                      @@ -125,7 +125,7 @@
                       
                       # By default Redis does not run as a daemon. Use 'yes' if you need it.
                       # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
                      -daemonize no
                      +daemonize yes
                       
                       # If you run Redis from upstart or systemd, Redis can interact with your
                       # supervision tree. Options:
                      @@ -534,7 +534,7 @@
                       # limit for maxmemory so that there is some free RAM on the system for slave
                       # output buffers (but this is not needed if the policy is 'noeviction').
                       #
                      -# maxmemory <bytes>
                      +maxmemory 1G
                       
                       # MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
                       # is reached. You can select among five behaviors:
                  mode:
                      0644
                  user:
                      root
    ----------
              ID: redis-master-service
        Function: service.running
            Name: redis
          Result: True
         Comment: Service redis has been enabled, and is running
         Started: 22:48:32.412154
        Duration: 453.972 ms
         Changes:   
                  ----------
                  redis:
                      True
    
    Summary
    ------------
    Succeeded: 3 (changed=3)
    Failed:    0
    ------------
    Total states run:     3
    salt 'linux-node2*' state.sls redis-cluster.redis-master saltenv=prod
    九,登陆node2节点查看redis服务已经成功启动
    [root@linux-node2 ~]# ps aux |grep redis
    redis      5147  0.3  0.3 142904  5808 ?        Ssl  22:48   0:00 /usr/bin/redis-server 0.0.0.0:6379
    root       5192  0.0  0.0 112648   976 pts/0    S+   22:49   0:00 grep --color=auto redis
    [root@linux-node2 ~]# 

    总结

    1.生产环境我们的状态模块可以在prod下面,在执行的时候需要设置环境saltenv=prod(使用top.sls不需要设置环境变量)

    2.记得使用test=True先测试

    3.提前查清楚软件包和相关配置文件

    4.当使用jinja模板管理时,可以不用登陆redis服务器就可以查看redis设置的最大内存


    附 赵班长的 GitHub saltbook-code网址

    https://github.com/unixhot/saltbook-code/tree/master

  • 相关阅读:
    【C#】枚举和字符串以及数字之间的互相转换
    MySQL中int(M)和tinyint(M)数值类型中M值的意义
    C# 将数组拼接为字符串 string.Join 的使用
    MySQL-locate()函数
    C# 4.0 dynamic用法,并且与 var, object的区别
    Go语言 go get 找不到 google.golang.org/protobuf/encoding/prototext 解决办法
    Go语言 中逗号ok模式
    MySQL数据库面试题(2020最新版)
    .Net Core 3.0开源可视化设计CMS内容管理系统建站系统
    SQL Server 全文搜索/全文索引
  • 原文地址:https://www.cnblogs.com/xiewenming/p/7714764.html
Copyright © 2011-2022 走看看