centos7配置redis哨兵模式
本地服务器演示1主2从3哨兵模式
-
下载安装redis
#安装gcc环境 yum install -y gcc #下载redis安装包 wget http://download.redis.io/releases/redis-5.0.3.tar.gz #解压文件 tar -zxvf redis-5.0.3.tar.gz #切换到指定目录并编译文件 cd redis-5.0.3 make #安装到指定目录 make install PREFIX=/usr/local/redis
-
设置后台启动
#从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录 cp /usr/local/redis-5.0.3/redis.conf /usr/local/redis/bin/ #修改 redis.conf 文件,把 daemonize no 改为 daemonize yes vi redis.conf daemonize yes #执行后台启动 ./redis-server redis.conf
-
设置开机自启动
vi /etc/systemd/system/redis.service #复制粘贴以下内容: [Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target #设置开机自启动 systemctl daemon-reload systemctl start redis.service systemctl enable redis.service #服务操作命令 systemctl start redis.service #启动redis服务 systemctl stop redis.service #停止redis服务 systemctl restart redis.service #重新启动服务 systemctl status redis.service #查看服务当前状态 systemctl enable redis.service #设置开机自启动 systemctl disable redis.service #停止开机自启动
-
拷贝哨兵模式需要的配置文件
#从源码拷贝哨兵配置文件 cp /usr/local/redis-5.0.3/sentinel.conf /usr/local/redis/bin/ #拷贝redis从服务器的配置文件 cd /usr/local/redis/bin/ cp redis.conf redis-6380.conf cp redis.conf redis-6381.conf #拷贝哨兵从服务器的配置文件 cp sentinel.conf sentinel-26380.conf cp sentinel.conf sentinel-26381.conf
-
配置redis主服务器配置文件
vi redis.conf # 修改redis.conf,主要修改项如下: bind 0.0.0.0 port 6379 daemonize yes # redis访问密码,不授权密码可不需要配置 masterauth "123456" requirepass "123456"
-
配置redis从服务器配置文件
vi redis-6380.conf # 修改redis-6380.conf,主要修改项如下: bind 0.0.0.0 port 6380 daemonize yes pidfile "/var/run/redis_6380.pid" replicaof 127.0.0.1 6379 # redis访问密码,不授权密码可不需要配置 masterauth "123456" requirepass "123456" vi redis-6381.conf # 修改redis-6381.conf,主要修改项如下: bind 0.0.0.0 port 6381 daemonize yes pidfile "/var/run/redis_6381.pid" replicaof 127.0.0.1 6379 # redis访问密码,不授权密码可不需要配置 masterauth "123456" requirepass "123456"
-
配置redis哨兵服务器配置文件
vi sentinel.conf # 修改sentinel.conf,主要修改项如下: port 26379 daemonize yes pidfile "/var/run/redis-sentinel.pid" sentinel monitor mymaster 127.0.0.1 6379 2 sentinel auth-pass mymaster 123456 vi sentinel-26380.conf # 修改sentinel-26380.conf,主要修改项如下: port 26380 daemonize yes pidfile "/var/run/redis-sentinel-26380.pid" sentinel monitor mymaster 127.0.0.1 6380 2 sentinel auth-pass mymaster 123456 vi sentinel-26381.conf # 修改sentinel-26381.conf,主要修改项如下: port 26381 daemonize yes pidfile "/var/run/redis-sentinel-26381.pid" sentinel monitor mymaster 127.0.0.1 6381 2 sentinel auth-pass mymaster 123456
-
启动redis服务器
# 启动1主2从服务器 ./redis-server redis.conf ./redis-server redis-6380.conf ./redis-server redis-6381.conf # 启动哨兵服务器 ./redis-sentinel sentinel.conf ./redis-sentinel sentinel-26380.conf ./redis-sentinel sentinel-26381.conf
-
查看redis进程
ps -ef | grep redis bin/redis-cli -p 6379 127.0.0.1:6379> auth 123456 127.0.0.1:6379> info replication # 结果: # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6381,state=online,offset=2586706,lag=0 slave1:ip=127.0.0.1,port=6380,state=online,offset=2586972,lag=0 master_replid:dadaab2ed3e438e6b39743c011773a17bac6fe9f master_replid2:e08112409c9f2042f65641905736d5767d97da5b master_repl_offset:2586972 second_repl_offset:2571919 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1950541 repl_backlog_histlen:636432
-
关闭服务器,查看结果已经切换到从服务器了,没问题
127.0.0.1:6379> shutdown bin/redis-cli -p 6380 127.0.0.1:6380> auth 123456 127.0.0.1:6380> info replication # 结果 # Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=6381,state=online,offset=2615121,lag=1 master_replid:486a6a06dbf5268df7631b8f8ba2223ffd63013d master_replid2:dadaab2ed3e438e6b39743c011773a17bac6fe9f master_repl_offset:2615387 second_repl_offset:2613888 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2584941 repl_backlog_histlen:30447