redis的搭建及应用(三)-Redis主从配置

Redis主从配置

为提升Redis的高可用性,需要搭建多个Redis集群以保证高可用性。常见搭建方式有:主从,哨兵集群等,本节我们搭建一主二从的多Redis架构。

redis主从安装1主2从的方式配置,以端口号为redis的主从文件夹。

主(master): 6379

从(slave): 6380, 6381

image-20230727164649219

redis主服务器(master:6379)

使用vim工具打开配置文件,修改里面的内容。

NETWORK模块
 ################################## NETWORK #####################################47 48 # By default, if no "bind" configuration directive is specified, Redis listens49 # for connections from all available network interfaces on the host machine.50 # It is possible to listen to just one or multiple selected interfaces using51 # the "bind" configuration directive, followed by one or more IP addresses.52 # Each address can be prefixed by "-", which means that redis will not fail to53 # start if the address is not available. Being not available only refers to54 # addresses that does not correspond to any network interfece. Addresses that55 # are already in use will always fail, and unsupported protocols will always BE48 # By default, if no "bind" configuration directive is specified, Redis listens49 # for connections from all available network interfaces on the host machine.50 # It is possible to listen to just one or multiple selected interfaces using51 # the "bind" configuration directive, followed by one or more IP addresses.52 # Each address can be prefixed by "-", which means that redis will not fail to53 # start if the address is not available. Being not available only refers to54 # addresses that does not correspond to any network interfece. Addresses that55 # are already in use will always fail, and unsupported protocols will always BE56 # silently skipped.57 #58 # Examples:59 #60 # bind 192.168.1.100 10.0.0.1     # listens on two specific IPv4 addresses61 # bind 127.0.0.1 ::1              # listens on loopback IPv4 and IPv662 # bind * -::*                     # like the default, all available interfaces63 #64 # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the65 # internet, binding to all the interfaces is dangerous and will expose the66 # instance to everybody on the internet. So by default we uncomment the67 # following bind directive, that will force Redis to listen only on the68 # IPv4 and IPv6 (if available) loopback interface addresses (this means Redis69 # will only be able to accept client connections from the same host that it is70 # running on).71 #72 # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES73 # JUST COMMENT OUT THE FOLLOWING LINE.74 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~75 bind 127.0.0.1 -::1

修改ip绑定地址为全网可访问。

bind *0.0.0.0 全网可访问

75 bind 0.0.0.0
image-20231125102224377
protected-mode
  77 # Protected mode is a layer of security protection, in order to avoid that78 # Redis instances left open on the internet are accessed and exploited.79 #80 # When protected mode is on and if:81 #82 # 1) The server is not binding explicitly to a set of addresses using the83 #    "bind" directive.84 # 2) No password is configured.85 #86 # The server only accepts connections from clients connecting from the87 # IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain88 # sockets.89 #90 # By default protected mode is enabled. You should disable it only if91 # you are sure you want clients from other hosts to connect to Redis92 # even if no authentication is configured, nor a specific set of interfaces93 # are explicitly listed using the "bind" directive.94 protected-mode yes
  • 保护模式是一个避免你在互联网(外网)访问redis的机制。
  • 当启用保护模式,而且没有密码时,服务器只接受来自IPv4地址(127.0.0.1)、IPv6地址(::1)或Unix套接字本地连接。(没密码+保护模式启动=本地访问)
  • 默认是开启的
94 protected-mode no
image-20231125102552377
修改日志
修改日志级别为DEBUG
 293 # Specify the server verbosity level.294 # This can be one of:295 # debug (a lot of information, useful for development/testing)296 # verbose (many rarely useful info, but not a mess like the debug level)297 # notice (moderately verbose, what you want in production probably)298 # warning (only very important / critical messages are logged)299 loglevel notice
image-20231125105436936
修改日志的输出位置

定义日志文件的输出位置到/var/log/redis.log

 301 # Specify the log file name. Also the empty string can be used to force302 # Redis to log on the standard output. Note that if you use standard303 # output for logging but daemonize, logs will be sent to /dev/null304 logfile ""
image-20231125105737726
配置本机ip和端口

主服务器部署在Docker或者其他网络代理工具,会使主服务器的ip,端口改变时,可以在配置// 文件中声明主服务器原始的ip和端口。

定义replica-announce-ip 和端口

tip: ip,port是linux的ip地址和端口号(不是容器内部ip,否则外界不能访问)。

192.168.xxx.yyy —linux服务器的ip地址

