LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

不同服务器启动不同端口一样修改教程

2023年3月24日 127点热度

趁着这几天刚好有点空,就来写一下redis的集群搭建,我跟大家先说明,本文的redis集群因为linux服务器只是阿里云一台服务器linux格式化命令,所以集群是redis启动不同端口,但是也能达到集群的要求。其实不同服务器也相当于启动不同端口一样。所以,一起来看看效果吧。

一:下载redis安装包(我的是这个版本:5.0.14)

二:在目录 /usr/local 创建文件夹:redis_6379,redis_6380,redis_6381

我这里之所以这么命名,是因为对应redis的端口号。

三:分别在这三个目录上传下载好的redis压缩包,使用:tar -xvfredis-5.0.14.tar.gz 命令解压

   切换目录:cd redis-5.0.14
   编译:make
   编译完成继续切换目录:cd src
   接着安装:make install
注:如出现/bin/sh: cc: command not found错误,是因为没有安装 gcc 环境,使用命令yum install gcc安装 gcc 环境即可。

四:抽离一些配置文件以及启动命令到文件夹,所以,先在根目录下创建文件夹:bin、config

1、切换到该目录:cd /usr/local/redis_6379(后面几台服务器一样操作)
2、创建两个目录:mkdir bin。mkdir config
3、复制配置文件到指定目录:
  cp redis.conf /usr/local/redis_6379/config
  cp src/mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /usr/local/redis_6379/config

我这里的etc目录就是config目录。还有sectinel.conf是后面会讲到哨兵模式配置是回移动进来

五:现在尝试先启动一台(注意,此刻我还没有搭建主从分布的配置文件修改,这里启动仅仅是为了redis是否能够正常启动)

切换目录:cd /usr/local/redis_6379/redis-5.0.14/bin
执行启动命令:./redis-server /usr/local/redis_6379/redis-5.0.14/config/redis.conf
可以查看进程:ps axu | grep redis

两者其一都可以

这样算是启动成功的!!!

六:先暂时关闭redis:

cd /usr/local/redis_6379/redis-5.0.14/bin  
redis-cli -p 6379 shutdown

七:分割线————————————————开始集群搭建(主从+哨兵模式)——————————

主从分布式搭建,是多台服务器的redis配置文件修改来确定的。主从搭建是为了比如某一台服务器的redis写进了缓存,另外几台redis服务器也能获取到数据,熟称数据同步!!!

主从搭建好,还要考虑一点:哨兵模式,也就是为了容灾来考虑,也就是说,比如主redis服务器工作过程当中,因为某些原因,突然挂了,那么其他从redis服务器没有了主服务器,那就一直连接不上,导致数据不能同步,那么这个时候,就需要哨兵模式中的redis服务器中选出一个redis,来当主服务器。现在开始搭建!!!!

文章一开头我已说明:本人只有一台linux服务器,所以开三个端口号是为了跟三台服务器是一样的效果。

IP地址

端口号

角色

47.99.83.180

6379

主机

47.99.83.180

6380

从机

47.99.83.180

6381

从机

八:修改配置文件:

cd /usr/local/redis_6379/redis-5.0.14/config
vim redis.conf

我们来看一下一些参数的意思:

# redis进程是否以守护进程的方式运行,yes为是,no为否(不以守护进程的方式运行会占用一个终端)。
daemonize no
# 指定redis进程的PID文件存放位置
pidfile /var/run/redis.pid
# redis进程的端口号
port 6379
#是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭设置为no。
protected-mode yes
# 绑定的主机地址
bind 127.0.0.1
# 客户端闲置多长时间后关闭连接,默认此参数为0即关闭此功能
timeout 300
# redis日志级别,可用的级别有debug.verbose.notice.warning
loglevel verbose
# log文件输出位置,如果进程以守护进程的方式运行,此处又将输出文件设置为stdout的话,就会将日志信息输出到/dev/null里面去了

logfile stdout
# 设置数据库的数量,默认为0可以使用select 命令在连接上指定数据库id
databases 16
# 指定在多少时间内刷新次数达到多少的时候会将数据同步到数据文件
save  
# 指定存储至本地数据库时是否压缩文件,默认为yes即启用存储
rdbcompression yes
# 指定本地数据库文件名
dbfilename dump.db
# 指定本地数据问就按存放位置
dir ./
# 指定当本机为slave服务时,设置master服务的IP地址及端口,在redis启动的时候他会自动跟master进行数据同步
replicaof  
# 当master设置了密码保护时,slave服务连接master的密码
masterauth 
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH命令提供密码,默认关闭
requirepass footbared
# 设置同一时间最大客户连接数,默认无限制。redis可以同时连接的客户端数为redis程序可以打开的最大文件描述符,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回 max number of clients reached 错误信息
maxclients 128
# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key。当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
maxmemory
# 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no。
appendonly no
# 指定跟新日志文件名默认为appendonly.aof
appendfilename appendonly.aof
# 指定更新日志的条件,有三个可选参数 - no:表示等操作系统进行数据缓存同步到磁盘(快),always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全), everysec:表示每秒同步一次(折衷,默认值);
appendfsync everysec

接下来我们要改动的信息(三台服务器都要修改(此处是同一台服务器,三个不同端口),记住:port就是对应的端口号,比如对应上面步骤七的表格):

主机配置:
bind:0.0.0.0
port:6379
protected-mode:no

daemonize:yes
logfile:./redis.log
requirepass:testuser #--这个看自己的情况是否需要设置账号和密码 
masterauth:123456  #--这个看自己的情况是否需要设置账号和密码 

上面的参数说明:

bind:0.0.0.0 #Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379 #监听端口默认为6379,想改其他也行。
protected-mode:no #关闭保护模式,可以外部访问。
daemonize:yes #设置为后台启动。
logfile:./redis.log #redis 日志文件,生成后在 bin 目录下可找到

从机配置:这里的port需要注意,从机本文配置的端口是6380、6382。读者根据自行而定。如果是独立的服务器,这里端口可以不用修改

bind:0.0.0.0
port:6380
protected-mode:no
daemonize:yes
logfile:./redis.log
requirepass:testuser #--这个看自己的情况是否需要设置账号和密码 如果主机设置了,从机也要
masterauth:123456  #--这个看自己的情况是否需要设置账号和密码如果主机设置了,从机也要
replicaof 47.99.83.180 6379 #因为这里的从机的配置,所以这里就是设置主机的 ip+ 端口,来指明主机的redis

注意:以前的老版本是使用变量:slaveof 设置主机的,因为我用的是新版本。所以在变量:replicaof做配置

九:数据同步测试

上面的步骤修改配置文件arch linux,已经是可以实现主从分布的搭建,接下来就启动三台服务器,启动redis服务器前,先开放端口,否则连接会拒绝(防火墙安全拦截:可以在阿里云服务器的控制台直接增加防火墙端口开放,此处使用命令,如果命令不行,那就在阿里云服务器控制台设置)

#端口记得写正确
1、firewall-cmd --add-port=6379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
2、firewall-cmd --reload

接下来启动主从服务器:

1:cd /usr/local/redis_6379/redis-5.0.14/bin
2:redis-server ../config/redis.conf
注意:目录redis_6379是对应的redis哈,别搞错

然后我们检查一下是否搭建主从成功:

1:redis-cli -p 6380 

2: info replication
#此处我是进入从机,也可以看得到主机、从机信息。slave就是从机的意思

此刻主从搭建完成!!!!接下来看数据能否同步:

分别进入6379、6380、6381的客户端连接:

主机写入

从机读取:

注意:这里的错误提示是因为我在从机写入linux启动redis命令,报错了,意思是从机没有写入权限

错误信息:(error) READONLY You can't write against a read only replica

在配置文件修改:
进入/usr/local/redis_6379/redis-5.0.14/config/redis.conf 配置文件,修改配置文件的slave-read-only为no, 那么从节点也就可以进行写的操作了,代码不会报错。
大伙记得不管主机从机都设置好这个属性,否则到时候从机写入不了数据

十:哨兵搭建(重点来了——————————哨兵搭建————————————)

每台服务器都配置一个哨兵,配置方式相同,如下

同样为了方便管理,首先将sentinel.conf复制到 config 下(记得三台服务器都要执行。sentinel.conf配置文件在根目录:

所以进入到到该目录下:
cp sentinel.conf config

修改哨兵配置文件:sentinel.conf

cd config
vim sentinel.conf

改动的地方如下:

//端口默认为26379。 主机,从机的这个端口记得修改,否则导致端口占用,启动不了。(因为我是在一台linux服务器部署,所以我的要修改,如果你是在不同linxu服务器部署,那么可以不用修改)
port:26379
//关闭保护模式,可以外部访问。
protected-mode:no
//设置为后台启动。
daemonize:yes
//日志文件。
logfile:./sentinel.log
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。

sentinel monitor mymaster 47.99.83.180 6379 2 //当在Redis实例中开启了requirepass,这里就需要提供密码并保持一致,如果没启用密码,那么不需要设置,屏蔽这个属性就好(默认是屏蔽的) sentinel auth-pass mymaster 12345 //这里设置了主机多少秒无响应,则认为挂了。 sentinel down-after-milliseconds mymaster 3000 //主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。 snetinel parallel-syncs mymaster 1 //故障转移的超时时间,这里设置为三分钟。 sentinel failover-timeout mymaster 180000

接下来防火墙设置:上面的配置文件改动的端口是多少,就对应即可

firewall-cmd --add-port=26379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

十一:启动三个哨兵(记得在要启动三个,进入对应目录)

1、cd /usr/local/redis_6381/redis-5.0.14/bin/
2、redis-sentinel /usr/local/redis_6381/redis-5.0.14/config/sentinel.conf

十二:查看哨兵信息

1、cd /usr/local/redis_6381/redis-5.0.14/bin/
#这里的26381是在上面的第十步骤的配置文件sentinel.conf里面的配置的端口号
2、redis-cli -p 26381
3、info sentinel

十三:容灾切换

现在模拟主机宕机linux启动redis命令,也就是是否能实现容灾切换,直接把主机宕机,也就是关闭主机redis。如果不知道哪台是主机,请执行下面命令:

1、先进入对应目录(随意一台服务器:cd /usr/local/redis_6381/redis-5.0.14/bin/
2、执行命令(这里的端口号是redis启动的端口号):redis-cli -p 6379
3、info replication #看下图信息即可知道主机是那一台

此刻我们知道47.99.83.180:6380这一台是主机redis:

1、redis-cli -p 6380
2:showdown

然后我们进入从机的bin目录(因为redis.log在该目录下(我们在redis.conf里面做了设置):cat redis.log)

完事!!!!

程序员灯塔

转载请注明原文链接:linux系统——Redis集群搭建(主从+哨兵模式)

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: redis redis分布式 服务器端口
最后更新:2023年3月24日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux默认的最大文件描述符数量是1024 关于LinuxQt安装教程及配置的回答及解决办法的 MySQL8.0的f配置文件是管理MySQL服务器的重要文件 局域网聊天软件简单介绍TOP1内网通传书 ARM嵌入式Linux系统开发详解.rar 一说unix/linux中对于文件操作的这几个函数 如何利用linux来开发属于自己的嵌入式Linux操作系统 腦/網絡>操作系統/系統-alternate-i386.iso(EXT)这几个版本有什么区别 精通unixshell脚本编程之文件描述符数ulimitulimit-n ubuntu离线安装软件 鸿蒙OS环境搭建过程中遇到的问题及解决方案 写入数据覆盖的分析与执行 解读Rainbond集群的安装和运维的原理,便于用户搭建Rainbond Linux基础知识:文件描述符、文件指针、索引节点 如何解决Linux下的无线网卡驱动的问题? linux 文件描述符 (师)-unused-fdKernel:2.6.14CPUarchitecture Linux系统下如何搭建SVN服务器,详细说明各配置项的功能 修改软件源文件、UI界面设置换源操作|Ubuntu Ubuntu14.04.2为例进行说明,其它Ubuntu版本与此类似 Linux图形界面用户和Windows用户来说获取系统硬件信息都不算问题 Ubuntu下换内核的过程及详细分析内核操作分析
ubuntu离线安装软件 鸿蒙OS环境搭建过程中遇到的问题及解决方案精通unixshell脚本编程之文件描述符数ulimitulimit-n腦/網絡>操作系統/系統-alternate-i386.iso(EXT)这几个版本有什么区别如何利用linux来开发属于自己的嵌入式Linux操作系统一说unix/linux中对于文件操作的这几个函数ARM嵌入式Linux系统开发详解.rar局域网聊天软件简单介绍TOP1内网通传书MySQL8.0的f配置文件是管理MySQL服务器的重要文件关于LinuxQt安装教程及配置的回答及解决办法的Linux默认的最大文件描述符数量是1024C语言教程-Qt.12安装教程05-27Linux有7个运行级别(关机,停机模式、DellG3)(Linux基础知识)文件压缩、打包命令解析的Linux操作系统怎样执行?LinuxDNS服务器,如何安装、配置和维护它?AMD2950x+技嘉x399免驱USB网卡,我的无线网卡linux解压gz文件命令 蓝易云香港五网CN2网络压缩比率的测试环境Linux系统中用于管理和控制系统服务的强大工具介绍围绕API创建封装器的开源项目正变得越来越流行主频93.75MHz的MIPS64NECVR4300处理器在N64上运行
Ubuntu18验证dhcp服务器配置是否成功?.04的配置 Linuxcentos7虚拟机装找Linux镜像找的!找了好多都是度盘! 通过命令lsblk结果可判断sda3是个逻辑卷LV为根目录/ RedHatLinux发行版套件管理方式的作用及管理方法 【讲堂】分为文件指向同一个硬连接的应用 如何解决Linux下的无线网卡驱动的问题? Python都有哪些应用,学习完成Python后能的工作方向 第六章.管理本地用户和组学习目标:6.1描述用户访问权限 关于Linux学习使用计算机必然会接触操作系统的分析实例分享 如何吸引厂商开发更多更丰富的Linux软件问题 Linux计算机上使用ip命令来找到目标IP地址的方法 Linux定时任务安全权限提升) 如何远程连接Linux呢?远程linux工具哪个好用? Linux用户与文件权限操作实例第1页/共15页任务要求 Ubuntu QQ2014,让你的Linux智能升级体验 开源的linux运维监控工具对应的知识点运维工具有哪些 网卡 centos 启动 Linux选择选择时各企业所参考的依据:以下内容和Centos linux下常用关机命令之间的区别和具体用法和用法 Linux集群设置免密操作ssh分发的注意事项! 虚拟磁盘文件丢失怎么办?数据恢复结果怎么样?
标签聚合
软件 sudo 命令模式 虚拟机 操作 文件 linux系统 文件目录 命令 linux服务器
书籍
课程
技术群
技术干货大合集↓
  • 2023年6月 / 26篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.