zoukankan      html  css  js  c++  java
  • ansible 部署redis集群(三台主机6节点3主3备)

    ansible 部署 redis集群

    由于文件比较大直接放百度盘
    链接:https://pan.baidu.com/s/1PadPEXDerpE2ocTQMtwzxQ
    提取码:s8xt

    运行方式

      ansible-playbook ./site.yml  -i ./hosts 
      运行之前需要修改2个地方
      1  hosts 修改对应的主机IP 以及密码
      2  group_vars/redis.yml 里面的 redis_cluster_ip 
    

    目录结构

    目录结构

    文件详解

    cat ./site.yml 
    ---
    - hosts: redis
      gather_facts: yes
      roles:
        - redis
        首先看入口文件
        --  hosts主机为redis集群
        -- gather_factes: 是否手机远程主机的信息 这里肯定要收集因为后期会用到
    

    进入roles/redis/tasks
    查看main.yml

    cat ./main.yml 
    - include: ruby.yml
    - include: install_redis.yml
    

    发现先运行ruby.yml 然后运行 install_redis.yml

    仅需查看ruby.yml

    cat ./ruby.yml 
    ---
    
    ##第一步 先把文件拷贝到对应的目录下
    - name: unarchive_ruby
      unarchive:
        src: rvm.tar.gz
        dest: /usr/local/
      when: master is defined
      tags:
        - unarchive_ruby
    ##第二部 删除老的ruby
    - name: remove_old_ruby
      yum:
        name: ruby
        state: absent
      when: master is defined
      tags:
        - remove_old_ruby
    
    #第三步 创建软连接
    - name: link_ruby
      file:
        src: /usr/local/rvm/archives/rvm-1.29.8/rubies/ruby-2.4.6/bin/ruby
        dest: /usr/bin/ruby
        state: link
      when: master is defined
      tags:
        - link_ruby
    
    #第四步 创建gem的软连接
    - name: link_gem
      file:
        src: /usr/local/rvm/archives/rvm-1.29.8/rubies/ruby-2.4.6/bin/gem
        dest: /usr/bin/gem
        state: link
      when: master is defined
      tags:
        - link_gem
    
    cat ./install_redis.yml 
    ---
    #创建redis用户
    - name: add_redis_user
      user:
        comment: "add redis user"
        name: redis
        create_home: no
        shell: /sbin/nologin
        state: present
      tags:
        - add_redis_user
    
    #创建目录 变了在group_vars里面
    - name: mkdir_redis_dir
      file:
        path: /data/redis-{{item.0.port}}/{{ item.1 }}
        state: directory
        owner: redis
        group: redis
        mode: 0755
      with_nested:
        - "{{ redis_list }}"
        - "{{ redis_dir }}"
      tags:
        - mkdir_redis_dir
    
    # 拷贝二进制文件到对应的bin下面
    - name: copy_redis_bin
      copy:
        src: "{{ item.1 }}"
        dest: /data/redis-{{ item.0.port }}/bin
        owner: redis
        group: redis
        mode: 0755
      with_nested:
        - "{{ redis_list }}"
        - "{{ redis_bin }}"
      tags:
        - copy_redis_bin
    
    #拷贝配置文件
    - name: copy_redis_conf
      template:
        src: redis.conf.j2
        dest: /data/redis-{{ item.port }}/conf/redis.conf
        owner: redis
        group: redis
      with_items:
        - "{{ redis_list }}"
      tags:
        - copy_redis_conf
    
    
    # 加入系统启动项
    - name: add_redis_systemd
      template:
        src: redis.service.j2
        dest: /etc/systemd/system/redis-{{ item.port }}.service
      with_items:
        - "{{ redis_list }}"
      tags:
        - add_redis_systemd
    
    
    #启动redis
    - name: start_redis_service
      systemd:
        name: redis-{{ item.port }}
        daemon_reload: yes
        enabled: yes
        state: restarted
      with_items:
        - "{{ redis_list }}"
      tags:
        - start_redis_service
    
    #ruby安装redis
    - name: gem_install_redis
      shell: gem install redis
      when: master is defined
      tags:
        - gem_install_redis
    
    #拷贝添加集群脚本
    - name: copy_script_file
      template:
        src: add_cluster.sh
        dest: /tmp
        owner: redis
        group: redis
        mode: '0755'
      when: master is defined
      tags:
        - copy_script_file
    
    
    #安装expect命令
    - name: install_expect
      yum: 
        name: expect
        state: latest
      when: master is defined
      tags: 
        - install_expect
    
    
    # 初始化redis集群
    - name: init_redis_cluster
      shell: /tmp/add_cluster.sh
      when: master is defined
      tags:
        - init_redis_cluster
    
    
    # 如果安装失败。删除目录
    #- name: remove|dir
    #  file:
    #    path: /data
    #    state: absent
    #  tags:
    #    - remove_dir
    #
    

    查看需要的原文件

    [root@mongodb1 files]# ll
    total 158744
    -rw-r--r-- 1 root root     57344 Jul 31  2019 redis-4.1.2.gem
    -rw-r--r-- 1 root root   2451064 Jul 31  2019 redis-benchmark
    -rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-check-aof
    -rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-check-rdb
    -rw-r--r-- 1 root root   2617152 Jul 31  2019 redis-cli
    -rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-sentinel
    -rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-server
    -rw-r--r-- 1 root root     65991 Jul 31  2019 redis-trib.rb
    -rw-r--r-- 1 root root 134250866 Aug  3 02:13 rvm.tar.gz
    

    查看hosts文件。 里面的信息为需要安装redis的主机信息 master=true 要定义 后续需要用

    cat  hosts 
    [redis]
    wyl01   ansible_ssh_host=192.168.190.130   ansible_ssh_pass=123456  master=true
    wyl02   ansible_ssh_host=192.168.190.131   ansible_ssh_pass=123456 
    wyl03   ansible_ssh_host=192.168.190.132   ansible_ssh_pass=123456
    
    [redis:vars]
    mport=7000
    sport=7001
    

    查看变量情况

    cat  redis_inner3_cluster/group_vars/redis.yml 
    ---
    ##需要注意这个用法,其实- name 这里只是注释而且 当然也可以被调用,主要是用下面的port
    redis_list:
      - name: redis_master_info
        port: 7000
      - name: redis_slave_info
        port: 7001
      
    redis_dir:
      - bin
      - conf
      - pid
      - data
      - log
    
    
    redis_bin:
      - redis-benchmark
      - redis-check-aof
      - redis-check-rdb
      - redis-trib.rb
      - redis-cli
      - redis-sentinel
      - redis-server
    
    redis_cluster_ip:
     - 192.168.79.128
     - 192.168.79.129
     - 192.168.79.130
    
  • 相关阅读:
    TP5手动引入PHPEXCEL的方法
    分库分表的基本思想
    FIFO、LRU、LFU的含义和原理
    Memcache 内存分配策略和性能(使用)状态检查
    php soapclient 超时 设置
    jsonrpc.js -- 原生js实现 JSON-RPC 协议
    前端编译原理 笔记 -- BISON
    前端编译原理 移进规约自动机
    前端编译原理 parser.js源码解读
    react-rotuer动态加载模块
  • 原文地址:https://www.cnblogs.com/ZFBG/p/13429733.html
Copyright © 2011-2022 走看看