自动安装部署redis-5.x集群
只是创建和启动,集群初始化命令需要手动执行
[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
[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
[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
[root@m01 ~]# cat /etc/ansible/roles/redis_cluster/tasks/main.yaml
#01.创建用户组
#02.创建用户
#03.拷贝执行文件
#04.拷贝运行目录
#05.创建数据目录
#06.拷贝配置文件模版
#07.启动服务
[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
[root@m01 ~]# cat /etc/ansible/redis_cluster.yaml