zoukankan      html  css  js  c++  java
  • [redis] linux下集群篇(4) docker部署

    一.环境说明

    服务端:

        192.168.0.108 CentOS Linux release 7.5.1804 (Core)

        采用docker部署,选择redis5.0版本,该版本起redis-cli命令自带了创建集群功能,之前版本使用redis-trib.rb。

    客户端:

        192.168.0.95

    二.服务端部署

    1.安装docker(略)

    2.准备模板文件

    masterauth和requirepass按需设置

    [root@XM-v108 ~]# cat /data/conf/redis-cluster.tmpl 
    port ${PORT}
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    cluster-announce-ip 192.168.0.108
    masterauth pass
    requirepass pass
    

    3.生成各个节点的配置文件

    [root@XM-v108 /data/conf]# cd /data/conf
    [root@XM-v108 /data/conf]# mkdir redis-cluster
    [root@XM-v108 /data/conf]# for port in `seq 6381 6386`; do PORT=$port envsubst < redis-cluster.tmpl > redis-cluster/redis_$port.conf; done
    [root@XM-v108 /data/conf]# ll redis-cluster
    total 24
    -rw-r--r-- 1 root root 177 Aug 28 09:53 redis_6381.conf
    -rw-r--r-- 1 root root 177 Aug 28 09:53 redis_6382.conf
    -rw-r--r-- 1 root root 177 Aug 28 09:53 redis_6383.conf
    -rw-r--r-- 1 root root 177 Aug 28 09:53 redis_6384.conf
    -rw-r--r-- 1 root root 177 Aug 28 09:53 redis_6385.conf
    -rw-r--r-- 1 root root 177 Aug 28 09:53 redis_6386.conf
    

    4.启动实例,创建集群

    [root@XM-v108 /data/conf]# docker network create redis-cluster
    [root@XM-v108 /data/conf]# docker pull redis:5.0
    [root@XM-v108 /data/conf]# for port in `seq 6381 6386`; do 
    docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} 
    -v /data/conf/redis-cluster/redis_$port.conf:/etc/redis.conf 
    --restart always --name redis_${port} --net redis-cluster redis:5.0 redis-server /etc/redis.conf; 
    done
    [root@XM-v108 /data/conf]# docker exec -ti redis_6381 bash
    root@58f9142e6f0c:/data# redis-cli --cluster create 192.168.0.108:6381 192.168.0.108:6382 192.168.0.108:6383 192.168.0.108:6384 192.168.0.108:6385 192.168.0.108:6386 --cluster-replicas 1 -a pass
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 192.168.0.108:6385 to 192.168.0.108:6381
    Adding replica 192.168.0.108:6386 to 192.168.0.108:6382
    Adding replica 192.168.0.108:6384 to 192.168.0.108:6383
    >>> Trying to optimize slaves allocation for anti-affinity
    [WARNING] Some slaves are in the same host as their master
    M: 17a0a2b71365497ba0a0ed1adef842c684d9f97b 192.168.0.108:6381
       slots:[0-5460] (5461 slots) master
    M: 18091272ef718023a6261cfd5c926c2d2273e548 192.168.0.108:6382
       slots:[5461-10922] (5462 slots) master
    M: 14e3c882337a1aa71b08e8d0f4b4832bef8e077b 192.168.0.108:6383
       slots:[10923-16383] (5461 slots) master
    S: 2f9a6a6d1f01289421325a5c2179fee0d4cb1d04 192.168.0.108:6384
       replicates 14e3c882337a1aa71b08e8d0f4b4832bef8e077b
    S: b0061c450c434acbb72a38112196d510b1b2c0fc 192.168.0.108:6385
       replicates 17a0a2b71365497ba0a0ed1adef842c684d9f97b
    S: b6b2d75a589b2c526712c97ab350968747716ff2 192.168.0.108:6386
       replicates 18091272ef718023a6261cfd5c926c2d2273e548
    Can I set the above configuration? (type 'yes' to accept): yes(输入yes)
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join
    ..
    >>> Performing Cluster Check (using node 192.168.0.108:6381)
    M: 17a0a2b71365497ba0a0ed1adef842c684d9f97b 192.168.0.108:6381
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    S: 2f9a6a6d1f01289421325a5c2179fee0d4cb1d04 192.168.0.108:6384
       slots: (0 slots) slave
       replicates 14e3c882337a1aa71b08e8d0f4b4832bef8e077b
    S: b0061c450c434acbb72a38112196d510b1b2c0fc 192.168.0.108:6385
       slots: (0 slots) slave
       replicates 17a0a2b71365497ba0a0ed1adef842c684d9f97b
    S: b6b2d75a589b2c526712c97ab350968747716ff2 192.168.0.108:6386
       slots: (0 slots) slave
       replicates 18091272ef718023a6261cfd5c926c2d2273e548
    M: 14e3c882337a1aa71b08e8d0f4b4832bef8e077b 192.168.0.108:6383
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    M: 18091272ef718023a6261cfd5c926c2d2273e548 192.168.0.108:6382
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.

    5.客户端连接

    # redis-cli -c -h 192.168.0.108 -p 6381 -a pass

    redis-cli --cluster create命令的前三个节点会被设置为主节点,客户端连接任一主节点即可(连接副节点貌似也可以),不需要在连接地址中填写全部的节点地址,也不需要指定全部的主节点,通信过程中会自动重定向主节点。

  • 相关阅读:
    jaxp对xml的增删改查
    xml&xml约束dtd&xml解析器
    meta标签&移动端常用meta标签总结
    java项目服务部署,启停脚本
    扩展欧几里得算法
    【数据结构】Huffman树
    【数据结构】堆的删除
    【数据结构】平衡二叉树的判断
    【数据结构】模拟windows资源管理器
    BFS/DFS 广度/深度优先搜索
  • 原文地址:https://www.cnblogs.com/hjfeng1988/p/13576126.html
Copyright © 2011-2022 走看看