{"id":8087,"date":"2016-05-30T06:13:02","date_gmt":"2016-05-30T04:13:02","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/"},"modified":"2023-07-17T14:57:21","modified_gmt":"2023-07-17T12:57:21","slug":"windows-failover-cluster-introduction-to-paxos-tag","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/","title":{"rendered":"Windows Failover Cluster : Introduction to paxos tag"},"content":{"rendered":"<p>A couple of days ago, I was in charge to install a new SQL Server AlwaysOn and availability group with one of my colleague <a href=\"http:\/\/dbi-services.com\/blog\/author\/nathan-courtine\/\" target=\"_blank\" rel=\"noopener noreferrer\">Nathan Courtine<\/a>. During the installation, we talked about testing a disaster recovery scenario where we have to restart the Windows Failover cluster in forced quorum mode.<\/p>\n<p>Restarting a WSFC in such mode implies some internal stuff especially for the cluster database data synchronization between nodes. The WSFC uses internally the paxos algorithm to synchronize and guarantee consistency across distributed systems. But what is paxos concretely? To be honest, I already saw some records inside a generated cluster log but I never cared about it. But as usual my curiosity led me to investigate further and I learn some very interesting stuff from <a href=\"http:\/\/research.microsoft.com\/users\/lamport\/pubs\/paxos-simple.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">2001 paper Paxos Made Simple<\/a> and from other pointers on the internet. Just to be clear, I\u2019m not claiming to master completely this protocol and this is simply my attempt to demystify the subject.<\/p>\n<p>So let\u2019s begin with the introduction of some important concepts to understand:<\/p>\n<p>First of all, Paxos is an algorithm for agreeing a value (in other words a configuration change in our case) across a cluster using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Atomic_broadcast\" target=\"_blank\" rel=\"noopener noreferrer\">atomic broadcast<\/a>. This is known as the consensus problem which is described in this Paxos Paper. In short, this algorithm lets a majority of nodes agree one value at a time.<\/p>\n<p>According to this <a href=\"https:\/\/support.microsoft.com\/en-us\/kb\/947713\" target=\"_blank\" rel=\"noopener noreferrer\">KB947713<\/a> we may read that the WSFC uses a paxos tag that consists of three numbers with the following format:<\/p>\n<p>&lt;NetxEpoch number&gt;:&lt;LastUpdateEpoch number&gt;:&lt;sequence number&gt;.<\/p>\n<p>Let\u2019s have a focus on the last part. The KB947713 says:<\/p>\n<p><strong><em>Each time the configuration is changed every time that an update is made to the cluster configuration. The synchronization process in a cluster sends out a proposal to all the nodes in the cluster. The proposal consists of a sequence number and a proposal number.<\/em><\/strong><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">Why a proposal number here? In the next part of this blog post I will discuss how important this concept <\/span>may be <span style=\"color: #000000;\">but at the moment, let\u2019s go back to the paxos algorithm protocol and let\u2019s see how it works. In fact, we may <\/span>identify <span style=\"color: #000000;\">two distinct phases in this protocol:<\/span><\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><span style=\"color: #000000; font-family: Calibri;\">Phase 1:<\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">A proposer will send a proposal (prepare message) to a set of acceptors in the form of a proposal {Sequence, Number}. The concerned acceptors acknowledge that they guarantee that once the proposal is accepted, they cannot accepted any more proposals numbered less than n. <\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><span style=\"color: #000000; font-family: Calibri;\">Phase 2:<\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Once the proposer obtains the required consensus from the majority of nodes (we don\u2019t need to get responses from all the nodes here), it will choose in turn a value (if no acceptors are already accept proposals with value) and will broadcast an accept message to the corresponding acceptors to commit the value. Finally, the acceptors acknowledge the leadership of the proposer. Note that in the cluster implementation a leader plays both the roles proposer and learner. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8922 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950.jpg\" alt=\"blog 92 - 01 - proposal and accept scenario\" width=\"500\" height=\"141\" \/><\/p>\n<p>What about having two proposers at a time here? In fact, Paxos is designed to protect against this kind of scenario that may lead to a situation where each proposer keeps issuing a sequence of proposals with increasing numbers, none of them is ever chosen because, as you remember, the corresponding acceptors will refuse them (no promise or no accept acknowledgement because of a new higher proposal). It addresses this scenario by electing one distinguished proposer to communicate with a set of acceptors at a time.<\/p>\n<p>Let\u2019s now continue by introducing a little bit more complexity with a distributed scenario where failures may occur at different time of the paxos protocol. For those who work with distributed environments, failures may occur more than expected. For example, we may face disruptive network issues that lead to missing messages from nodes in the paxos phases or acceptors \/ proposers that fail. We may also have to deal with failover scenarios (either planned or unplanned).<\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">So we need a protocol that is both fail-stop and fail-recover resilient algorithm. These scenarios are handle by the Paxos phases design. Indeed, in case of a leader failure, sending a prepare-to-commit request allows any participant to take over the role of the new leader and query the state from other nodes. If any acceptor reports to the new leader that it has not received the \u201cprepare to commit\u201d message, the latter knows that the transaction has not been committed at any acceptor. Now either the transaction can be pessimistically aborted, or the protocol instance can be re-run. In the same manner, if an acceptor that has committed the transaction crashes, we know that every other acceptors would have received and acknowledged the prepare-to-commit message since otherwise the coordinator would not have moved to the commit phase. So the coordinator can proceed with the last phase.<\/span><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">We should also take into account cluster network partition scenarios. Paxos is partition tolerant because it requires a consensus from a node majority. So a partition that cannot come to a consensus <\/span>needs <span style=\"color: #000000;\">to accept value from other partitions when they merge back. <\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Behind the scene, Paxos will handle failures by implementing a machine state system where each component may play all roles (proposer, learner and acceptor). <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Paxos_(computer_science)#Message_flow:_Basic_Paxos.2C_failure_of_Acceptor\"><span style=\"color: #0563c1; font-family: Calibri;\">Multi-paxos protocol<\/span><\/a><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\"> will be used across the system to guarantee that all server will execute the same sequence of the same machine. We may think this concept <\/span>is <span style=\"color: #000000;\">similar to a database transaction log where operations are written sequentially and in order.<\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Let\u2019s describe how Paxos deals with different kind of failures. In order to facilitate understanding the protocol, I voluntary simplified the process. For example, I always assume that the consensus is correctly made when a proposer send a proposal to a set of acceptors. In addition, I illustrate each scenario with only one leader and one proposer and I obviously image that the scenario is not as simple in all cases. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Firstly, let\u2019s say an acceptor missed an accept message from the proposer caused by a network failure in my case. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8926\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-02-follower-and-missed-accept-messages-e1464587156750.jpg\" alt=\"blog 92 - 02 - follower and missed accept messages\" width=\"600\" height=\"157\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">The acceptor may ask the retransmission of the concerned message to the leader for a particular sequence of the state machine. Optionally, the concerned acceptor may also request additional accept messages in the same time to keep it up-to-date. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8927\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-03-follower-and-missed-accept-messages-e1464587319727.jpg\" alt=\"blog 92 - 03 - follower and missed accept messages\" width=\"600\" height=\"157\" \/><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">Let\u2019s now have a look at the failures about the leader. When a new leader is mandated, the system must firstly prevent the older leader (which may have recovered from failure and think it is still the leader) from disrupting consensus once it is reached. Remember that in this case the system guarantee that only one distinguish leader must <\/span>propose <span style=\"color: #000000;\">values. <\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">When a node is mandated as a new leader (which acts as a learner in all instances of the consensus algorithm) it should be aware of commands already committed from the older one as well as other uncommitted slots. The process may be different here regarding if the new leader is aware or not of uncommitted slots it has to fix. But let\u2019s deal with the scenario where it is aware of uncommitted commands. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8928\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-04-new-sender-and-known-uncommitted-slots-e1464587391933.jpg\" alt=\"blog 92 - 04 - new sender and known uncommitted slots\" width=\"600\" height=\"157\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">You may see an uncommitted command at slot 3. The consensus was made for the concerned proposal but old leader didn\u2019t send the corresponding value (probably caused by a failure) leaving the command uncommitted. Then a new leader has been elected and it should fix all uncommitted slots from the old leader.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8930\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-05-new-sender-and-known-uncommitted-slots-e1464587590542.jpg\" alt=\"blog 92 - 05 - new sender and known uncommitted slots\" width=\"600\" height=\"210\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">For that, it must send new fresh proposal to get info from the acceptors that will respond by sending the highest uncommitted proposal along the slot position. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8931\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-051-new-sender-and-known-uncommitted-slots-e1464587673687.jpg\" alt=\"blog 92 - 051 - new sender and known uncommitted slots\" width=\"600\" height=\"200\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">At this point, assuming the consensus was made for the set of acceptors, the proposer then broadcasts an accept message with the corresponding value and fix all the uncommitted proposals in the slot. <\/span><span style=\"color: #000000; font-family: Calibri;\">Of course, the process is a little bit more complex with probably other many failure and recovery scenarios as well as some additional optimizations. But we get the basics here. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">So now let\u2019s go back to the WSFC. Several components are involved to manage the global cluster configuration. Firstly the database manager (DM) on each cluster node stores a local copy of the cluster configuration. Each configuration change is handled by the database manager that uses in turn the global update manager (GUM) to broadcast changes to other nodes. DM uses paxos tag to coordinate and guarantee the consistency of the cluster configuration across all the nodes. The GUM guarantees changes are mare atomically either all healthy nodes are updated, or none are updated. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">So let me show you how the WSFC deals with a node join operation (WIN20121 is the existing cluster node and WIN20122 node is added in my case) by taking a look at the cluster log. I firstly changed the log level from 3 to 5 to add INFO and DEBUG messages. Indeed, such information is not recorded by default into the cluster.log.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8934\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-10-cluster-join-win20122-e1464587792791.jpg\" alt=\"blog 92 - 10 - cluster join win20122\" width=\"800\" height=\"118\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Here the WIN20111 cluster node is the current the leader of the distributed topology. The current epoch number is 0 because this is the first time the cluster is formed. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8935\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-12-cluster-join-win20122-e1464587878741.jpg\" alt=\"blog 92 - 12 - cluster join win20122\" width=\"800\" height=\"263\" \/><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">On the other side, WIN20122 starts up with an initial configuration that uses the same epoch number. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8936\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-13-cluster-join-win20122-e1464587940250.jpg\" alt=\"blog 92 - 13 - cluster join win20122\" width=\"775\" height=\"63\" \/><\/p>\n<p>We may notice here the current paxos tag is 0:0:0 meaning that no changes occurred yet.\u00a0A new transaction is then started by the database manager.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8937\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-14-cluster-join-win20122-e1464588020973.jpg\" alt=\"blog 92 - 14 - cluster join win20122\" width=\"800\" height=\"117\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8938\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-16-cluster-join-win20122-e1464588066888.jpg\" alt=\"blog 92 - 16 - cluster join win20122\" width=\"800\" height=\"148\" \/><\/p>\n<p>The paxos algorithm is in action here and we may notice the phase 2 of the protocol. The leader is sending an accept message for each proposal (P, V)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8939\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-17-cluster-join-win20122-e1464588113521.jpg\" alt=\"blog 92 - 17 - cluster join win20122\" width=\"800\" height=\"120\" \/><\/p>\n<p>And finally we may see the paxos commit phase from the new joining node. The paxos tag value is incremented by 1 and new value is 0:0:1.<\/p>\n<p>In this final section, I just want to cover briefly a misconception about file share witness (FSW). I often heard that the witness (regardless its type) stores the cluster configuration. This is true only when we talk about disk witness. However, file share witness stores only store the last paxos tag in the witness.log file.<\/p>\n<p>Let\u2019s take a look at the cluster.log when joining a new FSW.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8943\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-180-FSW-epoch-data-e1464588399122.jpg\" alt=\"blog 92 - 180 - FSW epoch data\" width=\"800\" height=\"81\" \/><\/p>\n<p>&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8944\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-181-FSW-epoch-data-e1464588443683.jpg\" alt=\"blog 92 - 181 - FSW epoch data\" width=\"800\" height=\"179\" \/><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">Firstly, the system must acquire a lock <\/span>on <span style=\"color: #000000;\">the witness log. It then compares paxos tag between the leader and the FSW. In this case it writes the more recent paxos tag value into the witness file (FSWITNESS_SET_EPOCH_INFO) with a payload of 88 bytes. We may notice the size of the file witness.log corresponds to the payload size as shown below:<\/span><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8945\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-19-FSW-epoch-data.jpg\" alt=\"blog 92 - 19 - FSW epoch data\" width=\"579\" height=\"259\" \/><\/p>\n<p>Hope this article will help to demystify the paxos basis. <span style=\"color: #000000; font-family: Calibri;\">Happy clustering!<\/span><\/p>\n<p>By David Barbarin<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A couple of days ago, I was in charge to install a new SQL Server AlwaysOn and availability group with one of my colleague Nathan Courtine. During the installation, we talked about testing a disaster recovery scenario where we have to restart the Windows Failover cluster in forced quorum mode. Restarting a WSFC in such [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":8103,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,42],"tags":[84,843,749,844,750],"type_dbi":[],"class_list":["post-8087","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-operating-systems","tag-high-availability","tag-paxos","tag-windows-failover-cluster","tag-witness","tag-wsfc"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Windows Failover Cluster : Introduction to paxos tag<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Windows Failover Cluster : Introduction to paxos tag\" \/>\n<meta property=\"og:description\" content=\"A couple of days ago, I was in charge to install a new SQL Server AlwaysOn and availability group with one of my colleague Nathan Courtine. During the installation, we talked about testing a disaster recovery scenario where we have to restart the Windows Failover cluster in forced quorum mode. Restarting a WSFC in such [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-30T04:13:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-17T12:57:21+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"141\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"Windows Failover Cluster : Introduction to paxos tag\",\"datePublished\":\"2016-05-30T04:13:02+00:00\",\"dateModified\":\"2023-07-17T12:57:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\"},\"wordCount\":1762,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg\",\"keywords\":[\"High availability\",\"paxos\",\"windows failover cluster\",\"witness\",\"WSFC\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\",\"name\":\"Windows Failover Cluster : Introduction to paxos tag\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg\",\"datePublished\":\"2016-05-30T04:13:02+00:00\",\"dateModified\":\"2023-07-17T12:57:21+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg\",\"width\":500,\"height\":141},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Windows Failover Cluster : Introduction to paxos tag\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Windows Failover Cluster : Introduction to paxos tag","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/","og_locale":"en_US","og_type":"article","og_title":"Windows Failover Cluster : Introduction to paxos tag","og_description":"A couple of days ago, I was in charge to install a new SQL Server AlwaysOn and availability group with one of my colleague Nathan Courtine. During the installation, we talked about testing a disaster recovery scenario where we have to restart the Windows Failover cluster in forced quorum mode. Restarting a WSFC in such [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/","og_site_name":"dbi Blog","article_published_time":"2016-05-30T04:13:02+00:00","article_modified_time":"2023-07-17T12:57:21+00:00","og_image":[{"width":500,"height":141,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"Windows Failover Cluster : Introduction to paxos tag","datePublished":"2016-05-30T04:13:02+00:00","dateModified":"2023-07-17T12:57:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/"},"wordCount":1762,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg","keywords":["High availability","paxos","windows failover cluster","witness","WSFC"],"articleSection":["Database Administration &amp; Monitoring","Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/","url":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/","name":"Windows Failover Cluster : Introduction to paxos tag","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg","datePublished":"2016-05-30T04:13:02+00:00","dateModified":"2023-07-17T12:57:21+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-92-01-proposal-and-accept-scenario-e1464586149950-1.jpg","width":500,"height":141},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/windows-failover-cluster-introduction-to-paxos-tag\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Windows Failover Cluster : Introduction to paxos tag"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=8087"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8087\/revisions"}],"predecessor-version":[{"id":26745,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8087\/revisions\/26745"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/8103"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=8087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=8087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=8087"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=8087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}