天天看點

【Cassandra】使用Docker部署Cassandra叢集Cassandra 的簡單的介紹特點

Cassandra 的簡單的介紹

Cassandra是一個開源分布式NoSQL資料庫系統。

特點

  • 本身不是一個資料庫,而是有一堆資料庫節點共同構成的一個分布式網絡服務,對一個 Cassandra 的寫操作,會被複制到其他節點上去,對 Cassandra 的讀操作,也會被路由到某個節點上面去讀取。
  • 易于水準擴充。隻要添加節點就行
  • 是一個面向列的資料庫,不向傳統結構式資料庫是用表來模拟關系。其實就是 Map 的嵌套

    這裡我們使用 Docker 部署一個 Cassandra 的叢集環境。

version: '3'
services:
  cassandra-1:
    image: cassandra:3.11.7
    container_name: cassandra-1
    volumes:
      - /opt/module/docker-compose/cassandra.yaml:/opt/cassandra/conf/cassandra.yaml
      - /data/cassandra-cluster/cassandra-1/cassandra:/var/lib/cassandra
    environment:
      - CASSANDRA_BROADCAST_ADDRESS=cassandra-1
    ports:
      - "7000:7000"
      - "9042:9042"
    restart: always
  cassandra-2:
    image: cassandra:3.11.7
    container_name: cassandra-2
    volumes:
      - /opt/module/docker-compose/cassandra.yaml:/opt/cassandra/conf/cassandra.yaml
      - /data/cassandra-cluster/cassandra-2/cassandra:/var/lib/cassandra
    environment:
      - CASSANDRA_BROADCAST_ADDRESS=cassandra-2
      - CASSANDRA_SEEDS=cassandra-1
    ports:
      - "7001:7000"
      - "9043:9042"
    depends_on:
      - cassandra-1
    restart: always
  cassandra-3:
    image: cassandra:3.11.7
    container_name: cassandra-3
    volumes:
      - /opt/module/docker-compose/cassandra.yaml:/opt/cassandra/conf/cassandra.yaml
      - /data/cassandra-cluster/cassandra-3/cassandra:/var/lib/cassandra
    environment:
      - CASSANDRA_BROADCAST_ADDRESS=cassandra-3
      - CASSANDRA_SEEDS=cassandra-1
    ports:
      - "7002:7000"
      - "9044:9042"
    depends_on:
      - cassandra-2
    restart: always           

說明

  • CASSANDRA_BROADCAST_ADDRESS: 控制向其他節點播發哪個IP位址
  • CASSANDRA_SEEDS:這個變量是用逗号分隔的IP位址清單,gossip 用來引導加入叢集的新節點。

常用端口

  • 7199 - JMX(8080 pre Cassandra 0.8.xx)
  • 7000 - 節點間通信(如果啟用了TLS,則不使用)
  • 7001 - TLS節點間通信(使用TLS時使用)
  • 9160 - Thrift用戶端API
  • 9042 - CQL本地傳輸端口