1. 程式人生 > >CentOS7 部署 cassandra 叢集

CentOS7 部署 cassandra 叢集

環境

主機名Public IPCluster IP作業系統Cassandra 版本
cassandra10110.0.4.10110.10.10.101CentOS7.63.0.18
cassandra10210.0.4.10210.10.10.102CentOS7.63.0.18
cassandra10310.0.4.10310.10.10.103CentOS7.63.0.18

各節點初始配置

  • 關閉 selinux、防火牆
  • 部署 java 執行環境
  • 建立 cassandra 使用者
    useradd -m cassandra
    
  • 建立資料目錄
    cd /var/lib
    mkdir -p cassandra/data1 #多個儲存磁碟可以建立多個數據儲存目錄
    mkdir -p cassandra/hints #建議與資料磁碟分開
    mkdir -p cassandra/commitlog #建議與資料磁碟分開
    mkdir -p cassandra/saved_caches #建議與資料磁碟分開
    chown -R cassandra.cassandra cassandra/
    
  • 建立日誌目錄
    cd /var/log
    mkdir -p cassandra
    chown -R cassandra.cassandra cassandra/
    
  • 建立 pid 目錄
    cd /run
    mkdir -p cassandra
    chown -R cassandra.cassandra cassandra/
    
  • 增加 sysctl.conf 配置,執行 sysctl -p 生效
    vm.max_map_count=1048576
    
  • 安裝 jemalloc (推薦)
    yum install jemalloc
    
  • 建立檔案 /usr/lib/systemd/system/cassandra.service,內容如下
    [Unit]
    Description=Cassandra
    Requires=network.service
    After=network.service
    [Service]
    Type=forking
    WorkingDirectory=/opt/cassandra
    Environment=JAVA_HOME=/opt/jre
    Environment=LOCAL_JMX=no
    PIDFile=/run/cassandra/cassandra.pid
    ExecStart=/opt/cassandra/bin/cassandra -p /run/cassandra/cassandra.pid
    User=cassandra
    Group=cassandra
    LimitNOFILE=65536
    LimitNPROC=65536
    LimitMEMLOCK=infinity
    SuccessExitStatus=143
    [Install]
    WantedBy=multi-user.target
    

部署 Cassandra

  • 登陸 cassandra101,下載 cassandra,解壓至 /opt/ 下
  • 修改 /opt/cassandra/conf/cassandra.yaml
    cluster_name: CassandraCluster
    hists_directory: /var/lib/cassandra/hints
    data_file_directories:
        - /var/lib/cassandra/data1
    commitlog_directory: /var/lib/cassandra/commitlog
    saved_caches_directory: /var/lib/cassandra/saved_caches
    seed_provider:
        - class_name: org.apache.cassandra.locator.SimpleSeedProvider
          parameters:
              - seeds: "10.10.10.101,10.10.10.102,10.10.10.103"
    listen_address: 10.10.10.101
    rpc_address: 10.0.4.101
    
  • 修改 /opt/cassandra/conf/logback.xml
    sed -i 's,\${cassandra.logdir},/var/log,' /opt/cassandra/conf/logback.xml
    
  • 修改 /opt/cassandra/conf/cassandra-env.sh
    # 這裡我暫時關閉了 jmx 遠端驗證,否則需要手動建立 jmxremote.password 檔案
    sed -i 's/jmxremote.authenticate=true/jmxremote.authenticate=false/' /opt/cassandra/conf/cassandra-env.sh
    
  • 修改 cassandra 目錄的許可權
    chown -R cassandra.cassandra cassandra/
    
  • 打包 cassandra 目錄,部署到 cassandra102 和 cassandra103 的 /opt 下,並修改 cassandra.yaml
    # cassandra102
    listen_address: 10.10.10.102
    rpc_address: 10.0.4.102
    # cassandra103
    listen_address: 10.10.10.103
    rpc_address: 10.0.4.103
    

啟動叢集

  • 啟動 cassandra 服務
    systemctl daemon-reload
    systemctl start cassandra