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