zoukankan      html  css  js  c++  java
  • 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环境,无需其他文档所说的各种依赖包)

    本文档采用主从复制方式去搭建集群,具体情况是:

    1master服务器:192.168.169.136

    主服务器(master):192.168.169.136:6379

    哨兵1192.168.169.136:26379

     

    2slave服务器:192.168.169.137

    从服务器(slave1):192.168.169.137:6380

    从服务器(slave2):192.168.169.137:6381

    从服务器(slave3):192.168.169.137:6382

    哨兵2192.168.169.137:26380

    哨兵3192.168.169.137:26381

    哨兵4192.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-serverredis-sentinelredis-cliredis-benchmarkredis-check-rdbredis-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. 手动杀死master6379进程

    17、现在作为主服务器(master)的是6379端口,现在杀死该进程,查看从服务器是否会转换成master,以确保数据不会丢失,服务仍正常运转

    查看进程并杀死进程:

    ps -ef|grep redis

    kill -9 ***(进程号)

     

    18、查看日志:

    tail -f sentinel26379.log

     

    由此我们能看到Slave(137服务器):6380端口自动转换成了master,现在来进入客户端查看一下

     

    1.3.2. 重启6379redis服务

    执行命令:

    ./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.jarcommons-pool2-2.4.2.jar),否则会报错

    依赖包下载地址:https://pan.baidu.com/s/1lrxhnfTnaNwYTCgKFyazgw

    密码:3v5j

     

    具体String,  List,  Hash,  Set,  SortedSet这五种数据结构相关操作命令及代码可自行百度,此处不做赘述

  • 相关阅读:
    js:鼠标事件
    js:argument
    js:|| 和 && 运算符 特殊用法
    css:选择器
    css:清除浮动 overflow
    jquery:after append appendTo三个函数的区别
    WIndow Document
    css:颜色名和十六进制数值
    安装centos出错
    Leetcode | Unique Paths I & II
  • 原文地址:https://www.cnblogs.com/qingqing74647464/p/8608607.html
Copyright © 2011-2022 走看看