redisMysqldb

Redis集群部署-docker集群

2019-11-27  本文已影响0人  _str_

集群

1.Redis 集群的优势

自动分割数据到不同的节点上。
整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

特点

主从复制

实现了高可用

数据分片存储

集群节点的 meet 过程

image image

指派槽

image

客户端和槽

image

3. Redis 集群的安装

原生命令安装

步骤

  1. 配置开启集群节点

  2. 配置 meet

  3. 指派槽

  4. 配置主从

实例操作

六个容器
三个主
三个从
务必保证一个主有一个从

架构图
image

实验步骤

安装官方工具

1. 下载、编译、安装 Ruby

点我到下载页面

[root@s1 ~]# wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz

安装依赖包

yum  install  zlib-devel readline openssl-devel gcc  gcc-c++ make

点我查看具体安装方法

$ ./configure
$ make
$ sudo make install

2. 安装 rubygem redis

一个 ruby 语言实现的访问 Redis 集群的客户端

点我到官网下载地址

cd ..
 wget https://rubygems.org/rubygems/rubygems-3.0.2.tgz
 tar -xf rubygems-3.0.2.tgz
cd rubygems-3.0.2/
ruby setup.rb

gem install redis

3. 安装 redis-trib.rb

这里的redis是源码安装
redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。

cp   ~/redis-4.0.10/src/redis-trib.rb   /usr/local/bin/
如果是使用yum安装的redis的话 下面可能帮到你

点击到github下载redis-trib.rb

image.png image.png

放到和之前源码一样的位置即可

编辑集群配置文件

vi /etc/redis-cluster.conf

bind 0.0.0.0
port 7001  ---容器的话就不需要修改端口
daemonize yes    --- 后台启动

# 允许任何地址不使用密码访问我
protected-mode yes
dir "/redis/data/"
logfile  "cluster-7001.log"
dbfilename "cluster-dump-7001.log"
cluster-enabled yes
cluster-config-file redis-cluster.conf

# 不需要集群的全部节点完好才提供服务
cluster-require-full-coverage no

然后就可以启动服务了

redis-server /etc/redis-cluster.conf
image.png

最后把这个部署好的容器进行commit成本地镜像

docker commit 容器名/容器id  redis-cluster

接下来我们就可使用docker-compose来进行集群启动

version: "3.2"
services: 
   redis-clu-m1:
      image: redis-ruby:latest
      container_name: redis-clu-m1
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true
   redis-clu-m2:
      image: redis-ruby:latest
      container_name: redis-clu-m2
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true
   redis-clu-m3:
      image: redis-ruby:latest
      container_name: redis-clu-m3
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true
   redis-clu-s1:
      image: redis-ruby:latest
      container_name: redis-clu-s1
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true
   redis-clu-s2:
      image: redis-ruby:latest
      container_name: redis-clu-s2
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true
   redis-clu-s3:
      image: redis-ruby:latest
      container_name: redis-clu-s3
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true
networks:
   cmdb_jumpserver-test:
     external:
       name: cmdb_jumpserver-test

注意:这里使用同一个网络便于容器之间通信,镜像不加标签默认是latest,最后的网络external代表着使用额外的网络名 tty:true让这个几个容器在启动后将这个终端给占住,不然会异常退出

这样在启动完docker-compose后我们就可以进入到容器中让每个redis-server启动

docker-compose exec  redis-clu-m2 redis-server /etc/redis-cluster.conf
依次执行 只需要换个服务名即可

选择一个服务器容器来进行集群部署 这里我们选择的是redis-clu-m1来部署

redis-trib.rb  create  --replicas  1  主节点1的IP:端口    主节点2的IP:端口    主节点3的IP:端口   从节点1的IP:端口    从节点2的IP:端口    从节点3的IP:端口  
依次将主从写到后面 待会会一一对应
注意这儿不能使用容器名 不解析  需要提前将各个容器的ip地址给找出来

在redis-clu-m1中执行的命令

[root@3604a0ecd95c /]# redis-trib.rb create --replicas 1 172.29.0.6:6379 172.29.0.7:6379 172.29.0.4:6379 172.29.0.5:6379 172.29.0.3:6379 172.29.0.2:6379
-因为docker-compose是随机启动的 所以这里面的ip地址不会按顺序

下面是执行的结果展示

集群配置 成功后的标志 检查节点信息
在那个服务器上都可以查到,在任意服务器上能查任意的节点
上一篇下一篇

猜你喜欢

热点阅读