706 # A Redis master is able to list the address and port of the attached707 # replicas in different ways. For example the "INFO replication" section708 # offers this information, which is used, among other tools, by709 # Redis Sentinel in order to discover replica instances.710 # Another place where this info is available is in the output of the711 # "ROLE" command of a master.712 #713 # The listed IP address and port normally reported by a replica is714 # obtained in the following way:715 #716 #   IP: The address is auto detected by checking the peer address717 #   of the socket used by the replica to connect with the master.718 #719 #   Port: The port is communicated by the replica during the replication720 #   handshake, and is normally the port that the replica is using to721 #   listen for connections.722 #723 # However when port forwarding or Network Address Translation (NAT) is724 # used, the replica may actually be reachable via different IP and port725 # pairs. The following two options can be used by a replica in order to726 # report to its master a specific set of IP and port, so that both INFO727 # and ROLE will report those values.728 #729 # There is no need to use both the options if you need to override just730 # the port or the IP address.731 #732 # replica-announce-ip 5.5.5.5733 # replica-announce-port 1234
image-20231125110817091
查看redis状态
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:9ab01d97e6c3f5bd43ea60ddfc7cc42dddfa5fc4
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
image-20231125163336145

redis从服务器配置(6380)

配置6380/conf/redis.conf文件

上传配置文件redis.conf

image-20230727161242302

配置主从 Master-Replica replication
 458 ################################# REPLICATION #################################459 460 # Master-Replica replication. Use replicaof to make a Redis instance a copy of461 # another Redis server. A few things to understand ASAP about Redis replication.462 #463 #   +------------------+      +---------------+464 #   |      Master      | ---> |    Replica    |465 #   | (receive writes) |      |  (exact copy) |466 #   +------------------+      +---------------+467 #468 # 1) Redis replication is asynchronous, but you can configure a master to469 #    stop accepting writes if it appears to be not connected with at least470 #    a given number of replicas.471 # 2) Redis replicas are able to perform a partial resynchronization with the472 #    master if the replication link is lost for a relatively small amount of473 #    time. You may want to configure the replication backlog size (see the next474 #    sections of this file) with a sensible value depending on your needs.475 # 3) Replication is automatic and does not need user intervention. After a476 #    network partition replicas automatically try to reconnect to masters477 #    and resynchronize with them.478 #479 # replicaof <masterip> <masterport>
image-20231125164603387
配置从只读

在配置文件末尾添加: slave-read-only yes(旧版本),新版本默认为从只读。

image-20231125173329121
配置服务器ip地址

修改redis.conf文件中的replica-announce-ip/port为本机(linux)的ip和docker映射的地址。

 732 replica-announce-ip 192.168.198.128733 replica-announce-port 6380
image-20231125165040194
创建运行容器
docker run -it \
--name redis_6380 \
--privileged \
-p 6380:6379 \
--network wn_docker_net \
--ip 172.18.12.11 \
--sysctl net.core.somaxconn=1024 \
-e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
-v /usr/local/software/redis/6380/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/software/redis/6380/data/:/data \
-v /usr/local/software/redis/6380/log/redis.log:/var/log/redis.log \
-d redis \
/usr/local/etc/redis/redis.conf
查看启动日志
  1. 启动信息

image-20231125170346321

  1. 主从连接信息

image-20231125170726876

  1. 检查master(6379)服务器日志

image-20231125171032937

进入redis-cli查看主从状态
[root@localhost conf]# docker exec -it redis_6380 bash
root@eb572dc438ae:/data# redis-cli127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.198.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_read_repl_offset:2800
slave_repl_offset:2800
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:d55333204ec41a62dd7f1074d6167392c21b6c24
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2800
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2731
repl_backlog_histlen:70
image-20231125173804746

第二个redis从服务器(6381)

配置6380/conf/redis.conf文件

上传配置文件redis.conf

image-20230727161242302

配置主从 Master-Replica replication
 458 ################################# REPLICATION #################################459 460 # Master-Replica replication. Use replicaof to make a Redis instance a copy of461 # another Redis server. A few things to understand ASAP about Redis replication.462 #463 #   +------------------+      +---------------+464 #   |      Master      | ---> |    Replica    |465 #   | (receive writes) |      |  (exact copy) |466 #   +------------------+      +---------------+467 #468 # 1) Redis replication is asynchronous, but you can configure a master to469 #    stop accepting writes if it appears to be not connected with at least470 #    a given number of replicas.471 # 2) Redis replicas are able to perform a partial resynchronization with the472 #    master if the replication link is lost for a relatively small amount of473 #    time. You may want to configure the replication backlog size (see the next474 #    sections of this file) with a sensible value depending on your needs.475 # 3) Replication is automatic and does not need user intervention. After a476 #    network partition replicas automatically try to reconnect to masters477 #    and resynchronize with them.478 #479 # replicaof <masterip> <masterport>
