Redis集群,高可用集群配置,Redis主从+哨兵

事先说明以下步骤创建的都是redis集群的高可用集群的相关步骤,redis集群分为高可用集群和分布式集群。

首先我的Redis是安装在Centos里的,所以为了便于操作最好先安装连接服务器的工具,比如FinalShell或putty等。然后我的Redis是安装在docker里面的,如果你没有使用docker可以省去下面安装docker的步骤。

1.如果已安装可以先删除旧的版本

[root@localhost ~]# yum -y remove docker

2.安装yum-utils 管理yum源

[root@localhost ~]# yum install -y yum-utils

3.设置docker源

[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 4.设置元数据缓存

[root@localhost ~]# yum makecache fast

5.开始安装docker

[root@localhost ~]# yum -y install docker-ce

 6.启动docker

[root@localhost ~]# systemctl start docker

7.验证

[root@localhost ~]# docker run hello-world

如果下载失败,可以通过vim /etc/docker/daemon.json进入配置,如下,双引号里填入下载源,可以使用阿里云的下载源,速度会比国外的快。配置好之后“systemctl daemon-reload”,然后重启docker服务。

{
    "registry-mirrors": [""]
}

Redis安装

拉取镜像
[root@localhost ~]# docker pull redis

       安装好redis之后,可以切换到根目录,创建redis目录,在redis目录里创建conf和data目录,从外部安装的redis或容器里面复制一份redis.conf文件到刚刚创建的目录里的conf文件夹,然后进行如下步骤:

接下来创建sentinel.conf,和上面一样都是创建三个。步骤如下:

       接下来通过vim sentinel1.conf等,在三个sentinel1.conf、sentinel2.conf、sentinel3.conf里面都加入如下配置:

sentinel monitor mymaster 172.17.0.2 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000

# 和redis.conf中配置保持一致
protected-mode no

       通过命令行vim redis1.conf编辑里面的内容,三个redis文件都得编辑,进入后处于命令行状态,输入/dir进行搜索,找到如图位置,将默认的dir ./修改为dir /data。然后切换为命令行方式,搜索/protected-mode,找到protected-mode yes,默认为yes,修改为protected-mode no。

在按照上面修改redis2.conf和redis3.conf配置时,顺便修改另一操作,因为把redis1.conf当作主,redis2和redis3当作从,所以需要配置从服务器。172.17.0.2是主redis的ip

    接下来将我们创建的这些文件进行映射,映射到docker容器里的redis,下面我贴出图和代码,图里的红色方框都是需要注意的点,因为我是切换到了/redis/conf/目录下进行的配置,所以$PWD不需要改,不然就得改为对应的路径。

[root@localhost conf]# docker run -p 7000:6379 --name redis1 -v $PWD/redis1.conf:/etc/redis/redis.conf -v $PWD/sentinel1.conf:/etc/redis/sentinel.conf -d redis:latest redis-server /etc/redis/redis.conf

[root@localhost conf]# docker run -p 7002:6379 --name redis2 -v $PWD/redis2.conf:/etc/redis/redis.conf -v $PWD/sentinel2.conf:/etc/redis/sentinel.conf -d redis:latest redis-server /etc/redis/redis.conf

[root@localhost conf]# docker run -p 7003:6379 --name redis3 -v $PWD/redis3.conf:/etc/redis/redis.conf -v $PWD/sentinel3.conf:/etc/redis/sentinel.conf -d redis:latest redis-server /etc/redis/redis.conf

    配置好之后可以通过docker inspect redis1查看对应redis1的信息。

    以上步骤都完成后重新启动三个容器。

[root@localhost conf]# docker restart redis1
redis1
[root@localhost conf]# docker restart redis2
redis2
[root@localhost conf]# docker restart redis3
redis3

    重启之后验证一下三个容器的主从关系是否为正确。


输入docker exec -it redis1 /bin/bash   
之后输入redis-cli
再接下来输入info,便能看到主从关系的信息

[root@localhost conf]# docker exec -it redis1 /bin/bash
root@adf0aab58403:/data# redis-cli
127.0.0.1:6379> info

        从上图可以看到role:master,代表主服务器,connected_slaves:2代表从连接有两个,接下来的两行分别表示他们的信息。看完之后可以通过exit退出,相同步骤查看另外两个是否正确(注:从服务器会显示role:slave和它的主服务器是哪个master_host:172.17.0.2)。

      为了确保我们配置的是对的,我们可以验证一下,如下图向主服务器里写入数据,从从服务器里读出来。

       接下来验证一下哨兵机制,哨兵机制的配置上面sentinel.conf里面已经配置过了,所以这里只需要验证一下即可。为了便于验证打开四个连接服务器的窗口,都切换到/redis/conf/目录下,然后在第一个窗口输入如下图中命令启动redis

      如果有如下图形以及方框里的信息代表正常启动。同理另外两个在另外的两个窗口启动,把上图中的命令redis1改为对应的redis2或redis3即可。

    我们在另外一个窗口通过docker stop redis1把redis1给关掉,验证一下哨兵机制有没有生效。关掉之后同样输入

[root@localhost ~]# docker exec -it redis2 /bin/bash
root@c8650f288777:/data# redis-cli
127.0.0.1:6379> info

    通过上图我们可以看到redis1的主服务器挂掉之后,根据哨兵机制,把redis2选为了主服务器。以上步骤就是redis的集群配置,希望对你们有帮助。

发布了15 篇原创文章 · 获赞 11 · 访问量 2794

猜你喜欢

转载自blog.csdn.net/YCarlos/article/details/99675961