<div dir="ltr"><div><div><div><div><div>Just so I am clear the upgrade process will be as follows:<br><br></div>upgrade all clients to 4.0<br><br></div>rolling upgrade all servers to 4.0 (with GD1)<br><br></div>kill all GD1 daemons on all servers and run upgrade script (new clients unable to connect at this point)<br><br></div>start GD2 ( necessary or does the upgrade script do this?)</div><div><br></div><div><br></div><div>I assume that once the cluster had been migrated to GD2 the glusterd startup script will be smart enough to start the correct version?<br></div><div><br></div>-Thanks<br><br><div><br><br><div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 3 November 2017 at 04:06, Kaushal M <span dir="ltr">&lt;<a href="mailto:kshlmster@gmail.com" target="_blank">kshlmster@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Nov 2, 2017 at 7:53 PM, Darrell Budic &lt;<a href="mailto:budic@onholyground.com">budic@onholyground.com</a>&gt; wrote:<br>
&gt; Will the various client packages (centos in my case) be able to<br>
&gt; automatically handle the upgrade vs new install decision, or will we be<br>
&gt; required to do something manually to determine that?<br>
<br>
</span>We should be able to do this with CentOS (and other RPM based distros)<br>
which have well split glusterfs packages currently.<br>
At this moment, I don&#39;t know exactly how much can be handled<br>
automatically, but I expect the amount of manual intervention to be<br>
minimal.<br>
The least minimum amount of manual work needed would be enabling and<br>
starting GD2 and starting the migration script.<br>
<span class=""><br>
&gt;<br>
&gt; It’s a little unclear that things will continue without interruption because<br>
&gt; of the way you describe the change from GD1 to GD2, since it sounds like it<br>
&gt; stops GD1.<br>
<br>
</span>With the described upgrade strategy, we can ensure continuous volume<br>
access to clients during the whole process (provided volumes have been<br>
setup with replication or ec).<br>
<br>
During the migration from GD1 to GD2, any existing clients still<br>
retain access, and can continue to work without interruption.<br>
This is possible because gluster keeps the management  (glusterds) and<br>
data (bricks and clients) parts separate.<br>
So it is possible to interrupt the management parts, without<br>
interrupting data access to existing clients.<br>
Clients and the server side brick processes need GlusterD to start up.<br>
But once they&#39;re running, they can run without GlusterD. GlusterD is<br>
only required again if something goes wrong.<br>
Stopping GD1 during the migration process, will not lead to any<br>
interruptions for existing clients.<br>
The brick process continue to run, and any connected clients continue<br>
to remain connected to the bricks.<br>
Any new clients which try to mount the volumes during this migration<br>
will fail, as a GlusterD will not be available (either GD1 or GD2).<br>
<span class=""><br>
&gt; Early days, obviously, but if you could clarify if that’s what<br>
&gt; we’re used to as a rolling upgrade or how it works, that would be<br>
&gt; appreciated.<br>
<br>
</span>A Gluster rolling upgrade process, allows data access to volumes<br>
during the process, while upgrading the brick processes as well.<br>
Rolling upgrades with uninterrupted access requires that volumes have<br>
redundancy (replicate or ec).<br>
Rolling upgrades involves upgrading servers belonging to a redundancy<br>
set (replica set or ec set), one at a time.<br>
One at a time,<br>
- A server is picked from a redundancy set<br>
- All Gluster processes are killed on the server, glusterd, bricks and<br>
other daemons included.<br>
- Gluster is upgraded and restarted on the server<br>
- A heal is performed to heal new data onto the bricks.<br>
- Move onto next server after heal finishes.<br>
<br>
Clients maintain uninterrupted access, because a full redundancy set<br>
is never taken offline all at once.<br>
<span class=""><br>
&gt; Also clarification that we’ll be able to upgrade from 3.x<br>
&gt; (3.1x?) to 4.0, manually or automatically?<br>
<br>
</span>Rolling upgrades from 3.1x to 4.0 are a manual process. But I believe,<br>
gdeploy has playbooks to automate it.<br>
At the end of this you will be left with a 4.0 cluster, but still be<br>
running GD1.<br>
Upgrading from GD1 to GD2, in 4.0 will be a manual process. A script<br>
that automates this is planned only for 4.1.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt;<br>
&gt; ______________________________<wbr>__<br>
&gt; From: Kaushal M &lt;<a href="mailto:kshlmster@gmail.com">kshlmster@gmail.com</a>&gt;<br>
&gt; Subject: [Gluster-users] Request for Comments: Upgrades from 3.x to 4.0+<br>
&gt; Date: November 2, 2017 at 3:56:05 AM CDT<br>
&gt; To: <a href="mailto:gluster-users@gluster.org">gluster-users@gluster.org</a>; Gluster Devel<br>
&gt;<br>
&gt; We&#39;re fast approaching the time for Gluster-4.0. And we would like to<br>
&gt; set out the expected upgrade strategy and try to polish it to be as<br>
&gt; user friendly as possible.<br>
&gt;<br>
&gt; We&#39;re getting this out here now, because there was quite a bit of<br>
&gt; concern and confusion regarding the upgrades between 3.x and 4.0+.<br>
&gt;<br>
&gt; ---<br>
&gt; ## Background<br>
&gt;<br>
&gt; Gluster-4.0 will bring a newer management daemon, GlusterD-2.0 (GD2),<br>
&gt; which is backwards incompatible with the GlusterD (GD1) in<br>
&gt; GlusterFS-3.1+.  As a hybrid cluster of GD1 and GD2 cannot be<br>
&gt; established, rolling upgrades are not possible. This meant that<br>
&gt; upgrades from 3.x to 4.0 would require a volume downtime and possible<br>
&gt; client downtime.<br>
&gt;<br>
&gt; This was a cause of concern among many during the recently concluded<br>
&gt; Gluster Summit 2017.<br>
&gt;<br>
&gt; We would like to keep pains experienced by our users to a minimum, so<br>
&gt; we are trying to develop an upgrade strategy that avoids downtime as<br>
&gt; much as possible.<br>
&gt;<br>
&gt; ## (Expected) Upgrade strategy from 3.x to 4.0<br>
&gt;<br>
&gt; Gluster-4.0 will ship with both GD1 and GD2.<br>
&gt; For fresh installations, only GD2 will be installed and available by<br>
&gt; default.<br>
&gt; For existing installations (upgrades) GD1 will be installed and run by<br>
&gt; default. GD2 will also be installed simultaneously, but will not run<br>
&gt; automatically.<br>
&gt;<br>
&gt; GD1 will allow rolling upgrades, and allow properly setup Gluster<br>
&gt; volumes to be upgraded to 4.0 binaries, without downtime.<br>
&gt;<br>
&gt; Once the full pool is upgraded, and all bricks and other daemons are<br>
&gt; running 4.0 binaries, migration to GD2 can happen.<br>
&gt;<br>
&gt; To migrate to GD2, all GD1 processes in the cluster need to be killed,<br>
&gt; and GD2 started instead.<br>
&gt; GD2 will not automatically form a cluster. A migration script will be<br>
&gt; provided, which will form a new GD2 cluster from the existing GD1<br>
&gt; cluster information, and migrate volume information from GD1 into GD2.<br>
&gt;<br>
&gt; Once migration is complete, GD2 will pick up the running brick and<br>
&gt; other daemon processes and continue. This will only be possible if the<br>
&gt; rolling upgrade with GD1 happened successfully and all the processes<br>
&gt; are running with 4.0 binaries.<br>
&gt;<br>
&gt; During the whole migration process, the volume would still be online<br>
&gt; for existing clients, who can still continue to work. New clients will<br>
&gt; not be possible during this time.<br>
&gt;<br>
&gt; After migration, existing clients will connect back to GD2 for<br>
&gt; updates. GD2 listens on the same port as GD1 and provides the required<br>
&gt; SunRPC programs.<br>
&gt;<br>
&gt; Once migrated to GD2, rolling upgrades to newer GD2 and Gluster<br>
&gt; versions. without volume downtime, will be possible.<br>
&gt;<br>
&gt; ### FAQ and additional info<br>
&gt;<br>
&gt; #### Both GD1 and GD2? What?<br>
&gt;<br>
&gt; While both GD1 and GD2 will be shipped, the GD1 shipped will<br>
&gt; essentially be the GD1 from the last 3.x series. It will not support<br>
&gt; any of the newer storage or management features being planned for 4.0.<br>
&gt; All new features will only be available from GD2.<br>
&gt;<br>
&gt; #### How long will GD1 be shipped/maintained for?<br>
&gt;<br>
&gt; We plan to maintain GD1 in the 4.x series for at least a couple of<br>
&gt; releases, at least 1 LTM release. Current plan is to maintain it till<br>
&gt; 4.2. Beyond 4.2, users will need to first upgrade from 3.x to 4.2, and<br>
&gt; then upgrade to newer releases.<br>
&gt;<br>
&gt; #### Migration script<br>
&gt;<br>
&gt; The GD1 to GD2 migration script and the required features in GD2 are<br>
&gt; being planned only for 4.1. This would technically mean most users<br>
&gt; will only be able to migrate from 3.x to 4.1. But users can still<br>
&gt; migrate from 3.x to 4.0 with GD1 and get many bug fixes and<br>
&gt; improvements. They would only be missing any new features. Users who<br>
&gt; live on the edge, should be able to the migration manually in 4.0.<br>
&gt;<br>
&gt; ---<br>
&gt;<br>
&gt; Please note that the document above gives the expected upgrade<br>
&gt; strategy, and is not final, nor complete. More details will be added<br>
&gt; and steps will be expanded upon, as we move forward.<br>
&gt;<br>
&gt; To move forward, we need your participation. Please reply to this<br>
&gt; thread with any comments you have. We will try to answer and solve any<br>
&gt; questions or concerns. If there a good new ideas/suggestions, they<br>
&gt; will be integrated. If you just like it as is, let us know any way.<br>
&gt;<br>
&gt; Thanks.<br>
&gt;<br>
&gt; Kaushal and Gluster Developers.<br>
&gt; ______________________________<wbr>_________________<br>
&gt; Gluster-users mailing list<br>
&gt; <a href="mailto:Gluster-users@gluster.org">Gluster-users@gluster.org</a><br>
&gt; <a href="http://lists.gluster.org/mailman/listinfo/gluster-users" rel="noreferrer" target="_blank">http://lists.gluster.org/<wbr>mailman/listinfo/gluster-users</a><br>
&gt;<br>
&gt;<br>
</div></div><div class="HOEnZb"><div class="h5">______________________________<wbr>_________________<br>
Gluster-devel mailing list<br>
<a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
<a href="http://lists.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://lists.gluster.org/<wbr>mailman/listinfo/gluster-devel</a></div></div></blockquote></div><br></div>