image-20231125164603387
配置服务器ip地址

修改redis.conf文件中的replica-announce-ip/port为本机(linux)的ip和docker映射的地址。

 732 replica-announce-ip 192.168.198.128733 replica-announce-port 6381
image-20231125181355725
配置从只读

在配置文件末尾添加: slave-read-only yes(旧版本),新版本默认为从只读。

image-20231125173329121
创建运行容器
docker run -it \
--name redis_6381 \
--privileged \
-p 6381:6379 \
--network wn_docker_net \
--ip 172.18.12.12 \
--sysctl net.core.somaxconn=1024 \
-e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
-v /usr/local/software/redis/6381/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/software/redis/6381/data/:/data \
-v /usr/local/software/redis/6381/log/redis.log:/var/log/redis.log \
-d redis \
/usr/local/etc/redis/redis.conf
查看启动日志
  1. 启动信息

image-20231125182028290

  1. 主从连接信息
image-20231125182127682
  1. 检查master(6379)服务器日志

image-20231125182232026

进入redis-cli查看主从状态
[root@localhost log]# docker exec -it redis_6380 bash
root@eb572dc438ae:/data# redis-cli
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.198.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_read_repl_offset:6748
slave_repl_offset:6748
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:d55333204ec41a62dd7f1074d6167392c21b6c24
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6748
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2731
repl_backlog_histlen:4018
image-20231125182422137

进入master查看主从信息

[root@localhost log]# docker exec -it redis_6379 bash
root@751e44287904:/data# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.198.128,port=6380,state=online,offset=6902,lag=0
slave1:ip=192.168.198.128,port=6381,state=online,offset=6902,lag=0
master_failover_state:no-failover
master_replid:d55333204ec41a62dd7f1074d6167392c21b6c24
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6902
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:6902
image-20231125182651344

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/225508.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS 文字弹跳效果

鼠标移过去 会加快速度 <template><div class"bounce"><p class"text" :style"{animationDuration: animationDuration}">欢迎使用UniApp Vue3&#xff01;</p></div> </template><script> export d…

Java架构师系统架构设计实践

目录 1 导语2 架构设计实践本章概述3 架构设计要素概述和规划4 架构设计模式5 架构设计输入6 架构设计输出7 架构设计要素总结 想学习架构师构建流程请跳转&#xff1a;Java架构师系统架构设计 1 导语 Java架构师在进行系统架构设计时&#xff0c;需要综合考虑多个方面&#…

【三维生成】稀疏重建、Image-to-3D方法(汇总)

系列文章目录 总结一下近5年的三维生成算法&#xff0c;持续更新 文章目录 系列文章目录一、LRM&#xff1a;单图像的大模型重建&#xff08;2023&#xff09;摘要1.前言2.Method3.实验 二、SSDNeRF&#xff1a;单阶段Diffusion NeRF的三维生成和重建&#xff08;ICCV 2023&am…

【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手

前言 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的传输层协议。在建立 TCP 连接时&#xff0c;需要进行三次握手&#xff0c;防止因为网络延迟、拥塞等原因导致的数据丢失或错误传输&#xff0c;确保双方都能够正常通信。 TCP三次握手在Wireshark数据包中…

线程学习(3)-volatile关键字,wait/notify的使用

​ &#x1f495;"命由我作&#xff0c;福自己求"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;线程学习(2)​​​​ 一.volatile关键字 volatile关键字是多线程编程中一个非常重要的概念&#xff0c;它主要有两个功能&#xff1a;保证内存可见性…

漏洞复现--用友NC Cloud XXE

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

【译文】IEEE白皮书 6G 太赫兹技术的基本原理 2023版

第一章 简介 太赫兹波是介于微波和光波之间的光谱区域&#xff0c;频率从 0.1THz ~ 10THz 之间&#xff0c;波长在 3mm ~ 30μm 之间。提供大块连续的频带范围以满足对 Tbit/s 内极高数据传输速率的需求&#xff0c;使该区域成为下一代无线通信&#xff08;6G&#xff09;的重…

Django(三)

