当前位置:网站首页>Docker compose start redis cluster
Docker compose start redis cluster
2022-07-07 07:16:00 【Development, operation and maintenance Xuande public】
List of articles
1. Pseudo cluster installation
docker-compose.yml
establish redis-cluster Catalog , Create under directory docker-compose.yml The documents are as follows
version: '2.2'
x-image:
&default-image
bitnami/redis-cluster:7.0
x-restart:
&default-restart
always
services:
redis-node-0:
image: *default-image
restart: *default-restart
container_name: redis-node-0
ports:
- 6379:6379
volumes:
- ./redis-cluster_data-0:/bitnami/redis/data
environment:
- '[email protected]'
- 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-1:
image: *default-image
restart: *default-restart
container_name: redis-node-1
ports:
- 16379:6379
volumes:
- ./redis-cluster_data-1:/bitnami/redis/data
environment:
- '[email protected]'
- 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-2:
image: *default-image
restart: *default-restart
container_name: redis-node-2
ports:
- 26379:6379
volumes:
- ./redis-cluster_data-2:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liube[email protected]'
- 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-3:
image: *default-image
restart: *default-restart
container_name: redis-node-3
ports:
- 36379:6379
volumes:
- ./redis-cluster_data-3:/bitnami/redis/data
environment:
- '[email protected]'
- 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-4:
image: *default-image
restart: *default-restart
container_name: redis-node-4
ports:
- 46379:6379
volumes:
- ./redis-cluster_data-4:/bitnami/redis/data
environment:
- '[email protected]'
- 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-5:
image: *default-image
restart: *default-restart
container_name: redis-node-5
ports:
- 56379:6379
volumes:
- ./redis-cluster_data-5:/bitnami/redis/data
depends_on:
- redis-node-0
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
environment:
- '[email protected]'
- 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
Persistent storage
We can start these directories directly , But it is not used in the container root user , Generally, the server will not have write permission . therefore
- We create these directories manually , First give read and write permission .
- It is recommended to wait after startup , See which user corresponds to the host , Let's change the directory owner to which user .
- Create storage directory
mkdir redis-cluster_data-{
0..5}
chmod 777 redis-cluster-data-*
- give the result as follows
[[email protected] redis-cluster]# ll
Total usage 7
-rw-r----- 1 root root 2481 7 month 6 10:21 docker-compose.yml
drwxrwxrwx 3 root root 61 7 month 6 10:43 redis-cluster_data-0
drwxrwxrwx 3 root root 61 7 month 6 10:43 redis-cluster_data-1
drwxrwxrwx 3 root root 61 7 month 6 10:43 redis-cluster_data-2
drwxrwxrwx 3 root root 77 7 month 6 10:51 redis-cluster_data-3
drwxrwxrwx 3 root root 77 7 month 6 10:51 redis-cluster_data-4
drwxrwxrwx 3 root root 77 7 month 6 10:51 redis-cluster_data-5
Start cluster
- Start cluster
# docker-compose up -d
- View results
[[email protected] redis-cluster]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------
redis-node-0 /opt/bitnami/scripts/redis ... Up 0.0.0.0:6379->6379/tcp
redis-node-1 /opt/bitnami/scripts/redis ... Up 0.0.0.0:16379->6379/tcp
redis-node-2 /opt/bitnami/scripts/redis ... Up 0.0.0.0:26379->6379/tcp
redis-node-3 /opt/bitnami/scripts/redis ... Up 0.0.0.0:36379->6379/tcp
redis-node-4 /opt/bitnami/scripts/redis ... Up 0.0.0.0:46379->6379/tcp
redis-node-5 /opt/bitnami/scripts/redis ... Up 0.0.0.0:56379->6379/tcp
Cluster initialization
- Initialize cluster
Enter one of the containers , Execute the order as follows :
I have no name!@d4a8a3ef35ce:/$ redis-cli -a [email protected] --cluster create redis-node-0:6379 redis-node-1:6379 redis-node-2:6379 redis-node-3:6379 redis-node-4:6379 redis-node-5:6379 --cluster-replicas 1
Output is as follows :
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 redis-node-4:6379 to redis-node-0:6379
Adding replica redis-node-5:6379 to redis-node-1:6379
Adding replica redis-node-3:6379 to redis-node-2:6379
M: 4cdf0f24f67eadb3b7a610fd9b5409a571cce8d3 redis-node-0:6379
slots:[0-5460] (5461 slots) master
M: ee85d84a95793ee031a4b45fe3600ef81ecef7d1 redis-node-1:6379
slots:[5461-10922] (5462 slots) master
M: f48ab32421dfe4405b73129d88f64a4ce4d076e3 redis-node-2:6379
slots:[10923-16383] (5461 slots) master
S: 0315d864aec40531c9630d5e21959aea6837236e redis-node-3:6379
replicates f48ab32421dfe4405b73129d88f64a4ce4d076e3
S: ec43dee472ce9f1531ccdbd0853cd672519ec2fe redis-node-4:6379
replicates 4cdf0f24f67eadb3b7a610fd9b5409a571cce8d3
S: c834ba17bfdf0d498533355022e548b040083ed9 redis-node-5:6379
replicates ee85d84a95793ee031a4b45fe3600ef81ecef7d1
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 redis-node-0:6379)
M: 4cdf0f24f67eadb3b7a610fd9b5409a571cce8d3 redis-node-0:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: ec43dee472ce9f1531ccdbd0853cd672519ec2fe 172.29.0.2:6379
slots: (0 slots) slave
replicates 4cdf0f24f67eadb3b7a610fd9b5409a571cce8d3
M: f48ab32421dfe4405b73129d88f64a4ce4d076e3 172.29.0.4:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: ee85d84a95793ee031a4b45fe3600ef81ecef7d1 172.29.0.5:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 0315d864aec40531c9630d5e21959aea6837236e 172.29.0.6:6379
slots: (0 slots) slave
replicates f48ab32421dfe4405b73129d88f64a4ce4d076e3
S: c834ba17bfdf0d498533355022e548b040083ed9 172.29.0.7:6379
slots: (0 slots) slave
replicates ee85d84a95793ee031a4b45fe3600ef81ecef7d1
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
- View the cluster status
redis-cli -h redis-node-0 -a [email protected] cluster info
The output information is as follows :
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:174
cluster_stats_messages_pong_sent:203
cluster_stats_messages_sent:377
cluster_stats_messages_ping_received:198
cluster_stats_messages_pong_received:174
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:377
total_cluster_links_buffer_limit_exceeded:0
I have no name!@c193f9814adb:/$
- View cluster node status
redis-cli -h redis-node-0 -a [email protected] cluster nodes
Output
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
921dd4fc8977562273e8f0f297d7809f5d785a96 192.168.0.2:[email protected] myself,master - 0 1657079063000 1 connected 0-5460
e3be1ac5c4b5a8ea5789dd62aaa550cece718504 192.168.0.5:[email protected] slave 921dd4fc8977562273e8f0f297d7809f5d785a96 0 1657079062000 1 connected
d45ea5232290aefd17ec87229b2b68be76061b84 192.168.0.6:[email protected] slave 505a1c9a1e3bc8b7685a6cdf6aa1d82bd48cc95f 0 1657079063278 3 connected
88f0d7a2377bf876105925e330793091f2390a20 192.168.0.4:[email protected] slave 477f835648ca3ddffa48af99a2e162e541277186 0 1657079062274 2 connected
505a1c9a1e3bc8b7685a6cdf6aa1d82bd48cc95f 192.168.0.7:[email protected] master - 0 1657079064281 3 connected 10923-16383
477f835648ca3ddffa48af99a2e162e541277186 192.168.0.3:[email protected] master - 0 1657079065285 2 connected 5461-10922
2. test
Read and write test
- Login in cluster mode
redis-cli -h redis-nod-1 -a [email protected] -c
- Write data
redis-node-1:6379> set name liubei
OK
- Read on another node
I have no name!@ab2a18399901:/$ redis-cli -h redis-node-5 -a [email protected] -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
redis-node-5:6379> get name
-> Redirected to slot [5798] located at 192.168.0.3:6379
"liubei"
192.168.0.3:6379>
We can see , The connection will jump to store this key Node (192.168.0.3).
key The node
- Log in to one of the nodes
redis-cli -h redis-node-0 -a [email protected] -c
- View the range of node hash slot numbers
redis-node-0:6379> cluster slots
1) 1) (integer) 0
2) (integer) 5460
3) 1) "192.168.0.2"
2) (integer) 6379
3) "921dd4fc8977562273e8f0f297d7809f5d785a96"
4) (empty array)
4) 1) "192.168.0.5"
2) (integer) 6379
3) "e3be1ac5c4b5a8ea5789dd62aaa550cece718504"
4) (empty array)
2) 1) (integer) 5461
2) (integer) 10922
3) 1) "192.168.0.3"
2) (integer) 6379
3) "477f835648ca3ddffa48af99a2e162e541277186"
4) (empty array)
4) 1) "192.168.0.4"
2) (integer) 6379
3) "88f0d7a2377bf876105925e330793091f2390a20"
4) (empty array)
3) 1) (integer) 10923
2) (integer) 16383
3) 1) "192.168.0.7"
2) (integer) 6379
3) "505a1c9a1e3bc8b7685a6cdf6aa1d82bd48cc95f"
4) (empty array)
4) 1) "192.168.0.6"
2) (integer) 6379
3) "d45ea5232290aefd17ec87229b2b68be76061b84"
4) (empty array)
- see
name
Hash slot number of
redis-node-0:6379> cluster keyslot name
(integer) 5798
Through the first step View the range of node hash slot numbers
We can see 5798 This number is in 192.168.0.3 On
If we don't login in cluster mode , This can only be read on this node key value .
- Whether the cluster mode verification is accurate
redis-node-0:6379> get name
-> Redirected to slot [5798] located at 192.168.0.3:6379
"liubei"
192.168.0.3:6379>
Cluster login mode , Find this key, Our connection jumps to 192.168.0.3 On .
- Login and view in non cluster mode
Log in to other nodes , Will prompt us this key There is 192.168.0.3
On
I have no name!@ab2a18399901:/$ redis-cli -h 192.168.0.5 -a [email protected]
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.5:6379> get name
(error) MOVED 5798 192.168.0.3:6379
Only by logging in to this node can you query the value
I have no name!@ab2a18399901:/$ redis-cli -h 192.168.0.3 -a [email protected]
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.3:6379> get name
"liubei"
边栏推荐
- Prime partner of Huawei machine test questions
- How can flinksql calculate the difference between a field before and after update when docking with CDC?
- Apache AB stress test
- 【JDBC以及内部类的讲解】
- Learning records on July 4, 2022
- Databinding exception of kotlin
- $parent (get parent component) and $root (get root component)
- 请问 flinksql对接cdc时 如何实现计算某个字段update前后的差异 ?
- Esxi attaching mobile (Mechanical) hard disk detailed tutorial
- SolidWorks GB Library (steel profile library, including aluminum profile, aluminum tube and other structures) installation and use tutorial (generating aluminum profile as an example)
猜你喜欢
Bindingexception exception (error reporting) processing
Release notes of JMeter version 5.5
$parent(获取父组件) 和 $root(获取根组件)
MOS tube parameters μ A method of Cox
Brand · consultation standardization
How does an enterprise manage data? Share the experience summary of four aspects of data governance
LC 面试题 02.07. 链表相交 & LC142. 环形链表II
Unity3d learning notes
Lm11 reconstruction of K-line and construction of timing trading strategy
The latest trends of data asset management and data security at home and abroad
随机推荐
mips uclibc 交叉编译ffmpeg,支持 G711A 编解码
How can flinksql calculate the difference between a field before and after update when docking with CDC?
詳解機器翻譯任務中的BLEU
OOM(内存溢出)造成原因及解决方案
Precise space-time travel flow regulation system - ultra-high precision positioning system based on UWB
Paranoid unqualified company
AVL树的实现
组件的通信
jdbc数据库连接池使用问题
Big coffee gathering | nextarch foundation cloud development meetup is coming
SolidWorks GB Library (steel profile library, including aluminum profile, aluminum tube and other structures) installation and use tutorial (generating aluminum profile as an example)
非父子组件的通信
Network foundation - header, encapsulation and unpacking
Tool class: object to map hump to underline underline hump
linux系统rpm方式安装的mysql启动失败
Please answer the questions about database data transfer
Graduation design game mall
main函数在import语句中的特殊行为
$parent(获取父组件) 和 $root(获取根组件)
Explain Bleu in machine translation task in detail