您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > Redis

centos7下安装redis集群(一主两从)三哨兵(无图片)

时间:03-10来源:作者:点击数:
环境说明:
1.centos7
2.redis的版本信息:redis-5.0.5
集群的环境信息
角色 IP地址 端口号 redis的安装目录 redis的配置文件位置 哨兵的配置文件位置
主库 192.168.234.158 6379 /root/soft/redis-5.0.5 /usr/local/bin /usr/local/bin
从库一 192.168.234.159 6379 /root/soft/redis-5.0.5 /usr/local/bin /usr/local/bin
从库二 192.168.234.160 6379 /root/soft/redis-5.0.5 /usr/local/bin /usr/local/bin

说明:redis的安装,默认的安装位置都是/usr/local/bin/目录下,但是刚安装完redis时的redis的redis.conf和哨兵的配置文件sentinel.conf都是在你解压的redis的目录下;

手动的把两个配置文件拷贝到/usr/local/bin/目录下,这样做可以方便的管理配置文件

第一步:安装前的准备工作
1.关闭centos7的防火墙,实际生产的环境可以对外开放端口号
2.安装gcc的环境

命令:yum install gcc gcc-c++

确认是否安装成功

命令:gcc -v

第二步:开始安装redis

上传redis-5.0.5.tar.gz的安装包到soft文件夹下

我用的是rz的上传方式,如果你的rz命令不好用,看我的安装命令或者利用其它上传工具

安装rz的命令:yum -y install lrzsz

解压这个安装包到当前的目录下

解压命令:tar -zxvf redis-5.0.5.tar.gz

解压成功后,显示如下,生成了一个redis-5.0.5文件夹

然后进入这个目录下,直接编译即可

命令:make && make install

其实上面的这些步骤就可以了,redis就成功安装了,你可以试着启动一下,在当前目录下执行下面的这个命令

启动redis的命令:redis-server

验证redis是否正常启动

命令:ps -ef|grep redis

第三步:克隆其它两台机器

克隆的步骤

1.关闭当前的机器,在机器名上右键选择管理,在选择克隆

点击下一步;

点击下一步,这里默认的是选择创建链接克隆,但是我们要创建完整的克隆

选择完整克隆后,选择下一步,填写你要起的虚拟机的名称和你要安装虚拟机的位置

第四步:修改redis的配置文件redis.conf
修改redis.conf的配置文件为
主机器的配置文件修改如下 配置文件解释
#bind 127.0.0.1 这一行注释掉就可以了,才能实现不同机器间的通信
daemonize no 改成 yes 意思是后台运行
logfile “/usr/local/src/redis-5.0.5/log/server.log” 这一行是配置redis的日志文件
masterauth “123456” 配置密码为123456
requirepass “123456” 配置密码为123456
两台从机器redis的配置文件redis.conf修改如下
从机器的配置文件修改如下 配置文件解释
#bind 127.0.0.1 这一行注释掉就可以了,才能实现不同机器间的通信
daemonize no 改成 yes 意思是后台运行
logfile “/usr/local/src/redis-5.0.5/log/server.log” 这一行是配置redis的日志文件
masterauth “123456” 配置密码为123456
requirepass “123456” 配置密码为123456
slaveof 192.168.234.158 6379 依赖的主机IP和端口号
注意:1.从机器redis的配置文件比主机器多了一个slaveof 的配置
2.主机器和从机器的密码要设置成一样,要不然后面的设置的哨兵就会有问题
第五步:启动各个节点的redis,看是否能实现通信

redis.conf的配置文件已经改好了,可以拷贝到/usr/local/bin/目录下

然后以配置文件的方式启动三个节点的redis的服务端

命令:redis-server redis.conf

192.168.234.158 的机器(主),在usr/local/bin/下直接以加载配置文件的方式启动

同样的方式,启动192.168.234.159 的机器(从),192.168.234.160 的机器(从)

然后用客户端连接

命令:redis-cli -c -h 127.0.0.1 -p 6379

-c的意思是以集群的方式启动,-h是连接哪个服务端,-p是连接哪个端口

在158的机器上启动连接159的客户端

命令:redis-cli -c -h 192.168.234.159 -p 6379

因为我们设置的密码,所以登录时需要输入密码

命令:auth + 你设置的密码

在159的机器上启动连接160的客户端

命令:redis-cli -c -h 192.168.234.160 -p 6379

因为我们设置的密码,所以登录时需要输入密码

命令:auth + 你设置的密码

在160的机器上启动连接158的客户端

命令:redis-cli -c -h 192.168.234.158 -p 6379

因为我们设置的密码,所以登录时需要输入密码

命令:auth + 你设置的密码

第六步:查看角色信息

输入命令role可以查看当前机器的角色,输入命令info replication可以看到详细的信息

说明:我现在的主是160,是因为我把主机器杀掉了(158被我干掉了),从新选择的主

在158的机器上输入role,可以查看当前的角色是从机器,现在是连接的159的服务端,现在代表159的机器是从机器

说明:role: 代表当前连接的服务端是主还是从

master_host:192.168.234.160 代表当前的主机器是160

master_link_status:up 代表主机器是启动着的

connected_slaves:0 代表当前连接这个机器的从机器,因为当前的机器是从机器,所以这个数字为0

在159的机器上输入role,可以查看当前的角色是从机器,现在是连接的160的服务端,现在代表160的机器是主机器

说明:role:master 代表当前连接的服务端是主机器

connected_slaves:2 代表当前连接这个机器的从机器,因为当前的机器是主机器,所以这个数字为2

第七步:测试一主两从的通信

首先,先查看redis中的数据

命令:keys *

设置一个key,value,因为当前的机器是从机器,所以不让写

在159的机器上设置一个key,value,159的机器连接的是160的服务端,代表主机器

然后去158的机器和160的机器上去查看,redis中是否有数据

158上有数据了,测试通过

160上也有数据了,测试通过

现在把主干掉,看下有什么效果

在158上设置一个key,暂时是设置不了的

在160上设置一个key,暂时是设置不了的

注意:

1、如果没有把slaveof 参数配置到参数文件中,从库重启后需要重新slaveof;即从库会变成主库(没有配置slaveof参数文件)

2、在主从搭建完成后,后面添加的从库slaveof后,会自动把数据从主库同步过来,生产上会有一定的性能影响。

3、从机只有读的权限,主机才能够写操作。当主机器挂掉后,我们发现,集群已经不行了,所以下面引入哨兵模式

下面演示手动的解决上面问题

Master 挂掉slave变master(反客为主)

在160的机器上,手动的执行这个操作,这时是连接的158的服务器

命令:slaveof no one

然后再查看这个角色信息,已经变成主机器了

第八步:配置哨兵模式

Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;如果修复好的master重新启动后,原master变成slave。

哨兵的配置文件我已经拷贝到/usr/local/bin/目录下

修改三台机器的哨兵的配置文件如下;

protected-mode no 把这行打开,让三个哨兵可以通信

sentinel monitor mymaster 192.168.234.158 6379 2 这里配置的都是主机器的IP地址

sentinel auth-pass mymaster 123456 这里是配置集群的密码

然后启动三台机器的哨兵;在/usr/local/bin/目录下,执行命令

命令:redis-server sentinel.conf

现在让主机器挂掉,看集群的状态,158的机器已经变成主了,159的机器是它的从机器

看159机器上的详细信息,159是从机器了,显示的主是158,主机器的状态是活跃的

在158(主)上插入一条记录,看集群的通信状态

在159上查看这条记录是否存在

160的机器已经挂掉了,让我们重启启动下,看是否能实现数据的通信,如下图所示,可以实现通信

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门