feat: add more
This commit is contained in:
13
src/zookeeper/.env.example
Normal file
13
src/zookeeper/.env.example
Normal file
@@ -0,0 +1,13 @@
|
||||
# ZooKeeper version
|
||||
ZOOKEEPER_VERSION="3.9.3"
|
||||
|
||||
# ZooKeeper configuration
|
||||
ZOO_TICK_TIME=2000
|
||||
ZOO_INIT_LIMIT=10
|
||||
ZOO_SYNC_LIMIT=5
|
||||
ZOO_MAX_CLIENT_CNXNS=60
|
||||
ZOO_4LW_COMMANDS_WHITELIST="srvr,mntr,ruok"
|
||||
|
||||
# Port overrides
|
||||
ZOOKEEPER_CLIENT_PORT_OVERRIDE=2181
|
||||
ZOOKEEPER_ADMIN_PORT_OVERRIDE=8080
|
||||
92
src/zookeeper/README.md
Normal file
92
src/zookeeper/README.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# ZooKeeper
|
||||
|
||||
[Apache ZooKeeper](https://zookeeper.apache.org/) is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
|
||||
|
||||
## Features
|
||||
|
||||
- Configuration Management: Centralized configuration management
|
||||
- Naming Service: Distributed naming service
|
||||
- Synchronization: Distributed synchronization primitives
|
||||
- Group Services: Group membership and leader election
|
||||
- High Availability: Built-in replication and failover
|
||||
|
||||
## Quick Start
|
||||
|
||||
Start ZooKeeper:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- `ZOOKEEPER_VERSION`: ZooKeeper version (default: `3.9.3`)
|
||||
- `ZOOKEEPER_CLIENT_PORT_OVERRIDE`: Client port (default: `2181`)
|
||||
- `ZOOKEEPER_ADMIN_PORT_OVERRIDE`: Admin server port (default: `8080`)
|
||||
- `ZOO_TICK_TIME`: Tick time in milliseconds (default: `2000`)
|
||||
- `ZOO_INIT_LIMIT`: Init limit (default: `10`)
|
||||
- `ZOO_SYNC_LIMIT`: Sync limit (default: `5`)
|
||||
- `ZOO_MAX_CLIENT_CNXNS`: Maximum client connections (default: `60`)
|
||||
- `ZOO_4LW_COMMANDS_WHITELIST`: Four letter words commands whitelist (default: `srvr,mntr,ruok`)
|
||||
|
||||
## Access
|
||||
|
||||
- Client Port: `localhost:2181`
|
||||
- Admin Server: <http://localhost:8080>
|
||||
|
||||
## Usage
|
||||
|
||||
### Connect to ZooKeeper
|
||||
|
||||
```bash
|
||||
docker compose exec zookeeper zkCli.sh
|
||||
```
|
||||
|
||||
### Check Status
|
||||
|
||||
```bash
|
||||
echo ruok | nc localhost 2181
|
||||
```
|
||||
|
||||
Response should be `imok` if ZooKeeper is running properly.
|
||||
|
||||
### Get Server Stats
|
||||
|
||||
```bash
|
||||
echo stat | nc localhost 2181
|
||||
```
|
||||
|
||||
## Four Letter Words Commands
|
||||
|
||||
ZooKeeper supports a set of commands that are exactly four letters:
|
||||
|
||||
- `ruok`: Tests if server is running
|
||||
- `stat`: Lists server statistics and clients
|
||||
- `srvr`: Lists server information
|
||||
- `mntr`: Lists server metrics
|
||||
- `conf`: Shows server configuration
|
||||
|
||||
## Data Storage
|
||||
|
||||
ZooKeeper data is stored in three volumes:
|
||||
|
||||
- `zookeeper_data`: Main data directory
|
||||
- `zookeeper_datalog`: Transaction logs
|
||||
- `zookeeper_logs`: Application logs
|
||||
|
||||
## Resources
|
||||
|
||||
- Resource Limits: 1 CPU, 1G RAM
|
||||
- Resource Reservations: 0.25 CPU, 512M RAM
|
||||
|
||||
## Production Considerations
|
||||
|
||||
For production deployments:
|
||||
|
||||
1. Use an ensemble (cluster) of at least 3 nodes
|
||||
2. Configure proper disk I/O for transaction logs
|
||||
3. Monitor heap memory usage
|
||||
4. Set up proper backup strategies
|
||||
5. Configure firewall rules for all required ports
|
||||
92
src/zookeeper/README.zh.md
Normal file
92
src/zookeeper/README.zh.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# ZooKeeper
|
||||
|
||||
[Apache ZooKeeper](https://zookeeper.apache.org/) 是一个用于维护配置信息、命名、提供分布式同步和提供组服务的集中式服务。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 配置管理:集中式配置管理
|
||||
- 命名服务:分布式命名服务
|
||||
- 同步:分布式同步原语
|
||||
- 组服务:组成员管理和领导者选举
|
||||
- 高可用性:内置复制和故障转移
|
||||
|
||||
## 快速开始
|
||||
|
||||
启动 ZooKeeper:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
### 环境变量
|
||||
|
||||
- `ZOOKEEPER_VERSION`: ZooKeeper 版本(默认:`3.9.3`)
|
||||
- `ZOOKEEPER_CLIENT_PORT_OVERRIDE`: 客户端端口(默认:`2181`)
|
||||
- `ZOOKEEPER_ADMIN_PORT_OVERRIDE`: 管理服务器端口(默认:`8080`)
|
||||
- `ZOO_TICK_TIME`: 心跳时间(毫秒)(默认:`2000`)
|
||||
- `ZOO_INIT_LIMIT`: 初始化限制(默认:`10`)
|
||||
- `ZOO_SYNC_LIMIT`: 同步限制(默认:`5`)
|
||||
- `ZOO_MAX_CLIENT_CNXNS`: 最大客户端连接数(默认:`60`)
|
||||
- `ZOO_4LW_COMMANDS_WHITELIST`: 四字母命令白名单(默认:`srvr,mntr,ruok`)
|
||||
|
||||
## 访问
|
||||
|
||||
- 客户端端口:`localhost:2181`
|
||||
- 管理服务器:<http://localhost:8080>
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 连接到 ZooKeeper
|
||||
|
||||
```bash
|
||||
docker compose exec zookeeper zkCli.sh
|
||||
```
|
||||
|
||||
### 检查状态
|
||||
|
||||
```bash
|
||||
echo ruok | nc localhost 2181
|
||||
```
|
||||
|
||||
如果 ZooKeeper 正常运行,响应应该是 `imok`。
|
||||
|
||||
### 获取服务器统计信息
|
||||
|
||||
```bash
|
||||
echo stat | nc localhost 2181
|
||||
```
|
||||
|
||||
## 四字母命令
|
||||
|
||||
ZooKeeper 支持一组恰好四个字母的命令:
|
||||
|
||||
- `ruok`: 测试服务器是否运行
|
||||
- `stat`: 列出服务器统计信息和客户端
|
||||
- `srvr`: 列出服务器信息
|
||||
- `mntr`: 列出服务器指标
|
||||
- `conf`: 显示服务器配置
|
||||
|
||||
## 数据存储
|
||||
|
||||
ZooKeeper 数据存储在三个卷中:
|
||||
|
||||
- `zookeeper_data`: 主数据目录
|
||||
- `zookeeper_datalog`: 事务日志
|
||||
- `zookeeper_logs`: 应用程序日志
|
||||
|
||||
## 资源配置
|
||||
|
||||
- 资源限制:1 CPU,1G 内存
|
||||
- 资源预留:0.25 CPU,512M 内存
|
||||
|
||||
## 生产环境考虑因素
|
||||
|
||||
对于生产环境部署:
|
||||
|
||||
1. 使用至少 3 个节点的集群(ensemble)
|
||||
2. 为事务日志配置适当的磁盘 I/O
|
||||
3. 监控堆内存使用情况
|
||||
4. 设置适当的备份策略
|
||||
5. 为所有必需的端口配置防火墙规则
|
||||
45
src/zookeeper/docker-compose.yaml
Normal file
45
src/zookeeper/docker-compose.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
x-default: &default
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- &localtime /etc/localtime:/etc/localtime:ro
|
||||
- &timezone /etc/timezone:/etc/timezone:ro
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 100m
|
||||
|
||||
services:
|
||||
zookeeper:
|
||||
<<: *default
|
||||
image: zookeeper:${ZOOKEEPER_VERSION:-3.9.3}
|
||||
container_name: zookeeper
|
||||
ports:
|
||||
- "${ZOOKEEPER_CLIENT_PORT_OVERRIDE:-2181}:2181"
|
||||
- "${ZOOKEEPER_ADMIN_PORT_OVERRIDE:-8080}:8080"
|
||||
volumes:
|
||||
- *localtime
|
||||
- *timezone
|
||||
- zookeeper_data:/data
|
||||
- zookeeper_datalog:/datalog
|
||||
- zookeeper_logs:/logs
|
||||
environment:
|
||||
- ZOO_MY_ID=1
|
||||
- ZOO_PORT=2181
|
||||
- ZOO_TICK_TIME=${ZOO_TICK_TIME:-2000}
|
||||
- ZOO_INIT_LIMIT=${ZOO_INIT_LIMIT:-10}
|
||||
- ZOO_SYNC_LIMIT=${ZOO_SYNC_LIMIT:-5}
|
||||
- ZOO_MAX_CLIENT_CNXNS=${ZOO_MAX_CLIENT_CNXNS:-60}
|
||||
- ZOO_4LW_COMMANDS_WHITELIST=${ZOO_4LW_COMMANDS_WHITELIST:-srvr,mntr,ruok}
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.25'
|
||||
memory: 512M
|
||||
|
||||
volumes:
|
||||
zookeeper_data:
|
||||
zookeeper_datalog:
|
||||
zookeeper_logs:
|
||||
Reference in New Issue
Block a user