Redis集群高可用配置[涉及批量删除容器和文件的操作]

目录

创建集群

网络环境配置

创建虚拟网卡

查看docker网卡信息

查看详细信息

创建Redis配置模板

创建节点配置文件

创建Redis集群节点容器

创建redis-cluster集群配置

进入redis服务

批量操作

批量停止docker容器

批量删除docker容器

批量删除文件


创建集群

网络环境配置

创建虚拟网卡

创建虚拟网卡,主要是用于redis-cluster能于外界进行网络通信,一般常用桥接模式。

docker network create redis-net

查看docker网卡信息

如果想查看docker的网卡信息,可使用如下指令

docker network ls

查看详细信息

如果想查看docker网络详细信息,可使用命令

docker network inspect redis-net

  

创建Redis配置模板

先创建一个目录,用于存放redis的配置模板。命令如下

mkdir -p /usr/local/docker/redis-cluster

切换到此目录下面

cd /usr/local/docker/redis-cluster

 创建配置模板

vim redis-cluster.tmpl

向配置模板里面输入以下内容

port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.126.128
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

  

命令解释:

  1. port:节点端口,即对外提供通信的端口
  2. cluster-enabled:是否启用集群
  3. cluster-config-file:集群配置文件
  4. cluster-node-timeout:连接超时时间
  5. cluster-announce-ip:宿主机ip
  6. cluster-announce-port:集群节点映射端口
  7. cluster-announce-bus-port:集群总线端口
  8. appendonly:持久化模式

创建节点配置文件

继续在redis-cluster目录下执行以下命令,这样就通过模板文件创建了6个目标文件(这6个目标文件分别对应于不同的redis容器的端口)

for port in $(seq 8010 8015); \
do \
  mkdir -p ./${port}/conf  \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done
  • 指令envsubst <源文件>目标文件,用于将源文件内容更新到目标文件中.

其中for 变量 in $(seq var1 var2);do....;done为Linux中的一种shell循环脚本 ,例如:

[root@centos7964 ~]# for i in $(seq 1 5);
> do echo $i;
> done;
1
2
3
4
5
[root@centos7964 ~]#

  

使用以下命令可以批量查看配置文件内容

cat /usr/local/docker/redis-cluster/801{0..5}/conf/redis.conf

 

创建Redis集群节点容器

上面已经完成了创建容器的准备工作,下面使用以下命令就可以创建集群中的redis节点容器了.

for port in $(seq 8010 8015); \
do \
   docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
  --privileged=true -v /usr/local/docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --privileged=true -v /usr/local/docker/redis-cluster/${port}/data:/data \
  --restart always --name redis-${port} --net redis-net \
  --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done

上述命令也是进行的批量操作,避免了一个一个的手动创建.

相关命令解释如下:

  1. --privileged=true表示让启动的容器用户具备真正root权限
  2. --sysctl net.core.somaxconn=1024 这是一个linux的内核参数,用于设置请求队列大小,默认为128,后续启动redis的启动指令需要先放到这个请求队列中,然后依次启动.

创建成功后就可以使用 docker ps 命令来查看节点容器的内容了. 

 

需要注意,现在只是完成了多个容器的创建 ,还没有设置集群,也即这几个容器之间现在还没有任何联系.

创建redis-cluster集群配置

使用以下两个步骤就可以完成集群的配置

先随机进入一个容器当中:

docker exec -it redis-8010 bash

然后输入以下命令:

redis-cli --cluster create 192.168.126.128:8010 192.168.126.128:8011 192.168.126.128:8012 192.168.126.128:8013 192.168.126.128:8014 192.168.126.128:8015 --cluster-replicas 1

注意这个命令尽量放在一行执行,其中最后的数字1表示主从比例(即总共有6个redis服务,主服务占3个,从服务也占3个).如果出现选择提示信息时,输入yes即可. 

同时可以看到有一个slots槽点信息,它里面的数字范围表示各自redis服务拥有的槽点数,后面存取数据都是根据key的hash值与槽点对应,然后指向对应的redis服务.

进入redis服务

连接redis-cluster,并添加数据到redis,进入端口号为8010的redis服务,后续如果需要改变redis服务,直接修改成对应的端口号即可.

redis-cli -c -h 192.168.126.128 -p 8010

 

批量操作

在搭建过程,可能在出现问题后,需要停止或直接删除docker容器,可以使用以下参考命令

批量停止docker容器

docker ps -a | grep -i "redis-801*" | awk '{print $1}' | xargs docker stop

批量删除docker容器

docker ps -a | grep -i "redis-801*" | awk '{print $1}' | xargs docker rm -f

  

批量删除文件

rm -rf 801{0..5}/conf/redis.conf
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值