提示:本文旨在使用ansible快速搭建一下集群环境


前言

这里是为redis集群搭建学习的一些环境准备,仅供参考


✅ 为什么要使用 Redis 集群?

✅ Redis Cluster 主要优势

✅ 哪种场景必须使用 Redis 集群?

🚫 不要把 Redis 集群当数据库替代

由于 Redis 内存昂贵、数据结构复杂、持久化成本高,它仍更适合作为:

  • 缓存系统

  • 会话管理

  • 高频 KV 访问

  • 排行榜、计数器、消息队列等结构化数据

存档数据仍应放 MySQL/Mongo/ES 等存储系统。

一、准备集群主机列表和ansible.cfg文件

[root@control ~]# cd ansible
[root@control ansible]# cat hosts
[redis]
192.168.4.51
192.168.4.52
192.168.4.53
192.168.4.54
192.168.4.55
192.168.4.56

[redisnew]
192.168.4.57
192.168.4.58

[root@control ansible]# cat ansible.cfg 
[defaults]
inventory = ~/ansible/hosts
roles_path = ~/ansible/role
remote_user = alice
host_key_checking = False

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

二、为了管理这些主机、还需要完成以下步骤

核心是:在远程主机以普通用户的方式、执行命令、普通用户保持和ansible.cfg文件一致

for i in 51 52 53 54 55 56; do ssh-copy-id root@192.168.4.$i; done  

for i in 51 52 53 54 55 56; do ssh 192.168.4.$i "useradd alice"; done

for i in 51 52 53 54 55 56; do ssh-copy-id alice@192.168.4.$i; done

for i in 51 52 53 54 55 56; do ssh 192.168.4.$i "echo a | passwd --stdin alice"; done

for i in 51 52 53 54 55 56; do ssh root@192.168.4.$i "sed -i '120a alice ALL=(ALL) NOPASSWD:ALL' /etc/sudoers";done

三、创建角色redis编写任务

过程略写

准备静态文件

[root@control ansible]# ls role/redis/files/
redis-4.0.8.tar.gz

编写主tasks

[root@control ansible]# cat role/redis/tasks/main.yml 
---
# tasks file for redis
- name: yum -y install gcc
  yum:
    name: gcc
    state: present
- name: tar -xf 
  unarchive:
    src: redis-4.0.8.tar.gz
    dest: /root/
- name: make 
  shell: make && make install && touch makecomplete.txt
  args: 
    chdir: /root/redis-4.0.8 
    creates: /root/redis-4.0.8/makecomplete.txt
- name: Install Redis non-interactively with defaults
  shell: |
    REDIS_PORT=6379 \
    REDIS_CONFIG_FILE=/etc/redis/6379.conf \
    REDIS_LOG_FILE=/var/log/redis_6379.log \
    REDIS_DATA_DIR=/var/lib/redis/6379 \
    REDIS_EXECUTABLE=/usr/local/bin/redis-server \
    REDIS_CLI_EXECUTABLE=/usr/local/bin/redis-cli \
    ./utils/install_server.sh <<EOF
    EOF
  args:
    chdir: /root/redis-4.0.8
    creates: /etc/init.d/redis_6379
- name: template confi
  template:
    src: 6379.conf.j2
    dest: /etc/redis/6379.conf

准备配置文件的template

主要修改以下几行

70    bind {{ ansible_all_ipv4_addresses[0] }} #修改监控地址

815  cluster-enabled yes #取消注释,启用集群功能

823  cluster-config-file nodes-6379.conf #取消注释,存储集群信息相关文件

829  cluster-node-timeout 5000 #设置集群通信的超时时间(5000秒)

[root@control ansible]# ls role/redis/templates/6379.conf.j2 
role/redis/templates/6379.conf.j2

四、编写playbook调用角色

[root@control ansible]# cat redis.yaml 
---
#- hosts: 192.168.4.53
#- hosts: redis
- hosts: redisnew
  roles:
    - redis


 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