1.快速上手 确保app已注册 【settings.py】 编写URL和视图函数对应关系 【urls.py】 编写视图函数 【views.py】 启动django项目 命令行启动python manage.py runserverPycharm启动 1.1 再写一个页面 2. templates模板 2.1 静态文件 2.1.1 static目录 2.1.2 引用静态…

《软件需求分析报告》

第1章 序言 第2章 引言 2.1 项目概述 2.2 编写目的 2.3 文档约定 2.4 预期读者及阅读建议 第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 …

html旋转相册

一、实验题目 做一个旋转的3d相册&#xff0c;当鼠标停留在相册时&#xff0c;相册向四面散开 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" con…

Tg-5511cb: tcxo高稳定性+105℃高温

爱普生推的一款TG-5511CB是一种高稳定的TCXO温补晶体振荡器&#xff0c;频率范围十分广泛从 10mhz ~ 54mhz&#xff0c;它的电源电压只需要3.3V&#xff0c;无论是手机还是其他电子设备&#xff0c;都能轻松提供稳定的电力支持。频率/温度特性表现出色&#xff0c;0.28 10^6Ma…

uniapp中uview的text组件

基本使用&#xff1a; 通过text参数设置文本内容。推荐您使用:textvalue的形式 <u--text text"我用十年青春,赴你最后之约"></u--text>设置主题&#xff1a; 通过type参数设置文本主题&#xff0c;我们提供了五类属性。primary error success warning…

ARCGIS PRO SDK GeometryEngine处理独立几何图形的函数

1、面积类&#xff1a;pol为Polygon 1).Area&#xff1a;获取几何图形的面积。这是使用二维笛卡尔数学来计算面积的平面测量 double d GeometryEngine.Instance.Area(pol) 2).GeodesicArea:获取几何图形的椭球面积 …

k8s是什么

生么是k8s&#xff1a; Kubernetes:8个字母省略&#xff0c;就是k8s 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

nodejs+vue+ElementUi大学新生入学系统的设计与实现1hme0

采用B/S模式架构系统&#xff0c;开发简单&#xff0c;只需要连接网络即可登录本系统&#xff0c;不需要安装任何客户端。开发工具采用VSCode&#xff0c;前端采用VueElementUI&#xff0c;后端采用Node.js&#xff0c;数据库采用MySQL。 涉及的技术栈 1&#xff09; 前台页面…

简析SoBit 跨链桥图文教程

从BTC网络到Solana网络桥接BRC20 1.打开SoBit平台&#xff1a;在您的网络浏览器中启动SoBit Bridge应用程序。 2.连接您的钱包&#xff1a; 选择SoBit界面右上角的比特币网络来连接您的数字钱包。 3.选择源链、目标链和您想桥接的代币&#xff1a; 从下拉菜单中选择’BTC’作为…

项目应用多级缓存示例

前不久做的一个项目&#xff0c;需要在前端实时展示硬件设备的数据。设备很多&#xff0c;并且每个设备的数据也很多&#xff0c;总之就是数据很多。同时&#xff0c;设备的刷新频率很快&#xff0c;需要每2秒读取一遍数据。 问题来了&#xff0c;我们如何读取数据&#xff0c…

支付宝、学习强国小程序input、textarea数据双向绑定

前言 和 vue 的绑定有些区别&#xff0c;需要注意。直接 value"{{inputValue}}" 是无法双向绑定的。 正确思路 文档说的比较详细&#xff0c;不过没有组合使用的案例&#xff0c;需要自行理解。这里正确的方法是先用 value 绑定数据&#xff0c;再使用 onInput 事件…

关于Sneaky DogeRAT特洛伊木马病毒网络攻击的动态情报

一、基本内容 作为复杂恶意软件活动的一部分&#xff0c;一种名为DogeRAT的新开源远程访问特洛伊木马&#xff08;RAT&#xff09;主要针对位于印度的安卓用户发动了网络安全攻击。该恶意软件通过分享Opera Mini、OpenAI ChatGOT以及YouTube、Netfilx和Instagram的高级版本等合…

7.7、kali linux环境下搭建DVWA

目录 一、资料下载准备工作 1.1、DVWA源代码下载 二、开启Apache、mysql服务 2.1、下载Apache2文件 2.2、开启Apache2服务 方法一&#xff1a;开启Apache2服务&#xff08;手动&#xff09; 方法二&#xff1a;开启Apache2服务&#xff08;系统自启动&#xff09; 2.3、…