[Ansible實戰]-ansible部署Redis-5.x集群


 

0.劇本說明

自動安裝部署redis-5.x集群 只是創建和啟動,集群初始化命令需要手動執行

1.目錄結構

[root@m01 ~]# tree /etc/ansible/roles/redis_cluster/ /etc/ansible/roles/redis_cluster/ ├── files │   ├── redis_6380 │   │   ├── conf │   │   ├── logs │   │   └── pid │   ├── redis_6381 │   │   ├── conf │   │   ├── logs │   │   └── pid │   └── redis_cmd │   ├── redis-benchmark │   ├── redis-check-aof │   ├── redis-check-rdb │   ├── redis-cli │   └── redis-server ├── handlers │   └── main.yaml ├── tasks │   └── main.yaml ├── templates │   ├── redis_6380.conf.j2 │   ├── redis_6381.conf.j2 │   ├── redis-master.service.j2 │   └── redis-slave.service.j2 └── vars 14 directories, 11 files 

2.配置文件jinja模版

主節點配置模版

[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/templates/redis_6380.conf.j2 bind {{ ansible_facts.eth0.ipv4.address }} port 6380 daemonize yes pidfile "/opt/redis_6380/pid/redis_6380.pid" logfile "/opt/redis_6380/logs/redis_6380.log" dbfilename "redis_6380.rdb" dir "/data/redis_6380/" appendonly yes appendfilename "redis.aof" appendfsync everysec cluster-enabled yes cluster-config-file nodes_6380.conf cluster-node-timeout 15000 

從節點配置模版

[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/templates/redis_6381.conf.j2 bind {{ ansible_facts.eth0.ipv4.address }} port 6381 daemonize yes pidfile "/opt/redis_6381/pid/redis_6381.pid" logfile "/opt/redis_6381/logs/redis_6381.log" dbfilename "redis_6381.rdb" dir "/data/redis_6381/" appendonly yes appendfilename "redis.aof" appendfsync everysec cluster-enabled yes cluster-config-file nodes_6381.conf cluster-node-timeout 15000 

3.啟動腳本

主節點啟動腳本

[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/templates/redis-master.service.j2 [Unit] Description=Redis persistent key-value database After=network.target After=network-online.target Wants=network-online.target  [Service] ExecStart=/usr/local/bin/redis-server /opt/redis_6380/conf/redis_6380.conf --supervised systemd ExecStop=/usr/local/bin/redis-cli -h {{ ansible_facts.eth0.ipv4.address }} -p 6380 shutdown Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755  [Install] WantedBy=multi-user.target 

從節點啟動腳本

[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/templates/redis-slave.service.j2 [Unit] Description=Redis persistent key-value database After=network.target After=network-online.target Wants=network-online.target  [Service] ExecStart=/usr/local/bin/redis-server /opt/redis_6381/conf/redis_6381.conf --supervised systemd ExecStop=/usr/local/bin/redis-cli -h {{ ansible_facts.eth0.ipv4.address }} -p 6381 shutdown Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755  [Install] WantedBy=multi-user.target 

4.tasks清單

[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/tasks/main.yaml #01.創建用戶組 - name: 01_create_group  group:  name: redis  gid: 777 #02.創建用戶 - name: 02_create_user  user:  name: redis  uid: 777  group: redis  shell: /sbin/nologin  create_home: no #03.拷貝執行文件 - name: 03_copy_cmd  copy:  src: redis_cmd/  dest: /usr/local/bin/  mode: '0755' #04.拷貝運行目錄 - name: 04_mkdir_conf  copy:  src: "{{ item }}"  dest: /opt/  owner: redis  group: redis  loop:  - redis_6380  - redis_6381 #05.創建數據目錄 - name: 05_mkdir_data  file:  dest: "/data/{{ item }}"  state: directory  owner: redis  group: redis  loop:  - redis_6380  - redis_6381 #06.拷貝配置文件模版 - name: 06_copy_conf  template:  src: "{{ item.src}}"  dest: "{{ item.dest }}"  backup: yes  loop:  - { src: 'redis_6380.conf.j2', dest: '/opt/redis_6380/conf/redis_6380.conf' }  - { src: 'redis_6381.conf.j2', dest: '/opt/redis_6381/conf/redis_6381.conf' }  - { src: 'redis-master.service.j2', dest: '/usr/lib/systemd/system/redis-master.service' }  - { src: 'redis-slave.service.j2', dest: '/usr/lib/systemd/system/redis-slave.service' }  notify:  - restart redis-master  - restart redis-slave #07.啟動服務 - name: 07_start_redis  systemd:  name: "{{ item }}"  state: started  daemon_reload: yes  loop:  - redis-master  - redis-slave 

5.handles清單

[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/handlers/main.yaml - name: restart redis-master  service:  name: redis-master  state: restarted - name: restart redis-slave  service:  name: redis-slave  state: restarted 

6.執行任務清單

[root@m01 ~]# cat /etc/ansible/redis_cluster.yaml - hosts: redis_cluster roles: - redis_cluster


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM