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

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

2022年11月20日 351点热度

趁着这几天刚好有点空,就来写一下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里面去了

linux启动redis集群_linux启动redis命令_linux启动进程命令

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

linux启动进程命令_linux启动redis命令_linux启动redis集群

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 

linux启动进程命令_linux启动redis集群_linux启动redis命令

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分布式 服务器端口
最后更新:2022年11月20日

Linux大神网

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

点赞
< 上一篇
下一篇 >

Linux大神网

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

最新 热点 随机
最新 热点 随机
(Linux基础知识)Linux察看版本信息的信息三 从容迎接Windows时代:Ubuntu安装Win7虚拟机教程 教下大伙儿红旗linux系统镜像系统安装实例教程流程汇总 轻松压缩文件,linux命令必备! 红旗Linux推出新版本:界面设计媲美Windows Linux部署项目:构建高效稳定的运行环境 掌握Linux下载文件命令技巧,轻松高效获取所需资料 Linux系统查看系统运行状态的top命令的功能 轻松解决Linux内存溢出问题:9个实用方法 Linux常用的命令大全-系统管理进程与作业管理命令解释大全 linux内核api 深入探索Linux内核API,你真的了解吗? 教你在XShell软件中使用sz和rz命令下载和上传文件 RedHatEnterprise命令删除空文件夹命令教程操作环境介绍 轻松掌握Linux目录权限777提升技巧 LinuxTCP协议栈的内部机制和优化技术介绍 手动删除400多万个小文件,rm-删除执行不动 mysql执行sql脚本文件的方法:SQLServerjava能写游戏吗 解密Unix时间戳转换技巧,轻松读懂日期奥秘 在Linux中轻松删除单个文件、文件组或整个文件夹 掌握Linux编译C语言的命令,轻松使用编译器
Linux文件路径查询方法,轻松获取文件位置Linux移植6410:从零开始的挑战!linux php安装 快速掌握Linux下PHP安装,轻松入门流行技术linux patch 文件 解决LinuxPatch文件10大疑难杂症,轻松应对!Ubuntu系统更改IP地址的简易教程,跟随以下步骤即可搞定!高效搭建Linux Android开发环境,轻松提升开发体验轻松掌握:如何查询Linux内核版本?Linux安装Matlab指南,快速掌握安装步骤Ubuntu 16安装网卡驱动教程,轻松解决网络连接问题Linux启动时,不使用图形界面可能更有效率!移植Linux,手机变身“大杀器”!详解8大关键操作Linux更高效,掌握启动终端快捷键!纯Python库实现上面介绍的HTML转换为PDF的软件Fedora 13服务器配置指南:9个实用技巧全解析9种方法轻松获取Linux版本,快速掌握系统信息!博客韦东山freeRTOS系列教程:入门文档教程+进阶视频教程轻松掌握linux ldd命令的技巧,成为高效开发者与管理员Linux VPS安全检测,保障服务器稳定运行!Linux下高效开发必备:配置Tomcat和JDK分析Linux中的I2C驱动程序框架核心结构(i2c-bus结构)
Linux、apache、mysql、php合起来的简称本教程 解决ssh连接提示(A,突然连不了了) coLinux是与Windows操作系统协作的真正的Linux操作系统的 查看系统版本 linux “”的有关知识,不少人都会遇到这样的困境 Linux在未来服务器领域仍是大势所趋! 豆瓣高评分书籍,快来看看你都读过哪几本? 轻松掌握Ubuntu软件安装:查看已安装软件 【Linux基础知识】ubuntu下可执行文件的基本知识点总结 【指南】Linux中网络接口卡的10种方法使用 渗透测试最重要的阶段之一DNS枚举工具 为什么我们还要使用一键DD重装/更换系统呢?? 9种方法轻松获取Linux版本,快速掌握系统信息! 阿里云>社区>主题地图S>查看存储推荐 物理内存大许多倍的内存管理子系统是怎么来的?(图) linux设置开机服务自动启动/关闭自动命令@localhost Linux版本(1)RedHatLinux内核0.02版正式诞生 Linux系统下如何定位出CPU使用率过高的进程?(组图) 上海会计从业资格考试:关联数据acceptfd Linux操作系统提权漏洞的解决办法有哪些?-八维教育 Linux磁盘管理常用三个命令为df、du、fdisk和fdisk
标签聚合
文件目录 linux系统 sudo 虚拟机 命令 linux服务器 命令模式 软件 linux脚本 电脑
书籍
课程
技术群
技术干货大合集↓
  • 2023年3月 / 89篇
  • 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.