一、单机redis环境搭建
1.安装:
OS:linux redhat6.5
下载redis 官网下载链接:https://redis.io/download
把安装包上传到服务器,进行解压
[root@master redis]# tar -xvf redis-5.0.4.tar.gz [root@master redis]# cd redis-5.0.4 [root@master redis-5.0.4]# ls 00-RELEASENOTES BUGS COPYING deps INSTALL Makefile README.md runtest-cluster sentinel.conf tests CONTRIBUTING MANIFESTO runtest runtest-sentinel src utils
2.安装gcc,如果未安装gcc的话需要安装gcc环境
[root@master redis-5.0.4]# yum -y install gcc*
3.进入redis-5.0.4目录对解压后的文件进行编译、安装
[root@master redis]# cd redis-5.0.4 [root@master redis-5.0.4]#make //进行编译 [root@master redis-5.0.4]#cd src/ //进入src目录下 [root@master src]# make install //安装redis
4.为了便于管理,在redis-5.0.4下创建bin,log,data,etc等四个目录
[root@master redis-5.0.4]# mkdir bin [root@master redis-5.0.4]#mkdir etc [root@master redis-5.0.4]#mkdir data [root@master redis-5.0.4]#mkdir log [root@master redis-5.0.4]#ls 00-RELEASENOTES BUGS COPYING deps INSTALL Makefile README.md runtest-cluster sentinel.conf tests bin CONTRIBUTING data etc log MANIFESTO runtest runtest-sentinel src [root@master redis-5.0.4]#mv redis.conf etc/ //将redis-5.0.4目录下的 redis.conf 移动到 redis-5.0.4目录下的etc文件夹下 [root@master redis-5.0.4]#mv src/mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-sentinel bin/ //将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-cli、redis-server 、redis-sentinel移动到 /usr/local/redis-5.0.0/bin/ 目录下
5.进入redis-5.0.4/etc下修改redis.conf配置文件,然后启动redis服务
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES # JUST COMMENT THE FOLLOWING LINE. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #bind 127.0.0.1 //绑定的主机,注释掉后允许所有主机登陆 protected-mode no //关闭保护模式 port 6379 //端口,默认为6379 daemonize yes //开启后台运行模式 logfile "/backup2/redis/redis-5.0.4/log/redis.log" //redis日志文件路径 dir "/backup2/redis/redis-5.0.4/data" //持久化数据文件路径 requirepass "password" //登陆redis数据库的密码认证 masterauth "password" //哨兵模式中设定主库密码与当前库密码同步,保证从库能够提升为主库 appendonly yes //开启AOF持久化模式
进入bin目录下
[root@master bin]# ./redis-server ../etc/redis.conf //使用编辑好的配置文件启动redis
[root@master bin]# ./redis-cli //启动redis客户端 127.0.0.1:6379> ping (error) NOAUTH Authentication required. 127.0.0.1:6379> auth password //该密码为配置文件中设定的密码 OK 127.0.0.1:6379> ping PONG 127.0.0.1:6379> //如上输出即表示redis启动成功
6.启动告警处理,在首次启动redis时 有可能会有以下告警:
告警:overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
解决办法:在/etc/sysctl.conf/文件中添加vm.overcommit_memory=1 sysctl -p 生效
二、哨兵模式配置
由于哨兵模式包含了简单的主从模式,所以主从模式不再进行单独说明,普通主从模式只是可以备份数据,在主机宕机并且数据文件损坏的情况下提供数据恢复,不能在主机挂掉之后主动升级为主节点,而哨兵模式就是通过哨兵对节点的监控,在主节点挂掉之后能通过投票的方式在从节点中选举一个升级为主节点。
软件架构:三台服务器:master,slave1,slave2,其中master为前面已经安装好的主机
1.修改sentinel配置文件
//在redis.conf所在目录下新建一个sentinel.conf文件 [root@master etc]# vi sentinel.conf protected-mode no //关闭保护模式 port 26379 //默认端口 daemonize yes //允许后台运行 pidfile "/var/run/redis-sentinel.pid" //pid文件 默认就好 logfile "/backup2/redis/redis-5.0.4/log/sentinel.log" //sentinel日志文件 sentinel announce-ip 192.168.1.1 //设置本机ip #master sentinel monitor mymaster 192.168.1.1 6379 2 sentinel down-after-milliseconds mymaster1 30000 sentinel parallel-syncs mymaster 2 sentinel failover-timeout mymaster 180000 sentinel auth-pass mymaster1 yourpasswd
2.把 redis-5.0.4目录整个打包并传到另外两台服务器,然后解压
在每台服务器上分别修改redis.conf,在配置文件中添加 slaveof 192.168.1.1 6379 //配置主从关系
修改sentinel.cong,把sentinel announce-ip 192.168.1.1 中的ip更换为本机ip,其余配置可不用更改。
3.启动集群服务,按照master->slave->sentinel的启动顺序
[root@master bin]# ./redis-server ../etc/redis.conf //在每个节点执行该命令启动redis root@master bin]# ./redis-sentinel ../etc/sentinel.conf //启动sentinel //启动后在主节点连接到主节点 127.0.0.1:6379> info replication # Replication role:master //角色 connected_slaves:2 //节点个数 slave0:ip=192.168.1.2,port=6379,state=online,offset=84,lag=1 //从节点信息 slave1:ip=192.168.1.3,port=6379,state=online,offset=98,lag=0 //从节点信息 master_replid:27663ab908f4a8bfd198cd7ec3db924bee4fa441 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:98 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:98 //连接到从节点 127.0.0.1:6379> info replication # Replication role:slave master_host:192.168.1.1 master_port:6379 master_link_status:up //主节点状态 up/down master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:62896 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:af5dd7a6f5e2093bbe8f01923fcfe0ed7fc8ba14 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:62896 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:62896 127.0.0.1:6379>
启动哨兵:[root@test bin]# ./redis-sentinel ../etc/sentinel.conf
[root@master bin]#./redis-cli -h 192.168.1.1 -p 26379 10.197.11.159:26379> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=192.168.1.1:6379,slaves=2,sentinels=3 //以上表示哨兵模式集群正常
至此,redis的一主二从三哨兵架构搭建完成。