Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

readme.md

Outline

环境设置:

因要考虑到两个环境:公司电脑和家里电脑

所以环境有点特殊:虚拟机和虚拟机上的docker不能拷走。

参考:Centos7上安装docker

环境 配置
centos root/root,配置host为:www.springbootvuestudy.comcomcom
mysql root 123456
redis 123@456
redis cluster 8001~8008
 docker search mysql
 docker pull mysql
 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456  -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  --lower_case_table_names=1
 # mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
 # docker run -p 3306:3306 --name mysql -v $PWD/mysql/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/mysql/logs:/logs -v $PWD/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456   -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
 
 docker exec -it mysql bash
 

 

redis

docker pull redis
#docker run -d -p 6379:6379 --name redis redis
docker run --name redis -p 6379:6379 -d redis --requirepass "123@456"

docker exec -it redis bash

redis cluster

docker redis 集群(cluster)搭建

docker redis4.0 集群(cluster)搭建

极简 docker 环境 redis 5 安装 redis-cluster 集群(不需要Ruby)

RedisCluster实战5使用rediscli安装

Redis 3.2.1集群搭建

# 下载ruby的镜像,作为redis cluster镜像的基础
docker pull ruby 
# 更正 docker pull ruby:2.5
docker pull ruby:2.5


# 创建redis cluster容器的配置文件
mkdir /home/redis-cluster
cd /home/redis-cluster
touch redis-cluster.tmpl
vi redis-cluster.tmpl
cat /home/redis-cluster/redis-cluster.tmpl

# 创建自定义的network 
docker network create redis-net

# 在/home/redis-cluster下生成conf和data目标,并生成配置信息
for port in `seq 8001 8008`; do \
  mkdir -p ./${port}/conf \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

