mirror of
https://github.com/joyieldInc/predixy.git
synced 2025-12-24 22:46:41 +08:00
Initial cluster setup testing instructions/conf
This commit is contained in:
parent
4741e58e3d
commit
9deac8a441
74
README.md
74
README.md
@ -210,3 +210,77 @@ All rights reserved.
|
|||||||
License under BSD 3-clause "New" or "Revised" License
|
License under BSD 3-clause "New" or "Revised" License
|
||||||
|
|
||||||
WeChat:cppfan 
|
WeChat:cppfan 
|
||||||
|
|
||||||
|
## Local Redis Cluster Setup and Testing
|
||||||
|
|
||||||
|
### Setting up Redis Cluster Locally
|
||||||
|
|
||||||
|
1. Create directories for each Redis node (we'll use 3 nodes):
|
||||||
|
```bash
|
||||||
|
$ mkdir -p redis-cluster/{7000,7001,7002}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create Redis configuration for each node. First for port 7000:
|
||||||
|
```bash
|
||||||
|
$ cat > redis-cluster/7000/redis.conf << EOL
|
||||||
|
port 7000
|
||||||
|
cluster-enabled yes
|
||||||
|
cluster-config-file nodes-7000.conf
|
||||||
|
cluster-node-timeout 5000
|
||||||
|
appendonly yes
|
||||||
|
dir ./
|
||||||
|
bind 127.0.0.1
|
||||||
|
daemonize no
|
||||||
|
EOL
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Copy and adjust configuration for other nodes:
|
||||||
|
```bash
|
||||||
|
$ cp redis-cluster/7000/redis.conf redis-cluster/7001/redis.conf
|
||||||
|
$ cp redis-cluster/7000/redis.conf redis-cluster/7002/redis.conf
|
||||||
|
$ sed -i '' 's/7000/7001/g' redis-cluster/7001/redis.conf
|
||||||
|
$ sed -i '' 's/7000/7002/g' redis-cluster/7002/redis.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Start each Redis instance (in separate terminal windows):
|
||||||
|
```bash
|
||||||
|
$ redis-server redis-cluster/7000/redis.conf
|
||||||
|
$ redis-server redis-cluster/7001/redis.conf
|
||||||
|
$ redis-server redis-cluster/7002/redis.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Create the cluster:
|
||||||
|
```bash
|
||||||
|
$ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 0
|
||||||
|
```
|
||||||
|
Type 'yes' when prompted to accept the configuration.
|
||||||
|
|
||||||
|
6. Verify cluster status:
|
||||||
|
```bash
|
||||||
|
$ redis-cli -p 7000 cluster nodes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing with Predixy
|
||||||
|
|
||||||
|
1. Start Predixy with the cluster configuration:
|
||||||
|
```bash
|
||||||
|
$ src/predixy conf/predixy_cluster.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Test the cluster setup through Predixy:
|
||||||
|
```bash
|
||||||
|
# Basic connectivity test
|
||||||
|
$ redis-cli -p 7617 set test "Hello Cluster"
|
||||||
|
$ redis-cli -p 7617 get test
|
||||||
|
|
||||||
|
# Check Predixy cluster status
|
||||||
|
$ redis-cli -p 7617 info
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cleanup
|
||||||
|
When done testing, you can:
|
||||||
|
1. Stop Predixy (Ctrl+C or `pkill predixy`)
|
||||||
|
2. Stop each Redis instance (Ctrl+C in each terminal)
|
||||||
|
3. Remove cluster files: `rm -rf redis-cluster`
|
||||||
|
|
||||||
|
Note: The cluster setup distributes keys across all nodes using hash slots. Each node in this setup handles approximately 5461 hash slots (16384/3 slots per node).
|
||||||
|
|||||||
119
conf/predixy_cluster.conf
Normal file
119
conf/predixy_cluster.conf
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
################################### GENERAL ####################################
|
||||||
|
## Predixy configuration file example
|
||||||
|
|
||||||
|
## Specify a name for this predixy service
|
||||||
|
## redis command INFO can get this
|
||||||
|
Name PredixyLocalCluster
|
||||||
|
|
||||||
|
## Specify listen address, support IPV4, IPV6, Unix socket
|
||||||
|
## Examples:
|
||||||
|
# Bind 127.0.0.1:7617
|
||||||
|
# Bind 0.0.0.0:7617
|
||||||
|
# Bind /tmp/predixy
|
||||||
|
|
||||||
|
## Bind to localhost for local testing
|
||||||
|
Bind 127.0.0.1:7617
|
||||||
|
|
||||||
|
## Worker threads
|
||||||
|
WorkerThreads 1
|
||||||
|
|
||||||
|
## Memory limit, 0 means unlimited
|
||||||
|
MaxMemory 1G
|
||||||
|
|
||||||
|
## Examples:
|
||||||
|
# MaxMemory 100M
|
||||||
|
# MaxMemory 1G
|
||||||
|
# MaxMemory 0
|
||||||
|
|
||||||
|
## MaxMemory can change online by CONFIG SET MaxMemory xxx
|
||||||
|
## Default is 0
|
||||||
|
# MaxMemory 0
|
||||||
|
|
||||||
|
## Close the connection after a client is idle for N seconds (0 to disable)
|
||||||
|
## ClientTimeout can change online by CONFIG SET ClientTimeout N
|
||||||
|
## Default is 0
|
||||||
|
ClientTimeout 300
|
||||||
|
|
||||||
|
|
||||||
|
## IO buffer size
|
||||||
|
## Default is 4096
|
||||||
|
BufSize 4096
|
||||||
|
|
||||||
|
################################### LOG ########################################
|
||||||
|
## Log file path
|
||||||
|
## Unspecify will log to stdout
|
||||||
|
## Default is Unspecified
|
||||||
|
# Log ./predixy.log
|
||||||
|
|
||||||
|
## LogRotate support
|
||||||
|
|
||||||
|
## 1d rotate log every day
|
||||||
|
## nh rotate log every n hours 1 <= n <= 24
|
||||||
|
## nm rotate log every n minutes 1 <= n <= 1440
|
||||||
|
## nG rotate log evenry nG bytes
|
||||||
|
## nM rotate log evenry nM bytes
|
||||||
|
## time rotate and size rotate can combine eg 1h 2G, means 1h or 2G roate a time
|
||||||
|
|
||||||
|
## Examples:
|
||||||
|
# LogRotate 1d 2G
|
||||||
|
# LogRotate 1d
|
||||||
|
|
||||||
|
## Default is disable LogRotate
|
||||||
|
|
||||||
|
|
||||||
|
## In multi-threads, worker thread log need lock,
|
||||||
|
## AllowMissLog can reduce lock time for improve performance
|
||||||
|
## AllowMissLog can change online by CONFIG SET AllowMissLog true|false
|
||||||
|
## Default is true
|
||||||
|
# AllowMissLog false
|
||||||
|
|
||||||
|
## LogLevelSample, output a log every N
|
||||||
|
## all level sample can change online by CONFIG SET LogXXXSample N
|
||||||
|
LogVerbSample 0
|
||||||
|
LogDebugSample 0
|
||||||
|
LogInfoSample 10000
|
||||||
|
LogNoticeSample 1
|
||||||
|
LogWarnSample 1
|
||||||
|
LogErrorSample 1
|
||||||
|
|
||||||
|
|
||||||
|
################################### AUTHORITY ##################################
|
||||||
|
Include auth.conf
|
||||||
|
|
||||||
|
################################### SERVERS ####################################
|
||||||
|
# Include cluster.conf
|
||||||
|
# Include sentinel.conf
|
||||||
|
Include try.conf
|
||||||
|
|
||||||
|
ClusterServerPool {
|
||||||
|
Password ""
|
||||||
|
MasterReadPriority 60
|
||||||
|
StaticSlaveReadPriority 50
|
||||||
|
DynamicSlaveReadPriority 50
|
||||||
|
RefreshInterval 1
|
||||||
|
ServerTimeout 1
|
||||||
|
ServerFailureLimit 10
|
||||||
|
ServerRetryTimeout 1
|
||||||
|
KeepAlive 120
|
||||||
|
Servers {
|
||||||
|
+ 127.0.0.1:7000
|
||||||
|
+ 127.0.0.1:7001
|
||||||
|
+ 127.0.0.1:7002
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
################################### DATACENTER #################################
|
||||||
|
## LocalDC specify current machine dc
|
||||||
|
# LocalDC bj
|
||||||
|
|
||||||
|
## see dc.conf
|
||||||
|
# Include dc.conf
|
||||||
|
|
||||||
|
|
||||||
|
################################### COMMAND ####################################
|
||||||
|
## Custom command define, see command.conf
|
||||||
|
#Include command.conf
|
||||||
|
|
||||||
|
################################### LATENCY ####################################
|
||||||
|
## Latency monitor define, see latency.conf
|
||||||
|
Include latency.conf
|
||||||
Loading…
Reference in New Issue
Block a user