You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Azure环境下使用Ansible Playbook自动化Cassandra集群部署

Azure环境下用Ansible Playbook自动化部署Cassandra集群指南

前置准备

  • 安装Azure Ansible集合:
    ansible-galaxy collection install azure.azcollection
    
  • 配置Azure认证:通过服务主体设置环境变量,或在~/.azure/credentials中写入认证信息
  • 确认目标Azure VM已就绪:满足Cassandra硬件要求(建议DS3_v2及以上实例,至少4核8G内存),且同属一个虚拟网络,安全组开放以下端口:7000、7001、9042、7199

核心Playbook分步实现

1. 操作系统预配置

以Ubuntu为例完成节点基础环境配置:

- name: 配置Cassandra节点基础环境
  hosts: cassandra_nodes
  become: yes
  tasks:
    - name: 关闭UFW防火墙
      ufw:
        state: disabled
    - name: 安装依赖包
      apt:
        name: ['openjdk-11-jdk', 'apt-transport-https', 'ca-certificates']
        update_cache: yes
    - name: 设置JAVA_HOME环境变量
      lineinfile:
        path: /etc/environment
        line: 'JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64'
    - name: 同步系统时间
      apt:
        name: chrony
        state: present
    - name: 启动并启用chrony服务
      service:
        name: chrony
        state: started
        enabled: yes

2. Cassandra安装与种子节点配置

添加官方源并初始化第一个种子节点:

- name: 安装并配置Cassandra种子节点
  hosts: cassandra_seed
  become: yes
  tasks:
    - name: 添加Cassandra GPG密钥
      apt_key:
        url: https://downloads.apache.org/cassandra/KEYS
        state: present
    - name: 添加Cassandra官方源
      apt_repository:
        repo: deb https://downloads.apache.org/cassandra/debian 40x main
        state: present
        filename: cassandra
    - name: 安装Cassandra
      apt:
        name: cassandra
        state: present
    - name: 修改Cassandra核心配置
      template:
        src: templates/cassandra.yaml.j2
        dest: /etc/cassandra/cassandra.yaml
        mode: 0644
      notify: 重启Cassandra服务
  handlers:
    - name: 重启Cassandra服务
      service:
        name: cassandra
        state: restarted
        enabled: yes

模板文件cassandra.yaml.j2关键配置项:

cluster_name: 'Azure_Cassandra_Cluster'
seed_provider:
  - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
      - seeds: "{{ seed_node_ip }}"
listen_address: "{{ ansible_default_ipv4.address }}"
rpc_address: "{{ ansible_default_ipv4.address }}"
endpoint_snitch: GossipingPropertyFileSnitch

3. 集群节点加入

将剩余节点加入已初始化的集群:

- name: 将节点加入Cassandra集群
  hosts: cassandra_workers
  become: yes
  tasks:
    - name: 安装Cassandra(复用种子节点安装逻辑)
      import_tasks: tasks/install_cassandra.yml
    - name: 停止Cassandra服务(避免自动初始化单节点)
      service:
        name: cassandra
        state: stopped
    - name: 删除默认数据目录
      file:
        path: /var/lib/cassandra/data
        state: absent
    - name: 配置worker节点指向种子节点
      template:
        src: templates/cassandra.yaml.j2
        dest: /etc/cassandra/cassandra.yaml
        mode: 0644
    - name: 启动Cassandra服务并加入集群
      service:
        name: cassandra
        state: started
        enabled: yes

集群验证

  • 批量检查所有节点状态:
    ansible cassandra_nodes -m command -a "nodetool status"
    
  • 连接任意节点的CQLSH测试集群可用性:
    cqlsh <seed_node_ip> 9042
    

关键注意事项

  • Heap内存配置:根据VM内存修改/etc/cassandra/cassandra-env.sh中的MAX_HEAP_SIZE和HEAP_NEWSIZE,建议为物理内存的1/4到1/2
  • 磁盘优化:Azure VM建议使用Premium SSD存储,挂载到/var/lib/cassandra目录
  • 安全强化:生产环境需启用SSL加密节点通信,配置PasswordAuthenticator认证机制

内容的提问来源于stack exchange,提问作者harsh kumar mahour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:52:50