redis3.2.11多机多实例集群部署及测试连接情况
机器配置
redis3.2.11安装配置规划 |
|
机器 |
192.168.169.136(本机虚拟机1) 192.168.169.137(本机虚拟机2) |
系统 |
Red Hat Enterprise Linux Server release 6.4 (Santiago) |
系统内核 |
2.6.32-358.el6.x86_64 |
安装包 |
redis-3.2.11.tar.gz |
路径 |
Tar包路径:/home/usird/redis-3.2.11.tar.gz 解压后路径:/home/usird/redis-3.2.11 放置配置文件路径:/home/usird/redis_group(为方便管理,故而将所需配置文件及执行文件统一放在此文件夹) |
redis3.2.11版本tar包提取:
云盘网址:https://pan.baidu.com/s/1xf6PTJedUWlf4AwEH4UDSg
提取密码:15mp
(无需ruby环境,无需其他文档所说的各种依赖包)
本文档采用主从复制方式去搭建集群,具体情况是:
(1)master服务器:192.168.169.136
主服务器(master):192.168.169.136:6379
哨兵1:192.168.169.136:26379
(2)slave服务器:192.168.169.137
从服务器(slave1):192.168.169.137:6380
从服务器(slave2):192.168.169.137:6381
从服务器(slave3):192.168.169.137:6382
哨兵2:192.168.169.137:26380
哨兵3:192.168.169.137:26381
哨兵4:192.168.169.137:26382
1. 安装步骤
1.1. 主从服务器相同操作(两台服务器均需执行)
1.1.1. 新建用户
1、为了统一管理redis数据库,使用root用户新建管理用户usird
新建用户:adduser usird
2、修改用户密码,进行安全考虑
修改密码:passwd usird 输入密码为usird
3、切换到usird用户,正式进行redis数据库集群的搭建
切换usird用户:su - usird
1.1.2. 下载上传redis-3.2.11.tar.gz包
4、下载redis-3.2.11.tar.gz包到本地
云盘网址:https://pan.baidu.com/s/1xf6PTJedUWlf4AwEH4UDSg
提取密码:15mp
5、进入到usird用户主目录
进入主目录:cd
6、利用xshell工具上传刚刚下载的tar包到服务器
1.1.3. 解压编译redis-3.2.11.tar.gz包
7、解压已上传的tar包
解压:tar -zxvf redis-3.2.11.tar.gz
8、删除redis的tar包,减轻服务器压力,如果磁盘和内存空间足够大,可以不删除,跳过这一步
删除tar包: rm -rf redis-3.2.11.tar.gz
9、进入解压后的redis-3.2.11目录执行make命令
进入解压后路径:cd redis-3.2.11/
执行编译命令:make
Make成功之后,在src目录中会出现redis-server、redis-sentinel、redis-cli、redis-benchmark、redis-check-rdb、 redis-check-aof等可执行文件
10、为了方便后期统一管理,现在在usird用户主目录下面新建redis_group文件夹,将redis集群相关配置文件和执行文件放置在一起
1.1.4. 新建文件夹统一管理
新建文件夹:mkdir redis_group
复制文件到文件夹(依次执行下列命令):
cd redis-3.2.11/src/
cp redis-server redis-cli redis-sentinel ../../redis_group/
cd ../../redis_group/
ls
1.2. 主从服务器不同操作
备注:两台服务器上述共同操作执行完毕后才开始执行下面步骤
1.2.1. 修改redis.conf和sentinel.conf配置文件
1.2.1.1. 主服务器修改配置文件
主服务器仅需配置一个master节点,新建redis-6379.conf、sentinel-26379.conf文件即可
依次执行命令:
touch redis-6379.conf
touch sentinel-26379.conf
11、redis-6379.conf配置文件内容如下(直接粘贴进配置文件即可,IP端口号等修改成自己的----红色参数部分注意一下):
执行命令:
vim redis-6379.conf
参数:
#后台启动 daemonize yes pidfile "/home/usird/redis_group/redis_6379.pid" port 6379 timeout 0 tcp-keepalive 0 loglevel notice logfile "/home/usird/redis_group/redis6379.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump6379.rdb" dir "/home/usird/redis_group" #如果做故障切换,不论主从节点都要填写密码且要保持一致 masterauth "123456" slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 98 #当前redis密码 requirepass "123456" appendonly yes # appendfsync always appendfsync everysec # appendfsync no no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes # Generated by CONFIG REWRITE
|
12、sentinel-26379.conf配置文件内容如下(直接粘贴进配置文件即可,红色参数部分注意一下):
执行命令:
vi sentinel-26379.conf
参数:
port 26379 #1表示在sentinel集群中只要有两个节点检测到redis主节点出故障就进行切换,单sentinel节点无效(自己测试发现的) #如果3s内mymaster无响应,则认为mymaster宕机了 #如果10秒后,mysater仍没活过来,则启动failover sentinel monitor mymaster 192.168.169.136 6379 1 (注意这里是master的ip和端口,自行依据自己的ip和端口进行修改) sentinel down-after-milliseconds mymaster 3000 sentinel failover-timeout mymaster 10000 daemonize yes #指定工作目录 dir "/home/usird/redis_group" protected-mode no logfile "/home/usird/redis_group/sentinel26379.log" #redis主节点密码 sentinel auth-pass mymaster 123456 # Generated by CONFIG REWRITE
|
1.2.1.2. 从服务器修改配置文件
从服务器需配置三个slave节点,新建redis-6380.conf、redis-6381.conf、redis-6382.conf、sentinel-26380.conf、sentinel-26381.conf、sentinel-26382.conf文件
依次执行:
touch redis-6380.conf
touch redis-6381conf
touch redis-6382.conf
touch sentinel-26380.conf
touch sentinel-26381.conf
touch sentinel-26382.conf
13、redis-6380.conf配置文件内容如下(直接粘贴进配置文件即可,IP端口号等修改成自己的----红色参数部分注意一下):
--redis-6381.conf、redis-6382.conf配置文件参考6380配置文件
执行命令:
vim redis-6379.conf
参数:
daemonize yes pidfile "/home/usird/redis_group/redis_6380.pid" port 6380 timeout 0 tcp-keepalive 0 loglevel notice logfile "/home/usird/redis_group/redis6380.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump6380.rdb" dir "/home/usird/redis_group" #主节点密码 masterauth "123456" slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 98 requirepass "123456" appendonly yes # appendfsync always appendfsync everysec # appendfsync no no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes # Generated by CONFIG REWRITE #配置主节点信息 slaveof 192.168.169.136 6379
|
14、sentinel-26380.conf配置文件内容如下(直接粘贴进配置文件即可,红色参数部分注意一下,注意修改端口):
--sentinel-26381.conf、sentinel-26382.conf配置文件参考26380配置文件
执行命令:
vi sentinel-26380.conf
参数:
port 26380 #1表示在sentinel集群中只要有两个节点检测到redis主节点出故障就进行切换,单sentinel节点无效(自己测试发现的) #如果3s内mymaster无响应,则认为mymaster宕机了 #如果10秒后,mysater仍没活过来,则启动failover sentinel monitor mymaster 192.168.169.136 6379 1 sentinel down-after-milliseconds mymaster 3000 sentinel failover-timeout mymaster 10000 daemonize yes #指定工作目录 dir "/home/usird/redis_group" protected-mode no logfile "/home/usird/redis_group/sentinel26380.log" #redis主节点密码 sentinel auth-pass mymaster 123456 # Generated by CONFIG REWRITE
|
1.2.2. 启动redis服务
1.2.2.1. 主服务器启动
15、启动redis服务并查看进程:
分别执行以下命令:
./redis-server redis-6379.conf
ps -ef|grep redis
1.2.2.2. 从服务器启动
16、启动redis服务并查看进程:
分别执行以下命令:
./redis-server redis-6380.conf
./redis-server redis-6381.conf
./redis-server redis-6382.conf
ps -ef|grep redis
1.2.3. 进入redis客户端
1.2.3.1. 主服务器进入redis客户端
执行命令:
./redis-cli -h 192.168.169.136 -p 6379 -a 123456
info
(如果这里没有出现上述红色标识字段,那么先查看配置文件是否正确,配置文件正确的情况下,关闭防火墙,重启redis即可)
1.2.3.2. 从服务器进入redis客户端
执行命令:
./redis-cli -h 192.168.169.137 -p 6380 -a 123456
info
其他两个slave进入客户端方式同上--修改端口等即可
1.2.4. 启动哨兵
1.2.4.1. 主服务器启动哨兵并查看日志
执行命令:
./redis-sentinel sentinel-26379.conf
tail -f sentinel26379.log
1.2.4.2. 从服务器启动哨兵并查看日志
执行命令:
./redis-sentinel sentinel-26380.conf
tail -f sentinel-26380.log
其他两个slave启动哨兵方式同上
1.3. 主服务器操作
1.3.1. 手动杀死master:6379进程
17、现在作为主服务器(master)的是6379端口,现在杀死该进程,查看从服务器是否会转换成master,以确保数据不会丢失,服务仍正常运转
查看进程并杀死进程:
ps -ef|grep redis
kill -9 ***(进程号)
18、查看日志:
tail -f sentinel26379.log
由此我们能看到Slave(137服务器):6380端口自动转换成了master,现在来进入客户端查看一下
1.3.2. 重启6379:redis服务
执行命令:
./redis-server redis-6379.conf
查看日志:
执行命令:
tail -f sentinel-26379.log
2. Redis数据库数据操作
2.1. Master插入key-vlaue
依次执行:
./redis-cli -h 192.168.169.137 -p 6380 -a 123456
set hello world1
exit
2.2. Slave读取数据
依次执行:
./redis-cli -h 192.168.169.136 -p 6379 -a 123456
get hello
exit
至此,redis集群搭建完毕,测试master与slave关系完毕,输入插入读取完毕
2.3. Eclipse连接redis数据库
19、关闭Linux服务器防火墙(或指定开放端口)
20、打开eclipse,新建project----jedistest1
在jedistest项目src目录下新建一个class--test
代码:
package jedistest1; import redis.clients.jedis.Jedis; public class test { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("192.168.169.137",6380); jedis.auth("123456"); System.out.println("Server is running: " + jedis.ping()); System.out.println("连接成功"); String value = jedis.get("hello"); System.out.println("key--hello1的value值为:"+value); //jedis.set("thank", "you"); System.out.println("key--thank的value值为:"+jedis.get("thank")); } } |
Eclipse能成功连接Linux服务器上面的redis数据库,并插入数据、读取数据,返回值为
注意在贴入代码时,需要导入两个jar包(jedis-2.4.1.jar、commons-pool2-2.4.2.jar),否则会报错
依赖包下载地址:https://pan.baidu.com/s/1lrxhnfTnaNwYTCgKFyazgw
密码:3v5j
具体String, List, Hash, Set, SortedSet这五种数据结构相关操作命令及代码可自行百度,此处不做赘述