准备三台虚拟机都安装linux 系统
服务器IP | 角色 | 端口号 |
192.168.111.131 | 主 | 6379 |
192.168.111.133 | 从 | 6380 |
192.168.111.134 | 从 | 6381 |
从官网(Redis)下载,下载稳定版本(Redis 6.2)
查看系统是否安装gcc-c++编译器和make 编译工具
#搜索yum包管理器里是否安装gcc-c++编译器 sudo yum list installed | grep gcc-c++ #查询到信息,则表示已安装 #没有则进行安装 sudo yum install -y gcc-c++ #搜索yum包管理器里是否安装make sudo yum list installed | grep make #查询到信息,则表示已安装 #没有则进行安装 sudo yum install -y make
安装redis下载(https://download.redis.io/releases/redis-6.2.6.tar.gz)(目前稳定最新版本6.2.6)
1.使用wget工具进行下载并使用tar进行解压
#下载 wget https://download.redis.io/releases/redis-6.2.6.tar.gz #解压 tar -zvxf redis-6.2.6.tar.gz
2.使用make工具进行编译并安装
#进行编译 sudo make #编译成功进行安装 sudo make install
3.进入src文件里发现文件有点多,把常用的执行文件复制到新建的文件夹里(这步可做可做)
#创建文件bin目录 sudo mkdir /redis-6.2.6/bin #在创建一个配置文件 sudo mkdir /redis-6.2.6/bin/conf
#复制文件到bin和conf sudo cp redis.conf sentinel.conf bin/conf #复制标记的常用命令相关文件复制到bin目录 sudo cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /home/redis/redis-6.2.6/bin
4.最后的bin和conf文件
5.启动redis
#进入到bin目录 #启动先使用默认的配置启动redis sudo ./redis-server conf/redis.conf
配置主从
1.主机(192.168.111.131)配置
#编辑 bin/conf/redis.conf 文件 #修改redis.conf参数 bind 0.0.0.0 #允许所有远程访问 protected-mode no # 保护模式不开启 port 6379 #端口号 daemonize yes #开启守护进程方式运行 logfile ./redis.log #设置日志输出文件 #设置在多少时间内刷新次数达到多少的时候会将数据同步到数据文件 save 3600 1 save 300 100 save 60 10000 #replicaof <masterip> <masterport> 主机这里不设置 appendonly yes #开启数据保存到磁盘 masterauth redis@123 #开启密码保护,从机连接主机密码 requirepass redis@123 #设置连接密码
2.从机(192.168.111.133,192.168.111.134)配置
#编辑 bin/conf/redis.conf 文件 #修改redis.conf参数 bind 0.0.0.0 #允许所有远程访问 protected-mode no # 保护模式不开启 port 6380 #端口号 daemonize yes #开启守护进程方式运行 logfile ./redis.log #设置日志输出文件 #设置在多少时间内刷新次数达到多少的时候会将数据同步到数据文件 save 3600 1 save 300 100 save 60 10000 replicaof 192.168.111.131 6379 #配置连接主机ip和端口 appendonly yes #开启数据保存到磁盘 masterauth redis@123 #开启密码保护,从机连接主机密码 requirepass redis@123 #设置连接密码
#编辑 bin/conf/redis.conf 文件 #修改redis.conf参数 bind 0.0.0.0 #允许所有远程访问 protected-mode no # 保护模式不开启 port 6381 #端口号 daemonize yes #开启守护进程方式运行 logfile ./redis.log #设置日志输出文件 #设置在多少时间内刷新次数达到多少的时候会将数据同步到数据文件 save 3600 1 save 300 100 save 60 10000 replicaof 192.168.111.131 6379 #配置连接主机ip和端口 appendonly yes #开启数据保存到磁盘 masterauth redis@123 #开启密码保护,从机连接主机密码 requirepass redis@123 #设置连接密码
3.开启主机(6379)和从机(6380,6381)端口
#主机开启防火墙端口6379 sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent #重启防火墙 sudo firewall-cmd --reload #从机防火墙端口6380 sudo firewall-cmd --zone=public --add-port=6380/tcp --permanent #重启防火墙 sudo firewall-cmd --reload #从机防火墙端口6381 sudo firewall-cmd --zone=public --add-port=6381/tcp --permanent #重启防火墙 sudo firewall-cmd --reload
4.启动查看验证主从配置
#进入bin 目录 #先启动主机 sudo ./redis-server conf/redis.conf #再从机 sudo ./redis-server conf/redis.conf
5.连接redis查看信息
#进入bin目录 #连接主机 redis ./redis-cli -h 192.168.111.131 -p 6379 #再输入密码 auth redis@123 #连接从机 redis ./redis-cli -h 192.168.111.133 -p 6380 #再输入密码 auth redis@123 #连接从机 redis ./redis-cli -h 192.168.111.134 -p 6381 #再输入密码 auth redis@123 #连接成功后输入info info 或 info replication
6.验证主可读可写,从只可读
#在主机上执行 set test hi get test #在从机上 set test1 hi #发现写入失败 get test #成功读取到主机写入的数据
到此主从配置就完成了。
哨兵配置
1. 主机(192.168.111.131)配置
#进入bin/conf 目录 #编辑 sudo vim sentinel.conf
port 26379 #哨兵端口 daemonize yes #开启守护进行启动 logfile ./sentinel.log #配置哨兵日志输出文件 # sentinel monitor代表监控,mymaster是给主库取得别名,ip地址代表监控的主库,6379是主库的端口号,2代表有两个#或者两个以上的哨兵认为主库不可用时,才会进行换库 sentinel monitor mymaster 192.168.111.131 6379 2 #如开启了requirepass,这里就需要设置主库密密码 sentinel auth-pass mymaster redis@123 #sentinel auth-user <master-name> <username> 如果配置用户名则也需要在这里配置 #此配置指需要多少时间,一个master才会被sentinel主观认定是不可用的,单位是毫秒,默认是30秒 sentinel down-after-milliseconds mymaster 3000 #此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短 sentinel parallel-syncs mymaster 1 //自动切换超时时间,这里设置为三分钟。 sentinel failover-timeout mymaster 180000
2.从机(192.168.111.133,192.168.111.134)配置
port 26380 #哨兵端口 daemonize yes #开启守护进行启动 logfile ./sentinel.log #配置哨兵日志输出文件 # sentinel monitor代表监控,mymaster是给主库取得别名,ip地址代表监控的主库,6379是主库的端口号,2代表有两个#或者两个以上的哨兵认为主库不可用时,才会进行换库 sentinel monitor mymaster 192.168.111.131 6379 2 #如开启了requirepass,这里就需要设置主库密密码 sentinel auth-pass mymaster redis@123 #sentinel auth-user <master-name> <username> 如果配置用户名则也需要在这里配置 #此配置指需要多少时间,一个master才会被sentinel主观认定是不可用的,单位是毫秒,默认是30秒 sentinel down-after-milliseconds mymaster 3000 #此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短 sentinel parallel-syncs mymaster 1 //自动切换超时时间,这里设置为三分钟。 sentinel failover-timeout mymaster 180000
port 26381 #哨兵端口 daemonize yes #开启守护进行启动 logfile ./sentinel.log #配置哨兵日志输出文件 # sentinel monitor代表监控,mymaster是给主库取得别名,ip地址代表监控的主库,6379是主库的端口号,2代表有两个#或者两个以上的哨兵认为主库不可用时,才会进行换库 sentinel monitor mymaster 192.168.111.131 6379 2 #如开启了requirepass,这里就需要设置主库密密码 sentinel auth-pass mymaster redis@123 #sentinel auth-user <master-name> <username> 如果配置用户名则也需要在这里配置 #此配置指需要多少时间,一个master才会被sentinel主观认定是不可用的,单位是毫秒,默认是30秒 sentinel down-after-milliseconds mymaster 3000 #此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短 sentinel parallel-syncs mymaster 1 //自动切换超时时间,这里设置为三分钟。 sentinel failover-timeout mymaster 180000
3.开启哨兵
#进入bin目录 #先启动主机的哨兵 sudo ./redis-sentinel conf/sentinel.conf #再启动从机的哨兵 sudo ./redis-sentinel conf/sentinel.conf
4.连接哨兵查看信息
#连接主机哨兵 ./redis-cli -h 192.168.111.131 -p 26379 #查看信息 info 或者info sentinel #连接从机哨兵 ./redis-cli -h 192.168.111.133 -p 26380 #查看信息 info 或者info sentinel ./redis-cli -h 192.168.111.134 -p 26381 #查看信息 info 或者info sentinel
5.开启哨兵主机(26379)和从机(26380,26381)防火墙端口
#主机开启防火墙端口26379 sudo firewall-cmd --zone=public --add-port=26379/tcp --permanent #重启防火墙 sudo firewall-cmd --reload #从机防火墙端口26380 sudo firewall-cmd --zone=public --add-port=26380/tcp --permanent #重启防火墙 sudo firewall-cmd --reload #从机防火墙端口26381 sudo firewall-cmd --zone=public --add-port=26381/tcp --permanent #重启防火墙 sudo firewall-cmd --reload
6.验证哨兵,主机宕机
#模拟主机服务器不可用 ./redis-cli -h 192.168.111.131 -p 6379 #再输入密码 auth redis@123 #停止 shutdown
到此哨兵配置就完成了。