Please enable Javascript to view the contents

容器部署中间件

 ·  ☕ 1 分钟

1. ClickHouse 单节点

  • 配置环境变量
1
2
3
4
5
6
7
8
export CONTAINER_CLI=nerdctl
export IMAGE=clickhouse/clickhouse-server:24
export CLICKHOUSE_INSTANCE_NAME=clickhouse
export CH_DATA=/data/ops/clickhouse/$CLICKHOUSE_INSTANCE_NAME
mkdir -p $CH_DATA/data $CH_DATA/log
export CLICKHOUSE_PORT=9000
export CLICKHOUSE_USER=default
export CLICKHOUSE_PASSWORD=xxxxxx
  • 启动服务
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$CONTAINER_CLI run -d \
  --name $CLICKHOUSE_INSTANCE_NAME \
  --restart always \
  --network host \
  --ulimit memlock=-1 \
  --ulimit stack=67108864 \
  --ulimit nofile=1048576:1048576 \
  --memory-swappiness=0 \
  -v $CH_DATA/data:/var/lib/clickhouse \
  -v $CH_DATA/log:/var/log/clickhouse-server \
  -e CLICKHOUSE_USER=$CLICKHOUSE_USER \
  -e CLICKHOUSE_PASSWORD=$CLICKHOUSE_PASSWORD \
  -e CLICKHOUSE_PORT=$CLICKHOUSE_PORT \
  $IMAGE
  • 测试连接
1
$CONTAINER_CLI exec -it $CLICKHOUSE_INSTANCE_NAME clickhouse-client --host 127.0.0.1 --port $CLICKHOUSE_PORT
  • 打印交付结果
1
2
3
4
5
6
echo "ClickHouse:
Instance Name:$CLICKHOUSE_INSTANCE_NAME
IP:$(hostname -I | awk '{print $1}')
Port:$CLICKHOUSE_PORT
User:$CLICKHOUSE_USER
Password:$CLICKHOUSE_PASSWORD" | column -t -s ':'
  • 压力测试
1
curl -O https://builds.clickhouse.com/master/amd64/clickhouse -O ./clickhouse && chmod +x ./clickhouse
1
2
3
4
5
6
./clickhouse benchmark \
    --host 127.0.0.1 \
    --port $CLICKHOUSE_PORT \
    --concurrency 10 \
    --iterations 1000000 \
    --query "SELECT 1"

2. 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_MASTER_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_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_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_NAME redis-cli -p $REDIS_MASTER_PORT -a $REDIS_PASSWORD ping

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

1
$CONTAINER_CLI exec -it $REDIS_REPLICA_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

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