Releases: orange-cloudfoundry/cassandra-boshrelease
Cassandra Bosh Release v12
Change Apache Cassandra version to 3.11.4
Cassandra Bosh Release v11
Fixing cqlsh problem when using new stemcell Ubuntu Xenial by including Python 2.7 distro in this release
Cassandra Bosh release v10
Cassandra BOSH Release v9
New Features
- TLS encryption support (#52)
- Cassandra cluster acceptance tests. Contrarily to the Service Broker smoke tests, they don't require an existing Cloud Foundry or the service broker to be deployed (#9)
Deployment
releases:
- name: cassandra
version: "9"
url: https://github.com/orange-cloudfoundry/cassandra-boshrelease/releases/download/v9/cassandra-9.tgz
sha1: 852f38b691eb8236b94e26151ecf2716682c22d3Casandra BOSH Release v8
❗️💥Major release containing breaking changes💥❗️
New features
- Add optional BPM support. To use BPM when running the Cassandra daemon, apply the
use-bpm.ymlops file to your deployment (#34). - Support 2-nodes Cassandra clusters and 1-node “standalone” setups through the introduction of a new
system_auth_keyspace_replication_factorconfiguration property that defaults to the number of seeds in the cluster. - Rework documentation to document BOSH 2.0 usage, base deployment and ops files (#30).
- Greatly improved the documentation fo configuration properties in the
specfile of thecassandrajob, based on the current Cassandra documentation (#37). - Introduce a new effective mapping of the BOSH availability zones to Cassandra DCs and Racks (#39). Now any topology (Bosh availability zones corresponding to different DCs or different Cloud AZs) can be effectively modeled in your deployment.
- Support cluster scale-in operations, just decreasing the
instancesproperties of instance groups (#40). You could already add nodes to the cluster (scale-out operations), and now you can gracefully remove nodes. Warning: when scaling then cluster in to one sinlge node, you will experience downtime because that remaining node will be restarted while its config is re-rendered. - Simplify the default deployment manifests at maximum, removing unnecessary default values (#41)
- Introduce a new
default-vars.yamlfile to be added as a--vars-fileargument inbosh deploy, compatible with deploying in BOSH-Lite (#55) - Forked a cassandra-deployment repository for maintaining deployment manifests in a dedicated repository
- Allow updating many times the password of the admin
cassandrauser (#48) - Improved logging of
pre-start,post-startanddrainscripts (#49)
Upgrade notes
- A new cassandra-deployment is now holding the deployment files for this Cassandra BOSH Release. Go check it out! The
deploymentsubdirectory here will be deleted in versionv9. - When upgrading from a
v6or earlier version, please don't modify thecassandra_passwordat the same time. You should re-use the previous value ofcass_pwd. Failing at doing so would lead toERROR: the password for user 'cassandra' is inconsistentby thepost-startscript executions of thecassandrajob.
Breaking changes
- Renamed
cass_pwdintocassandra_password - Renamed
cass_KSPintokeystore_password - The default values for
max_heap_sizeandheap_newsizehave changed to an empty string""value, for the Cassandra-recommended calculator to apply. If you relied on the default values (of8Gand1Grespectively) previously defined, then update your deployment manifest to explicitly set these. - Any topology mapping previously defined in
topologyhas to be translated to the newbosh_to_cassandra_topology_mappingscheme. - This version drops support for the
persistent_directoryconfiguration property. Now/var/vcap/store/cassandrais hardcoded to comply with standard BOSH conventions. If you have customized this property in your deployment manifests, please go back to the default value before upgrading. For details about how to do this, you can refer to the migration path we've suggested inv3release notes below.
Minor fine-tunning changes
- Better performance heap sizes below 2GB:
- The default value of
key_cache_size_in_mbhas changed from100tonull(no impact for heap sizes above 2GB) - The default value of
file_cache_size_in_mbhas changed from512tonull(no impact for heap sizes above 2GB)
- The default value of
- The default value of
commitlog_sync_period_in_msis now back to a reasonable value of10000ms instead of2ms. The former value could have a negative impact on performances. - The default value of
concurrent_readshas been lowered from32to16to comply with the Cassandra recommendation, because Bosh-deployed Cassandra nodes only have one disk - The default value of
memtable_flush_writershas changed from1tonull(which should resolve to2in all cases) - The default value of
concurrent_compactorshas changed from4tonull(which should resolve to2in all cases) - A new
max_value_size_in_mbconfig was added, so that the existingnative_transport_max_frame_size_in_mbconfig can actually be tweaked, because it requires the former to be modified accordingly - Add new configs for
roles_validity_in_msandcredentials_validity_in_msalong the existingpermissions_validity_in_ms, for consistency
Deployment
See the standard manifests in the cassandra-deployment repository. Here is the release definition for this specific version:
releases:
- name: cassandra
version: "8"
url: https://github.com/orange-cloudfoundry/cassandra-boshrelease/releases/download/v8/cassandra-8.tgz
sha1: e8b8221f89a09f66e015d9e2356fa2d4a23d1aa9Casandra BOSH Release v7
❗️💥Skip directly to release v8💥❗️
There are issues with this release that we unfortunately missed before cutting it. Please don't use it.
Cassandra BOSH Release v6
New features
- Bumped Cassandra from version 3.9 to the latest stable version 3.11.1
- Add a separate
cqlshrcfile, specific to thecassandra-admin-toolsjob, aimed at implementing more human-friendly settings (compared to the one used by thecassandrajob that is aimed at being used by scripts)
Config properties sunset
This version is the last supporting the persistent_directory configuration property. Indeed, there is no better choice than the default /var/vcap/store/cassandra, and any other value would not work when enabling BPM anyway.
In the next release, we'll remove this property and hardcode /var/vcap/store/cassandra to comply with standard BOSH conventions. If you have customized this property in your deployment manifests, then you should plan to go back to the default value before upgrading. For details about how to do this, you can refer to the migration path we've suggested in v3 release notes below.
Cassandra BOSH Release v5
New features
- Added BOSH 2.0 base deployment manifest and related operation files.
- Added support for the new
cassandraSHIELD plugin. - New
disable_linux_swapproperty useful for Bosh-Lite support.
Breaking changes
- This BOSH release has been renamed
cassandrainstead ofcassandra39-services(that was meant to be bound to version 3.9.x of Cassandra). Please update your deployment manifests accordingly. We did our best to preserve continuity and history. For example, previous final releases can be reconstructed with the new name when checkouting the repo at thev5tag or later. - New separate
cassandra-admin-toolsjob for installing optional admin tools wrappers to deployed instances. You now need to deploy this new job if you rely on thecql-sh.shwrapper script, for example. These tools are provided for convenience, but they contain thecassandraadmin password, so they are not recommended for production because they augment the attack surface of Cassandra nodes.
Cassandra BOSH Release v4
This release adds jmx_exporter as collector to provide metrics to prometheus.
By default, the exporter is enabled. It can be disabled it with the jmx_exporter_enabled: false setting on the cassandra job:
instance_groups:
- name: cassandra-seeds
jobs:
- name cassandra:
properties:
...
jmx_exporter_enabled: false
Cassandra BOSH Release v3
This release ships a Cassandra daemon through a single cassandra job, instead of tree separate jobs previously.
The distinction between seeds and non-seeds servers is now done with separate instance groups. The seeds instance group exposes the seeds BOSH Link that all Cassandra nodes have to consume.
Here is a deployment manifest example that show how this link is exposed, self-consumed by Cassandra seeds, and consumed by other nodes:
instance_groups:
- name: cassandra-seeds
instances: 3
jobs:
- name: cassandra
provides:
seeds: { as: cluster_seeds }
consumes:
seeds: { from: cluster_seeds }
....some properties ...
- name: cassandra-servers
instances: 2
jobs:
- name: cassandra
consumes:
seeds: { from: cluster_seeds }
Breaking changes
The default value of persistent_directory is now /var/vcap/store/cassandra instead of /var/vcap/store/cassandra_{seed,server,injector} previously, depending on which of the 3 jobs you were deploying.
If you're migrating an existing cluster, you'll have tobosh ssh to each cassandra node, monit stop Cassandra, modify /var/vcap/jobs/cassandra_*/conf/cassandra.yaml and update hints_directory, data_file_directories, commitlog_directory, and saved_caches_directory to the new location, move your data, monit start cassandra. Once this is done on all cassandra nodes, you can bosh deploy your cluster with the new v3 of this release.