docker compose部署cassandra集群

docker compose 配置

假设有两台电脑
A电脑的ip为192.168.1.100
B电脑的ip为192.168.1.103
A电脑的docker compose 配置

version: '3'

services:

  cassandra:
    restart: always
    image: cassandra:3.11.10
    hostname: cassandra1
    container_name: cassandra-node-1
    environment:
      - CASSANDRA_BROADCAST_ADDRESS=cassandra1
      - CASSANDRA_SEEDS=cassandra1,cassandra3
    extra_hosts:
      - "cassandra1:192.168.1.100"
      - "cassandra3:192.168.1.103"
    ports:
      - "9042:9042"
      - "7000:7000"
    volumes:
      - cassandra_data:/var/lib/cassandra

volumes:
  cassandra
<think> 我们不用docker compose,所以需要手动创建多个容器来搭建Cassandra多节点集群。 基本步骤: 1. 创建一个Docker网络,让所有容器在同一个网络中。 2. 启动第一个节点(种子节点)。 3. 启动其他节点,并指定种子节点。 注意:Cassandra节点之间通过Gossip协议通信,需要知道种子节点的地址。 具体操作如下: 步骤1:创建网络 docker network create cassandra-net 步骤2:启动第一个节点(种子节点) docker run --name cassandra-node1 --network cassandra-net -d \ -e CASSANDRA_CLUSTER_NAME=MyCluster \ -e CASSANDRA_SEEDS=cassandra-node1 \ cassandra:latest 注意:这里指定种子节点为cassandra-node1(即自身),并且设置集群名。 步骤3:启动第二个节点,并指定种子节点为第一个节点 docker run --name cassandra-node2 --network cassandra-net -d \ -e CASSANDRA_CLUSTER_NAME=MyCluster \ -e CASSANDRA_SEEDS=cassandra-node1 \ cassandra:latest 同样的方式启动第三个节点等。 步骤4:验证集群状态 进入其中一个节点: docker exec -it cassandra-node1 cqlsh 然后执行: SELECT peer, data_center, host_id, rack, release_version, rpc_address, schema_version FROM system.peers; 注意事项: - 每个节点需要时间启动,不要立即启动下一个,等待上一个节点完全启动(可以通过日志查看)。 - 如果节点启动失败,检查日志(docker logs cassandra-node1)。 但是,上述方法中,我们通过环境变量设置了集群名和种子节点。每个节点都会自动加入集群。 现在,按照要求,在回答后提出3-5个相关问题。 </think> ### 不使用 Docker Compose 搭建 Cassandra 多节点集群 #### 核心步骤: 1. **创建专用网络** ```bash docker network create cassandra-net ``` 2. **启动种子节点 (node1)** ```bash docker run -d --name cassandra-node1 \ --network cassandra-net \ -e CASSANDRA_CLUSTER_NAME=MyCluster \ -e CASSANDRA_SEEDS=cassandra-node1 \ cassandra:latest ``` - `CASSANDRA_SEEDS`:设置自身为种子节点 3. **启动其他节点 (node2/node3)** ```bash # 节点2 docker run -d --name cassandra-node2 \ --network cassandra-net \ -e CASSANDRA_CLUSTER_NAME=MyCluster \ -e CASSANDRA_SEEDS=cassandra-node1 \ # 指向种子节点 cassandra:latest # 节点3 (同理) docker run -d --name cassandra-node3 ... ``` 4. **验证集群状态** ```bash docker exec -it cassandra-node1 nodetool status ``` 输出应显示所有节点的 `UN` (正常运行) 状态。 #### 关键配置说明: - **网络要求**:所有节点必须在同一 Docker 网络 (`cassandra-net`) 中 - **启动顺序**: ① 先启动种子节点 → ② 等待 30-60 秒 → ③ 启动其他节点 - **端口映射**:若需外部访问,添加 `-p 9042:9042` 到每个容器 - **数据持久化**:添加 `-v /path/data:/var/lib/cassandra` 防止数据丢失 #### 故障排查: 1. 检查节点日志:`docker logs cassandra-node2` 2. 确认 IP 连通性:在容器内 `ping cassandra-node1` 3. 强制重启问题节点:`docker restart cassandra-node3`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值