求助: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
相关产品推荐
相关产品推荐

