## redis-v3.0.3哨兵集群搭建文档 ### 准备工作 ### 主机 准备三台全新 centos linux 服务器 固定IP ``` 192.168.1.11 192.168.1.12 192.168.1.13 ``` **以下命令如无特殊说明 在三台主机中均要执行** 准备环境 ```bash yum install make gcc wget ``` 创建用户 ```bash useradd redis ``` 创建相关目录 ```bash mkdir -p /opt/{app/redis,applog} ``` 授权 ```bash chown -R redis:redis /opt/app/redis/ ``` ```bash chown -R redis:redis /opt/applog/redis/ ``` #### 编译源码 切换用户 ```bash su - redis ``` 下载源码 ```bash cd /opt/app/redis/ wget https://download.redis.io/releases/redis-3.0.3.tar.gz ``` 解压源码 ```bash tar -zxvf redis-3.0.3.tar.gz ``` 编译源码 这里为了和生产一致 使用libc 内存分配器 ```bash cd redis-3.0.3 make MALLOC=libc ``` 安装 ```bash make PREFIX=/opt/app/redis/ install ``` 配置 path ```bash echo 'export PATH=$PATH:/opt/app/redis/bin' >> ~/.bashrc source ~/.bashrc ``` ### 配置redis 复制配置文件 ```bash cp /opt/app/redis/redis-3.0.3/src/redis.conf /opt/app/redis/ cp /opt/app/redis/redis-3.0.3/src/sentinel.conf /opt/app/redis/ ``` 编辑配置文件 redis.conf ```bash sed -i 's/daemonize no/daemonize yes/g' redis.conf sed -i 's|^logfile ""$|logfile "/opt/applog/redis/redis.log"|g' redis.conf sed -i 's|^dir "./"$|dir "/opt/app/redis/"|g' redis.conf sed -i 's/appendonly no/appendonly yes/g' redis.conf sed -i 's/^# cluster-node-timeout 15000$/cluster-node-timeout 5000/g' redis.conf #设置主从复制密码 sed -i 's/^# masterauth $/masterauth dUw~7a)6/g' redis.conf #设置 节点密码 sed -i 's/^# requirepass foobared$/requirepass dUw~7a)6/g' redis.conf ``` 配置主从节点 在 192.168.1.12,192.168.1.13 两台机子中执行 ```bash echo "slaveof 10.23.101.3 6379" >> redis.conf ``` 编辑配置文件 sentinel.conf ```bash sed -i 's|^\(sentinel monitor mymaster\) 127.0.0.1|\1 181.168.1.11|' sentinel.conf #设置哨兵密码 sed -i 's/^#sentinel auth-pass /sentinel auth-pass mymaster HmpYZ2KB/g' sentinel.conf echo "daemonize yes" >> sentinel.conf ``` 编写动脚本 ```bash echo "bin/redis-server redis.config">/opt/app/redis/start.sh chmod 775 start.sh echo "bin/redis-sentinel sentinel.config">/opt/app/redis/start-sentinel.sh chmod 775 start.sh ``` 指定用户启动 ```bash #!/bin/bash su -s /bin/bash -c "$(pwd)/bin/redis-sentinel $(pwd)/sentinel.conf " redis ``` ### 启动 先启动三个redis节点 ```bash bash start.sh ``` 再启动 sentinel j节点 ```bash bash start-sentinel.sh ``` ### 验证 登录三个redis节点 分别写入key 192.168.1.11 成功写入 并同步至 192.168.1.12,192.168.1.13 192.168.1.12 写入失败 192.168.1.13 写入失败 登录哨兵节点 查看哨兵信息 ```bash redis-cli -p 26379 sentinel sentinels mymaster ``` 杀死 主节点 分别查看 另外两台redis 的info 信息 是否发生切换