#查看生成的文件夹
tree --charset gbk
.
|-- 8001
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8002
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8003
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8004
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8005
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8006
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8007
|   |-- conf
|   |   `-- redis.conf
|   `-- data
|-- 8008
|   |-- conf
|   |   `-- redis.conf
|   `-- data
`-- redis-cluster.tmpl

# 创建8个redis实例
for port in `seq 8001 8008`; do \
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
  -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /home/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
# 查看实例
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                                        NAMES
6ab70430e494        redis               "docker-entrypoint.s…"   57 seconds ago       Up 55 seconds       0.0.0.0:8008->8008/tcp, 6379/tcp, 0.0.0.0:18008->18008/tcp   redis-8008
6a37da72cc38        redis               "docker-entrypoint.s…"   58 seconds ago       Up 56 seconds       0.0.0.0:8007->8007/tcp, 6379/tcp, 0.0.0.0:18007->18007/tcp   redis-8007
b7d3103871ce        redis               "docker-entrypoint.s…"   59 seconds ago       Up 57 seconds       0.0.0.0:8006->8006/tcp, 6379/tcp, 0.0.0.0:18006->18006/tcp   redis-8006
2f1109f9baa5        redis               "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       0.0.0.0:8005->8005/tcp, 6379/tcp, 0.0.0.0:18005->18005/tcp   redis-8005
b9cde6a82e0b        redis               "docker-entrypoint.s…"   About a minute ago   Up 59 seconds       0.0.0.0:8004->8004/tcp, 6379/tcp, 0.0.0.0:18004->18004/tcp   redis-8004
dc6c9c89a85a        redis               "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8003->8003/tcp, 6379/tcp, 0.0.0.0:18003->18003/tcp   redis-8003
07ce40b3e8bb        redis               "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8002->8002/tcp, 6379/tcp, 0.0.0.0:18002->18002/tcp   redis-8002
412b727da85d        redis               "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8001->8001/tcp, 6379/tcp, 0.0.0.0:18001->18001/tcp   redis-8001




# XXX 使用ruby集群 有误,见日志
echo yes | docker run -i --rm --net redis-net ruby sh -c '\
  gem install redis \
  && wget http://download.redis.io/redis-stable/src/redis-trib.rb \
  && ruby redis-trib.rb create --replicas 1 \
  '"$(for port in `seq 8001 8008`; do \
    echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
  done)"
  
  # XXX 换redis-cli试试,也不行
  echo yes | docker run -i --rm --net redis-net ruby sh -c '\
  gem install redis \
  && wget http://download.redis.io/redis-stable/src/redis-trib.rb \
  && redis-cli --cluster  --cluster-replicas 1 \
  '"$(for port in `seq 8001 8008`; do \
    echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
  done)"


# 查看各个容器的ip
docker inspect redis-8001 redis-8002 redis-8003 redis-8004 redis-8005 redis-8006 redis-8007 redis-8008 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.2",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.3",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.4",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.5",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.6",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.7",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.8",
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.20.0.9",
# 停掉服务器

service firewalld stop 

# 进入8001容器,创建集群
docker exec -it redis-8001 bash

/usr/local/bin/redis-cli --cluster create \
172.20.0.2:8001 \
172.20.0.3:8002 \
172.20.0.4:8003 \
172.20.0.5:8004 \
172.20.0.6:8005 \
172.20.0.7:8006 \
172.20.0.8:8007 \
172.20.0.9:8008 \
--cluster-replicas 1

docker exec -it redis-8001 bash
for port in `seq 1 8`; \
do \
  redis-cli -c -p 8001 cluster meet 172.20.0.$(($port+1)) 800${port}; \
done







# wget http://download.redis.io/redis-stable/src/redis-trib.rb

redis-cluster.tmpl

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

使用ruby集群日志:用这个是个坑

[root@localhost redis-cluster]# echo yes | docker run -i --rm --net redis-net ruby sh -c '\
>   gem install redis \
>   && wget http://download.redis.io/redis-stable/src/redis-trib.rb \
>   && ruby redis-trib.rb create --replicas 1 \
>   '"$(for port in `seq 8001 8008`; do \
>     echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
>   done)"
Successfully installed redis-4.1.0
1 gem installed
--2019-04-02 02:19:58--  http://download.redis.io/redis-stable/src/redis-trib.rb
Resolving download.redis.io (download.redis.io)... 109.74.203.151
Connecting to download.redis.io (download.redis.io)|109.74.203.151|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3600 (3.5K) [text/plain]
Saving to: 'redis-trib.rb'

     0K ...                                                   100%  228M=0s

2019-04-02 02:19:59 (228 MB/s) - 'redis-trib.rb' saved [3600/3600]

WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.

All commands and features belonging to redis-trib.rb have been moved
to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.

Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]

Example:
redis-cli --cluster create 172.20.0.2:8001 172.20.0.3:8002 172.20.0.4:8003 172.20.0.5:8004 172.20.0.6:8005 172.20.0.7:8006 172.20.0.8:8007 172.20.0.9:8008 --cluster-replicas 1

To get help about all subcommands, type:
redis-cli --cluster help

查看ruby镜像中ruby的版本

docker run -i --rm --net redis-net ruby sh

ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]


查看生成的redis集群配置

[root@localhost redis-cluster]# docker exec -it redis-8001 bash
root@9cc144ff8621:/data# /usr/local/bin/redis-cli --cluster create \
> 172.20.0.2:8001 \
> 172.20.0.3:8002 \
> 172.20.0.4:8003 \
> 172.20.0.5:8004 \
> 172.20.0.6:8005 \
> 172.20.0.7:8006 \
> 172.20.0.8:8007 \
> 172.20.0.9:8008 \
> --cluster-replicas 1
>>> Performing hash slots allocation on 8 nodes...
Master[0] -> Slots 0 - 4095
Master[1] -> Slots 4096 - 8191
Master[2] -> Slots 8192 - 12287
Master[3] -> Slots 12288 - 16383
Adding replica 172.20.0.7:8006 to 172.20.0.2:8001
Adding replica 172.20.0.8:8007 to 172.20.0.3:8002
Adding replica 172.20.0.9:8008 to 172.20.0.4:8003
Adding replica 172.20.0.6:8005 to 172.20.0.5:8004
M: cce21209401a253975c607f5b5a77e746ec9fc4a 172.20.0.2:8001
   slots:[0-4095] (4096 slots) master
M: 137615861ffa8494a1ea6fd412f15041b847c71f 172.20.0.3:8002
   slots:[4096-8191] (4096 slots) master
M: 1eec90bba9616fa2b898f8f77d5c34b16aaa749f 172.20.0.4:8003
   slots:[8192-12287] (4096 slots) master
M: e4b1365fc3f483e71cab3ef00d4aaa1c66aa5a19 172.20.0.5:8004
   slots:[12288-16383] (4096 slots) master
S: e9c0c0d9d18a38eaaa5f9cd1412b2b57861e7423 172.20.0.6:8005
   replicates e4b1365fc3f483e71cab3ef00d4aaa1c66aa5a19
S: bed6fa2e8e61e426a22f1d3046eb109a7571ad61 172.20.0.7:8006
   replicates cce21209401a253975c607f5b5a77e746ec9fc4a
S: 36e1061014f8a15f1ba863f9490d30b0daf1b45b 172.20.0.8:8007
   replicates 137615861ffa8494a1ea6fd412f15041b847c71f
S: 9e730419538b6bcdb08ff65a73002781189b6a92 172.20.0.9:8008
   replicates 1eec90bba9616fa2b898f8f77d5c34b16aaa749f
Can I set the above configuration? (type 'yes' to accept): 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 172.20.0.2:8001)
M: cce21209401a253975c607f5b5a77e746ec9fc4a 172.20.0.2:8001
   slots:[0-4095] (4096 slots) master
   1 additional replica(s)
S: 9e730419538b6bcdb08ff65a73002781189b6a92 192.168.0.159:8008
   slots: (0 slots) slave
   replicates 1eec90bba9616fa2b898f8f77d5c34b16aaa749f
M: e4b1365fc3f483e71cab3ef00d4aaa1c66aa5a19 192.168.0.159:8004
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: bed6fa2e8e61e426a22f1d3046eb109a7571ad61 192.168.0.159:8006
   slots: (0 slots) slave
   replicates cce21209401a253975c607f5b5a77e746ec9fc4a
S: e9c0c0d9d18a38eaaa5f9cd1412b2b57861e7423 192.168.0.159:8005
   slots: (0 slots) slave
   replicates e4b1365fc3f483e71cab3ef00d4aaa1c66aa5a19
S: 36e1061014f8a15f1ba863f9490d30b0daf1b45b 192.168.0.159:8007
   slots: (0 slots) slave
   replicates 137615861ffa8494a1ea6fd412f15041b847c71f
M: 137615861ffa8494a1ea6fd412f15041b847c71f 192.168.0.159:8002
   slots:[4096-8191] (4096 slots) master
   1 additional replica(s)
M: 1eec90bba9616fa2b898f8f77d5c34b16aaa749f 192.168.0.159:8003
   slots:[8192-12287] (4096 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.   

删除redis cluster

for port in `seq 8001 8008`; \
do \
  docker stop redis-${port} ; \
  docker rm redis-${port} ;\
done

docker network prune 

rm /home/redis-cluster -rf
Morty Proxy This is a proxified and sanitized view of the page, visit original site.