Please enable Javascript to view the contents

容器化部署 Redis

 ·  ☕ 1 分钟

1. Redis 主从模式

  • 配置环境变量
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
export CONTAINER_CLI=nerdctl
export IMAGE=redis:7

export REDIS_INSTANCE_NAME=redis-instance
export REDIS_MASTER_INSTANCE_NAME="${REDIS_INSTANCE_NAME}-master"
export REDIS_REPLICA_INSTANCE_NAME="${REDIS_INSTANCE_NAME}-replica"

export REDIS_PASSWORD=xxxxxx
export REDIS_MASTER_PORT=6379
export REDIS_MASTER_IP=10.0.0.1
export REDIS_REPLICA_PORT=6380

export REDIS_DATA=/data/ops/redis/$REDIS_INSTANCE_NAME
mkdir -p $REDIS_DATA/data $REDIS_DATA/log
  • 启动主节点
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$CONTAINER_CLI run -d \
  --name $REDIS_MASTER_INSTANCE_NAME \
  --restart always \
  --network host \
  --ulimit memlock=-1 \
  --ulimit stack=67108864 \
  --ulimit nofile=1048576:1048576 \
  --memory-swappiness=0 \
  -v $REDIS_DATA/data:/data \
  -v $REDIS_DATA/log:/var/log/redis \
  $IMAGE redis-server --port $REDIS_MASTER_PORT --requirepass $REDIS_PASSWORD

应该可以这样的日志:

1
Ready to accept connections tcp
  • 启动从节点
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$CONTAINER_CLI run -d \
  --name $REDIS_REPLICA_INSTANCE_NAME \
  --restart always \
  --network host \
  --ulimit memlock=-1 \
  --ulimit stack=67108864 \
  --ulimit nofile=1048576:1048576 \
  --memory-swappiness=0 \
  -v $REDIS_DATA/data:/data \
  -v $REDIS_DATA/log:/var/log/redis \
  $IMAGE redis-server --port $REDIS_REPLICA_PORT --requirepass $REDIS_PASSWORD \
    --replicaof $REDIS_MASTER_IP $REDIS_MASTER_PORT --masterauth $REDIS_PASSWORD

应该可以看到这样的日志:

1
MASTER <-> REPLICA sync: Finished with success
  • 测试连接

主节点上,响应 PONG 表示连接成功

1
$CONTAINER_CLI exec -it $REDIS_MASTER_INSTANCE_NAME redis-cli -p $REDIS_MASTER_PORT -a $REDIS_PASSWORD ping

从节点上,响应 PONG 表示连接成功

1
$CONTAINER_CLI exec -it $REDIS_REPLICA_INSTANCE_NAME redis-cli -p $REDIS_REPLICA_PORT -a $REDIS_PASSWORD ping
  • 打印交付结果
1
2
3
4
5
echo "Redis:
Instance Name:$REDIS_INSTANCE_NAME
IP:$(hostname -I | awk '{print $1}')
Port:$REDIS_MASTER_PORT
Password:$REDIS_PASSWORD" | column -t -s ':'
  • 压力测试
1
apt install redis-tools -y
1
redis-benchmark -h $REDIS_MASTER_IP -p $REDIS_MASTER_PORT -a $REDIS_PASSWORD

微信公众号
作者
微信公众号