Also before you get started. Make sure:
1) no one attempts to change schema during the process
2) no one attempts to run a repair
3) no one attempts to join a node
4) no one attempts to remove/move nodes from the cluster

Each of these things trigger repair sessions and stream data which do not
work in a mix cluster

On Thu, Dec 22, 2016 at 3:07 PM, Aiman Parvaiz <ai...@steelhouse.com> wrote:

> Thanks Alain. This was extremely helpful, really grateful.
>
> Aiman
>
> On Dec 22, 2016, at 5:00 AM, Alain RODRIGUEZ <arodr...@gmail.com> wrote:
>
> Hi,
>
> Here are some thoughts:
>
> running 1.2.18. I plan to upgrade them to 2.2.latest
>>
>
> Going 1 major release at the time is probably the safest way to go indeed.
>
>
>>    1. Install 2.0.latest on one node at a time, start and wait for it to
>>    join the ring.
>>    2. Run upgradesstables on this node.
>>    3. Repeat Step 1,2 on each node installing cassandra2.0 in a rolling
>>    manner and running upgradesstables in parallel. (Please let me know if
>>    running upgrades stables in parallel is not right here. My cluster is not
>>    under much load really)
>>
>>
> I would:
>
> - Upgrade one node, check for cluster health (monitoring, logs, nodeool
> commands), having a special attention to the 2.0 node.
> - If everything is ok, then go for more nodes, if using distinct racks I
> would go per rack; sequentially, node per node, all the nodes from
> DC1-rack1, then DC1-rack2, then DC1-rack3. Then move to the next DC if
> everything is fine.
> - Start the 'upgradesstables' when the cluster is completely and
> successfully running with the new version (2.0.17). It is perfectly fine to
> run this in parallel as the last part of the upgrade. As you guessed, it is
> good to keep monitoring the cluster load.
>
> 4. Now I will have both my DCs running 2.0.latest.
>
>
> Without really having any strong argument, I would let it run for "some
> time" like this, hours at least, maybe days. In any case, you will probably
> have some work to prepare before the next upgrade, so you will have time to
> check how the cluster is doing.
>
> 6. Do I need to run upgradesstables here again after the node has started
>> and joined? (I think yes, but seek advice. https://docs.datastax.
>> com/en/latest-upgrade/upgrade/cassandra/upgrdCassandra.html)
>
>
> Yes, every time you run a major upgrade. Anyway, nodetool upgradesstables
> will skip any sstable that do not need to be upgraded (as long as you don't
> add the option to force it), so it is probably better to run it when you
> have a doubt.
>
>
> As additional information, I would prepare, for each upgrade:
>
>
>    - The new Cassandra configuration (cassandra.yaml and
>    cassandra-sh.yaml mainly but also other configuration files)
>
>    To do that, I use to merge the current file in use (your configuration
>    on C* 1.2.18) and the Cassandra version file from github for the new
>    version (i.e. https://github.com/apache/cassandra/tree/
>    cassandra-2.0.17/conf).
>
>    This allows you to
>       - Acknowledge and consider the new and removed configuration
>       settings
>       - Keep comments and default values in the configuration files up to
>       date
>       - Be fully exhaustive, and learn as you parse the files
>
>       - Make sure clients will still work with the new version (see the
>    doc, do the tests)
>    - Cassandra metrics changed in the latest versions, you might have to
>    rework your dashboards. Anticipating the dashboard creation for new
>    versions would prevent you from loosing metrics when you need them the 
> most.
>
>
> Finally keep in mind that you should not perform any streaming while
> running multiple version and as long as 'nodetool upgradesstables' is not
> completely done. Meaning you should not add, remove, replace, move or
> repair a node. Also, I would limit schema changes as much as possible while
> running multiple versions as it caused troubles in the past.
>
> During an upgrade, almost nothing else than the normal load due to the
> service and the upgrade itself should happen. We always try to keep this
> time window as short as possible.
>
> C*heers,
> -----------------------
> Alain Rodriguez - @arodream - al...@thelastpickle.com
> France
>
> The Last Pickle - Apache Cassandra Consulting
> http://www.thelastpickle.com
>
> 2016-12-21 20:36 GMT+01:00 Aiman Parvaiz <ai...@steelhouse.com>:
>
>> Hi everyone,
>> I have 2 C* DCs with 12 nodes in each running 1.2.18. I plan to upgrade
>> them to 2.2.latest and wanted to run by you experts my plan.
>>
>>
>>    1. Install 2.0.latest on one node at a time, start and wait for it to
>>    join the ring.
>>    2. Run upgradesstables on this node.
>>    3. Repeat Step 1,2 on each node installing cassandra2.0 in a rolling
>>    manner and running upgradesstables in parallel. (Please let me know if
>>    running upgrades stables in parallel is not right here. My cluster is not
>>    under much load really)
>>    4. Now I will have both my DCs running 2.0.latest.
>>    5. Install cassandra 2.1.latest on one node at a time (same as above)
>>    6. Do I need to run upgradesstables here again after the node has
>>    started and joined? (I think yes, but seek advice.
>>    https://docs.datastax.com/en/latest-upgrade/upgrade/
>>    cassandra/upgrdCassandra.html
>>    
>> <https://docs.datastax.com/en/latest-upgrade/upgrade/cassandra/upgrdCassandra.html>
>>    )
>>    7. Following the above pattern, I would install cassandra2.1 in a
>>    rolling manner across 2 DCs (depending on response to 6 I might or might
>>    not run upgradesstables)
>>    8. At this point both DCs would have 2.1.latest and again in rolling
>>    manner I install 2.2.8.
>>
>>
>> My assumption is that while this upgrade would be happening C* would
>> still be able to serve reads and writes and running different versions at
>> various point in the upgrade process will not affect the apps
>> reading/writing from C*.
>>
>> Thanks
>>
>>
>
>

Reply via email to