设为首页 收藏本站
查看: 625|回复: 0

[经验分享] Redis3 集群功能配置初尝

[复制链接]

尚未签到

发表于 2018-11-6 09:05:28 | 显示全部楼层 |阅读模式
  又很久很久没有更新博客了,也很久很久没有做云计算了,前期做了一段时间的游戏,现在又回归到常规运维的岗位,最近接触到redis这玩意,也就简单配置了下,至少要熟悉下常规的配置,才能做到运维支撑嘛。现在也没有很多时间完善博客格式什么的,就把一些笔记贴进来,方便自己后期查看,如果可以,希望对新学者有所帮助吧。
  操作环境说明
  10.117.41.242 yunwei_dev01 Centos6u5
  10.117.41.36  yunwei_dev02  Centos6u5
  版本路径:/data/src/redis-3.0.3.tar.gz
  安装路径:/data/install/redis
  依赖环境:gcc
  一.安装redis并配置主从
  1. 安装redis
  [root@yunwei_dev01 src]#  tar zxvf redis-3.0.3.tar.gz
  [root@yunwei_dev01 src]# cd redis-3.0.3
  [root@yunwei_dev01 redis-3.0.3]# make PREFIX=/data/install/redis install
  2. 查看安装后目录/文件
  [root@yunwei_dev01 ~]# ls -R /data/install/redis/
  /data/install/redis/:
  bin
  /data/install/redis/bin:
  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server
  3. 默认没有配置文件,创建目录,导入配置
  mkdir /data/install/redis/conf
  mkdir /data/install/redis/data
  mkdir /data/log/redis/
  cp /data/src/redis-3.0.3/redis.conf    /data/install/redis/conf/
  =====redis.conf==模板====
  daemonize no
  pidfile /var/run/redis.pid
  port 6379
  tcp-backlog 511
  timeout 0
  tcp-keepalive 0
  loglevel notice
  logfile ""
  databases 16
  save 900 1
  save 300 10
  save 60 10000
  stop-writes-on-bgsave-error yes
  rdbcompression yes
  rdbchecksum yes
  dbfilename dump.rdb
  dir ./
  slave-serve-stale-data yes
  slave-read-only yes
  repl-diskless-sync no
  repl-diskless-sync-delay 5
  repl-disable-tcp-nodelay no
  slave-priority 100
  appendonly no
  appendfilename "appendonly.aof"
  appendfsync everysec
  no-appendfsync-on-rewrite no
  auto-aof-rewrite-percentage 100
  auto-aof-rewrite-min-size 64mb
  aof-load-truncated yes
  lua-time-limit 5000
  slowlog-log-slower-than 10000
  slowlog-max-len 128
  latency-monitor-threshold 0
  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
  hll-sparse-max-bytes 3000
  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
  ===========End===========
  4.修改部分参数后如下显示
  daemonize yes
  pidfile "/data/install/redis/redis.pid"
  port 6379
  tcp-backlog 511
  timeout 0
  tcp-keepalive 0
  loglevel notice
  logfile "/data/log/redis/redis.log"
  databases 16
  save 900 1
  save 300 10
  save 60 10000
  stop-writes-on-bgsave-error yes
  rdbcompression yes
  rdbchecksum yes
  dbfilename dump.rdb
  dir "/data/install/redis/data"
  slave-serve-stale-data yes
  slave-read-only yes
  maxmemory 128M
  masterauth  "test123"
  requirepass "test123"
  repl-diskless-sync no
  repl-diskless-sync-delay 5
  repl-disable-tcp-nodelay no
  slave-priority 100
  appendonly no
  appendfilename "appendonly.aof"
  appendfsync everysec
  no-appendfsync-on-rewrite no
  auto-aof-rewrite-percentage 100
  auto-aof-rewrite-min-size 64mb
  aof-load-truncated yes
  lua-time-limit 5000
  slowlog-log-slower-than 10000
  slowlog-max-len 128
  latency-monitor-threshold 0
  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
  hll-sparse-max-bytes 3000
  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
  5. 启动redis
  生产环境通过脚本启停:
  /data/src/redis-3.0.3/utils/redis_init_script
  测试环境直接通过命令行启动即可
  [root@yunwei_dev01 ~]# /data/install/redis/bin/redis-server     /data/install/redis/conf/redis.conf
  [root@yunwei_dev01 ~]# ps -ef |grep redis |grep -v grep
  root      4179     1  0 09:14 ?        00:00:00 /data/install/redis/bin/redis-server *:6379
  [root@yunwei_dev01 ~]# netstat -nltup |grep 6379
  tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      4179/redis-server *
  6. 登陆测试
  [root@yunwei_dev01 ~]#
  127.0.0.1:6379> set myname “brucefeng”
  OK
  127.0.0.1:6379> get myname
  “brucefeng"
  7.配置从服务器  yunwei_dev02
  区别:只需要将redis.conf配置中加上slaveof yunwei_dev01 port即可
  slaveof 10.117.41.242 6379
  统一看下master跟slave的日志吧。
  =========master==========
  4848:M 06 Aug 09:20:10.814 # Server started, Redis version 3.0.3
  4848:M 06 Aug 09:20:10.814 # WARNING 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.
  4848:M 06 Aug 09:20:10.814 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
  4848:M 06 Aug 09:20:10.814 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  4848:M 06 Aug 09:20:10.814 * DB loaded from disk: 0.000 seconds
  4848:M 06 Aug 09:20:10.814 * The server is now ready to accept connections on port 6379
  4848:M 06 Aug 09:27:49.448 * Slave 10.117.41.36:6379 asks for synchronization
  4848:M 06 Aug 09:27:49.449 * Full resync requested by slave 10.117.41.36:6379
  4848:M 06 Aug 09:27:49.449 * Starting BGSAVE for SYNC with target: disk
  4848:M 06 Aug 09:27:49.449 * Background saving started by pid 4856
  4856:C 06 Aug 09:27:49.460 * DB saved on disk
  4856:C 06 Aug 09:27:49.460 * RDB: 6 MB of memory used by copy-on-write
  4848:M 06 Aug 09:27:49.548 * Background saving terminated with success
  4848:M 06 Aug 09:27:49.548 * Synchronization with slave 10.117.41.36:6379 succeeded
  =========end==========
  ========slave==========
  28060:S 06 Aug 09:27:49.444 # Server started, Redis version 3.0.3
  28060:S 06 Aug 09:27:49.444 # WARNING 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.
  28060:S 06 Aug 09:27:49.444 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
  28060:S 06 Aug 09:27:49.444 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  28060:S 06 Aug 09:27:49.444 * The server is now ready to accept connections on port 6379
  28060:S 06 Aug 09:27:49.444 * Connecting to MASTER 10.117.41.242:6379
  28060:S 06 Aug 09:27:49.444 * MASTER  SLAVE sync started
  28060:S 06 Aug 09:27:49.447 * Non blocking connect for SYNC fired the event.
  28060:S 06 Aug 09:27:49.448 * Master replied to PING, replication can continue...
  28060:S 06 Aug 09:27:49.448 * Partial resynchronization not possible (no cached master)
  28060:S 06 Aug 09:27:49.449 * Full resync from master: 88f015eff5a360a7432f5ed9f9e92556dadd0eb5:1
  28060:S 06 Aug 09:27:49.549 * MASTER  SLAVE sync: receiving 38 bytes from master
  28060:S 06 Aug 09:27:49.549 * MASTER  SLAVE sync: Flushing old data
  28060:S 06 Aug 09:27:49.549 * MASTER  SLAVE sync: Loading DB in memory
  28060:S 06 Aug 09:27:49.549 * MASTER  SLAVE sync: Finished with success
  =============end================
  8.查看主从同步状态:
  [root@yunwei_dev01 ~]# /data/install/redis/bin/redis-cli   -h 127.0.0.1 -p 6379 -a test123 info Replication
  # Replication
  role:master
  connected_slaves:1
  slave0:ip=10.117.41.36,port=6379,state=online,offset=969,lag=1
  master_repl_offset:969
  repl_backlog_active:1
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:2
  repl_backlog_histlen:968
  [root@yunwei_dev02 ~]# /data/install/redis/bin/redis-cli   -h 127.0.0.1 -p 6379 -a test123 info Replication
  # Replication
  role:slave
  master_host:10.117.41.242
  master_port:6379
  master_link_status:up
  master_last_io_seconds_ago:4
  master_sync_in_progress:0
  slave_repl_offset:955
  slave_priority:100
  slave_read_only:1
  connected_slaves:0
  master_repl_offset:0
  repl_backlog_active:0
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:0
  repl_backlog_histlen:0
  9.查看主从数据
  [root@yunwei_dev02 redis]# /data/install/redis/bin/redis-cli   -h 127.0.0.1 -p 6379 -a test123
  127.0.0.1:6379> get myname
  “brucefeng"
  [root@yunwei_dev01 ~]# /data/install/redis/bin/redis-cli   -h 127.0.0.1 -p 6379 -a test123
  127.0.0.1:6379> set name_a "jack"
  OK
  [root@yunwei_dev02 ~]# /data/install/redis/bin/redis-cli   -h 127.0.0.1 -p 6379 -a test123
  127.0.0.1:6379> get name_a
  “jack"
  二.配置Redis Sentinel
  Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中
  Sentinel作用:
  1):Master状态检测
  2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave
  3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
  Sentinel工作方式:
  1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令
  2):如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。
  3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。
  4):当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线
  5):在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令
  6):当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次
  7):若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。
  若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。
  1. 配置文件sentinel.conf
  port 26379
  daemonize yes
  sentinel monitor yunwei_redis_master 10.117.41.242 6379 1
  sentinel auth-pass yunwei_redis_master test123
  sentinel down-after-milliseconds yunwei_redis_master 30000
  sentinel parallel-syncs yunwei_redis_master 1
  sentinel failover-timeout yunwei_redis_master 900000
  logfile "/data/log/redis/sentinel.log"
  #上面配置文件说明如下:
  #第一行指定sentinel端口号
  #第二行指定sentinel为后台启动
  #第三行指定Sentinel去监视一个名为 mymaster 的Master,Master的IP地址为192.168.100.211,端口号为6379,最后的2表示当有2个Sentinel检测到Master异常时才会判定其失效,即只有当2个Sentinel都判定Master失效了才会自动迁移,如果Sentinel的数量不达标,则不会执行自动故障迁移。
  #第四行指定Sentinel判定Master断线的时间。(单位为毫秒,判定为主观下线SDOWN)
  #第五行指定在执行故障转移时,最多可以有多少个Slave同时对新的Master进行同步。这个数字设置为1,虽然完成故障转移所需的时间会变长,但是可以保证每次只有1个Slave处于不能处理命令请求的状态
  2.启动sentinel
  /data/install/redis/bin/redis-sentinel   /data/install/redis/conf/sentinel.conf
  日志如下:
  4969:X 06 Aug 10:22:18.038 # Sentinel runid is bbad79a0f754321cb10cd88cd84637eca2003126
  4969:X 06 Aug 10:22:18.038 # +monitor master yunwei_redis_master 10.117.41.242 6379 quorum 1
  4969:X 06 Aug 10:22:18.040 * +slave slave 10.117.41.36:6379 10.117.41.36 6379 @ yunwei_redis_master 10.117.41.242 6379
  [root@yunwei_dev02 redis]# /data/install/redis/bin/redis-cli   -h 10.117.41.242 -p 26379 info Sentinel
  # Sentinel
  sentinel_masters:1
  sentinel_tilt:0
  sentinel_running_scripts:0
  sentinel_scripts_queue_length:0
  master0:name=yunwei_redis_master,status=ok,address=10.117.41.242:6379,slaves=1,sentinels=1
  [root@yunwei_dev01 conf]#  /data/install/redis/bin/redis-cli   -h 127.0.0.1 -p 6379 -a test123 shutdown
  3.关闭master
  日志如下
  ==> redis.log  sentinel.log  sentinel.log  redis.log  sentinel.log

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631332-1-1.html 上篇帖子: 【Redis】Redis学习笔记01_Linux下Redis的安装 下篇帖子: Node.js 中使用 Redis 来实现定时任务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表