{"id":9693,"date":"2017-01-15T17:39:17","date_gmt":"2017-01-15T16:39:17","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/"},"modified":"2023-07-18T07:38:35","modified_gmt":"2023-07-18T05:38:35","slug":"introducing-high-availability-with-sql-server-on-linux","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/","title":{"rendered":"Introducing high-availability with SQL Server on Linux"},"content":{"rendered":"<p><span style=\"color: #000000; font-family: Calibri;\">A couple of months ago, I did my first installation of SQL Server on Linux. I wrote about it in this <\/span><a href=\"http:\/\/dbi-services.com\/blog\/first-installation-of-sql-server-on-linux-rehl-7-2\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">blog post<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\">. So now it\u2019s time to start the new year by talking about high availability on Linux with SQL Server vNext. Running standalone instances will be suitable for scenarios but I guess introducing high-availability with critical environments still remain mandatory.Currently, the CTP1 supports installing a <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/sql-server-linux-shared-disk-cluster-red-hat-7-configure\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">SQL Server Failover Cluster Instance<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\"> on the top of RHEL HA Add-on based on Pacemaker. This is a good start although I hope to see also availability groups in the future (maybe a future CTP version). In this blog post I will not go into details of my installation process because some steps will certainly change over the time but I would like to share my notes (or feelings) about this new way to achieve high availability with SQL Server on Linux world. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">I performed the installation by using the same infrastructure exposed on the Microsoft documentation. As usual, my environment is fully virtualized with Hyper-V. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-14260 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238.jpg\" alt=\"blog 114 - 1 - sql linux fci architecture\" width=\"400\" height=\"319\" \/><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">So, the first step consisted in installing 3 virtual machines based on a CentOS 7 distribution (the Microsoft documentation is intended\u00a0to RHEL 7 but CentOS 7\u00a0is perfectly\u00a0suitable in our case). The first two ones concerned the cluster and SQL Server. I performed the same <\/span><a href=\"http:\/\/dbi-services.com\/blog\/first-installation-of-sql-server-on-linux-rehl-7-2\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">installation process<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\"> to install SQL Server on Linux. No change here. The third one concerned the NFS server. So let\u2019s show my storage configuration:<\/span><\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@nfs ~]$ sudo fdisk -l | grep -i sd\nDisk \/dev\/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors\n\/dev\/sda1   *        2048     2099199     1048576   83  Linux\n\/dev\/sda2         2099200    41943039    19921920   8e  Linux LVM\nDisk \/dev\/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors\n\/dev\/sdb1            2048    20971519    10484736   83  Linux\nDisk \/dev\/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors\n\/dev\/sdc1            2048    20971519    10484736   83  Linux<\/pre>\n<p>The corresponding partition <em>\/dev\/sdb1<\/em> (ext4 formatted) need to be mounted automatically by the system and will be used as a shared storage by the NFS server afterwards.<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@nfs ~]$ cat \/etc\/fstab\n#\n# \/etc\/fstab\n# Created by anaconda on Thu Jan 12 21:46:34 2017\n#\n\u2026\n\n\/dev\/mapper\/cl-root     \/                       xfs     defaults        0 0\nUUID=e4f5fc0b-1fd4-4e18-b655-a76b87778b73 \/boot                   xfs     defaults        0 0\n\/dev\/mapper\/cl-swap     swap                    swap    defaults        0 0\n\/dev\/sdb1       \/mnt\/sql_data_nfs       ext4    auto,user,rw    0 0\n\/dev\/sdc1       \/mnt\/sql_log_nfs        ext4    auto,user,rw    0 0<\/pre>\n<p>Then my NFS server will expose the shared directory <em>\/mnt\/sql_data_nfs <\/em>to the cluster layer.<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@nfs ~]$ cat \/etc\/exports\n\/mnt\/sql_data_nfs 192.168.5.0\/24(rw,sync,no_subtree_check,no_root_squash)\n\/mnt\/sql_log_nfs  192.168.5.0\/24(rw,sync,no_subtree_check,no_root_squash)<\/pre>\n<p>We will focus only on the directory \/mnt\/sql_data_nfs in this case.<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@nfs ~]$ showmount -e\nExport list for nfs.dbi-services.com:\n\/mnt\/sql_log_nfs  192.168.5.0\/24\n\/mnt\/sql_data_nfs 192.168.5.0\/24<\/pre>\n<p><span style=\"color: #000000; font-family: Calibri;\">That\u2019s it. My directory is ready to be used by my SQL Server cluster nodes as shared storage for my databases. Let\u2019s continue with the second step. We need to install the cluster underlying infrastructure which includes components as Pacemaker (the resource manager) and Corosync (Communication layer between cluster nodes). <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14262\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-2-packemaker-architecture.jpg\" alt=\"blog 114 - 2 - packemaker architecture\" width=\"384\" height=\"241\" \/><\/p>\n<p><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 From Microsoft <\/em><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/sql-server-linux-shared-disk-cluster-red-hat-7-configure\" target=\"_blank\" rel=\"noopener noreferrer\"><em>documentation<\/em><\/a><\/p>\n<p>By reading the Pacemaker documentation on the web, I could find out similar concepts we may have with Microsoft and the Windows Failover Cluster feature. After facing some configuration issues, here my final configuration.<\/p>\n<ul>\n<li>Two cluster nodes (linux01.dbi-services.test \/ linux02.dbi-services.test)<\/li>\n<li>Two resources that concern my SQL Server FCI (sqllinuxfci resource + virtualip resource)<\/li>\n<\/ul>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@linux01 ~]$ sudo pcs status\n\nCluster name: linux_cluster\nStack: corosync\nCurrent DC: linux01.dbi-services.test (version 1.1.15-11.el7_3.2-e174ec8) - partition with quorum\n\nLast updated: Sat Jan 14 19:53:55 2017          Last change: Sat Jan 14 17:28:36 2017 \nby root via crm_resource on linux01.dbi-services.test\n\n2 nodes and 2 resources configured\n\nOnline: [ linux01.dbi-services.test linux02.dbi-services.test ]\n\nFull list of resources:\n\n sqllinuxfci    (ocf::sql:fci): Started linux02.dbi-services.test\n virtualip      (ocf::heartbeat:IPaddr2):       Started linux02.dbi-services.test\n\n...\n\nDaemon Status:\n  corosync: active\/enabled\n  pacemaker: active\/enabled\n  pcsd: active\/enabled<\/pre>\n<p>As said previously, I faced some issues during the cluster installation process. The first one concerned a typo in the Microsoft documentation (at least the command did not work in my case). I was not able to create my SQL Server resource after installing the mssql-server-ha package. Indeed, according to Microsoft documentation we need to create a SQL Server resource based on the <strong><em>ocf:mssql:fci<\/em><\/strong> resource agent. However, after some investigations, I was able to figure out that this definition doesn\u2019t exist according to the current OCF resource agent folder hierarchy (see below). In my case, I had to change the definition by <strong><em>ocf:sql:fci<\/em><\/strong><\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@linux01 ~]$ ls -l \/usr\/lib\/ocf\/resource.d\/\n\ntotal 16\ndrwxr-xr-x. 2 root root 4096 Jan 12 19:31 heartbeat\ndrwxr-xr-x. 2 root root 4096 Jan 12 19:31 openstack\ndrwxr-xr-x. 2 root root 4096 Jan 12 19:31 pacemaker\ndrwxr-xr-x. 2 root root 4096 Jan 14 10:55 sql\n\n[mikedavem@linux01 ~]$ ls -l \/usr\/lib\/ocf\/resource.d\/sql\/\ntotal 20\n-rw-r--r--. 1 root root  3473 Jan 14 10:58 cfg\n-rwxr-xr-x. 1 root root 15979 Dec 16 02:09 fci<\/pre>\n<p>Let\u2019s say it was also a good opportunity to understand what an OCF resource agent is. First coming from the Microsoft world, I figured out quickly the OCF resource agents correspond in fact to what we call the Windows Failover Cluster DLL resources. In addition, according to <a href=\"http:\/\/www.linux-ha.org\/doc\/dev-guides\/ra-dev-guide.html\" target=\"_blank\" rel=\"noopener noreferrer\">linux documentation<\/a>, I noticed similar concepts like functions and entry points that a Windows resource DLL is expected to implement. Very interesting!<\/p>\n<p>The second issue concerned a strange behavior when the failover of my SQL Server resource occurred. I first noticed the following messages:<\/p>\n<p><em><strong>Failed Actions:<\/strong><\/em><br \/>\n<em><strong>* sqllinuxfci_start_0 on linux02.dbi-services.test &#8216;unknown error&#8217; (1): call=16, status=complete, exitreason=&#8217;SQL server crashed during startup.&#8217;,<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0 last-rc-change=&#8217;Sat Jan 14 17:35:30 2017&#8242;, queued=0ms, exec=34325ms<\/strong><\/em><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Then I moved on the SQL Server error log to try to find out some clues about this issue (SQL Server error log is always your friend in this case)<\/span><\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@linux01 sql]$ sudo cat \/var\/opt\/mssql\/log\/errorlog\n\n\n2017-01-14 14:38:55.50 spid5s      Error: 17204, Severity: 16, State: 1.\n2017-01-14 14:38:55.50 spid5s      FCB::Open failed: Could not open file C:\\var\\opt\\mssql\\data\\mastlog.ldf for file number 2.  OS error: 2(The system cannot find the file specified.).\n2017-01-14 14:38:55.50 spid5s      Error: 5120, Severity: 16, State: 101.\n2017-01-14 14:38:55.50 spid5s      Unable to open the physical file \"C:\\var\\opt\\mssql\\data\\mastlog.ldf\". Operating system error 2: \"2(The system cannot find the file specified.)\".\n\u2026<\/pre>\n<p>That\u2019s the point. My SQL Server engine was not able to open the master database because it can\u2019t find the specified path. As an apart, you may notice the path used by SQL Server in the error message. A Windows fashion path which includes a drive letter! Well, very surprising but I\u2019m sure it will be changed in the near future. <s>For the purpose of my tests, I had no choice to change the folder permission to 777 to expect my SQL Server instance starting well. One point to investigate of course because it will not meet the security policy rules in production environment.<\/s><\/p>\n<p><strong>Update 28.01.2017<\/strong><\/p>\n<p><strong>In fact one important thing to keep in mind is that SQL Server on Linux uses a special mssql user.<\/strong><\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[mikedavem@linux01 ~]$ grep mssql \/etc\/passwd\n\nmssql:x:995:993::\/var\/opt\/mssql:\/bin\/bash<\/pre>\n<p><strong>Therefore I modified the permissions as follows:<\/strong><\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[mikedavem@linux01 ~]$ sudo chown mssql:mssql \/var\/opt\/mssql\/data\n[mikedavem@linux01 ~]$ sudo chmod 640 \/var\/opt\/mssql\/data<\/pre>\n<p>The third one concerned IP and hostname resolution. I had to add my cluster IP and hostnames related information into the <em>\/etc\/hosts<\/em> file on each cluster node to get it to resolve correctly as follows:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@linux01 sql]$ cat \/etc\/hosts\n\n127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4\n::1         localhost localhost.localdomain localhost6 localhost6.localdomain6\n192.168.5.17    linux01.dbi-services.test linux01\n192.168.5.18    linux02.dbi-services.test linux02\n192.168.5.19    sqllinuxfci.dbi-services.test sqllinuxfci<\/pre>\n<p>Finally, after fixing the previous issues, I performed some failover tests (move resources and bring offline a cluster node as well) that ran successfully.<\/p>\n<ul>\n<li>Move resource<\/li>\n<\/ul>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@linux01 sql]$ sudo pcs resource move sqllinuxfci linux01.dbi-services.test\n\n[mikedavem@linux01 sql]$ sudo pcs status\n\n\u2026\n2 nodes and 2 resources configured\n\nOnline: [ linux01.dbi-services.test linux02.dbi-services.test ]\n\nFull list of resources:\n\n sqllinuxfci    (ocf::sql:fci): Started linux01.dbi-services.test\n virtualip      (ocf::heartbeat:IPaddr2):       Started linux01.dbi-services.test<\/pre>\n<ul>\n<li>Simulate failure node LINUX02.dbi-services.test<\/li>\n<\/ul>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[mikedavem@linux01 ~]$ sudo pcs status\n\nCluster name: linux_cluster\nStack: corosync\nCurrent DC: linux01.dbi-services.test (version 1.1.15-11.el7_3.2-e174ec8) - part                                                                                        ition with quorum\nLast updated: Sun Jan 15 10:59:14 2017          Last change: Sun Jan 15 10:56:54                                                                                         2017 by root via crm_resource on linux01.dbi-services.test\n\n2 nodes and 2 resources configured\n\nOnline: [ linux01.dbi-services.test ]\nOFFLINE: [ linux02.dbi-services.test ]\n\nFull list of resources:\n\n sqllinuxfci    (ocf::sql:fci): Started linux01.dbi-services.test\n virtualip      (ocf::heartbeat:IPaddr2):       Started linux01.dbi-services.tes                                                                                        t\n\nDaemon Status:\n  corosync: active\/enabled\n  pacemaker: active\/enabled\n  pcsd: active\/enabled<\/pre>\n<p><span style=\"color: #000000; font-family: Calibri;\">Another \u201cbug\u201d I noticed is that the SERVERPROPERTY() function output does not show correctly the my FCI name. Probably a mistake which will be resolved in the next CTPs. Be patient \u2026<\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14264\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-3-serverproperty-output.jpg\" alt=\"blog 114 - 3 - serverproperty output\" width=\"540\" height=\"53\" \/><\/span><\/p>\n<p><strong>Update 28.01.2017<\/strong><\/p>\n<p><strong>I got some explanations from Mihaela Blendea\u00a0 (Senior Program Manager at Microsoft) and I also noticed\u00a0 updates from the <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/sql-server-linux-shared-disk-cluster-red-hat-7-configure\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft documentation<\/a>.\u00a0Currently, SQL Server is not as coupled as with WSFC on Windows. Therefore, the virtual network name is WSFC-specific and there is no equivalent of the same in Pacemaker. This is why I noticed this behavior above. <\/strong><\/p>\n<p><strong><span style=\"text-decoration: underline;\">My final thoughts<\/span><\/strong><\/p>\n<p>Here my feeling after playing a little bit with my new infrastructure.<\/p>\n<p>Based on this first installation, we must face the facts: building a SQL Server FCI infrastructure is a fastest process on Linux in comparison to the same in Windows but I prefer to be prudent and not to draw hasty conclusions. Let\u2019s see what we are going to have in the RTM release. One important thing I noticed for example is there is no explicit cluster validation compared to Windows at least in appearance. In fact, if we take a closer look at the cluster side, we already have some validation steps during the cluster creation (node authentication and cluster setup). However, I didn\u2019t see any validation step at the SQL Server side (compared to Windows) except basic verifications which include verifying the standalones instances are able to start and share the same storage.<\/p>\n<p>Moreover, one another important point we may notice is that we don\u2019t need to setup DNS servers to run the cluster infrastructure. During my tests, I didn\u2019t use it (hostname resolution was made only from <em>\/etc\/hosts<\/em> file) but as soon as I had to connect my infrastructure from remote computers, DNS resolution became almost mandatory \ud83d\ude42<\/p>\n<p>Finally, there is a plenty of tests to perform to understand how behave the cluster layer as well as the cluster resource.<\/p>\n<p>Well, there is still a way to go in order to complete all my work on Linux. To be continued \u2026.<\/p>\n<p><span style=\"float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;\">By David Barbarin<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A couple of months ago, I did my first installation of SQL Server on Linux. I wrote about it in this blog post. So now it\u2019s time to start the new year by talking about high availability on Linux with SQL Server vNext. Running standalone instances will be suitable for scenarios but I guess introducing [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":9697,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[1016,38,1017,464,84,73,112,1018,804,51,1019],"type_dbi":[],"class_list":["post-9693","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-database-management","tag-centos-7","tag-cluster","tag-corosync","tag-failover-cluster","tag-high-availability","tag-linux","tag-nfs","tag-pacemaker","tag-red-hat-linux-7","tag-sql-server","tag-sql-server-vnext"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Introducing high-availability with SQL Server on Linux - dbi Blog<\/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\/introducing-high-availability-with-sql-server-on-linux\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing high-availability with SQL Server on Linux\" \/>\n<meta property=\"og:description\" content=\"A couple of months ago, I did my first installation of SQL Server on Linux. I wrote about it in this blog post. So now it\u2019s time to start the new year by talking about high availability on Linux with SQL Server vNext. Running standalone instances will be suitable for scenarios but I guess introducing [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-15T16:39:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-18T05:38:35+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"319\" \/>\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=\"6 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\\\/introducing-high-availability-with-sql-server-on-linux\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"Introducing high-availability with SQL Server on Linux\",\"datePublished\":\"2017-01-15T16:39:17+00:00\",\"dateModified\":\"2023-07-18T05:38:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/\"},\"wordCount\":1221,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg\",\"keywords\":[\"CentOS 7\",\"Cluster\",\"CoroSync\",\"Failover cluster\",\"High availability\",\"Linux\",\"NFS\",\"PaceMaker\",\"Red Hat Linux 7\",\"SQL Server\",\"SQL Server vNext\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/\",\"name\":\"Introducing high-availability with SQL Server on Linux - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg\",\"datePublished\":\"2017-01-15T16:39:17+00:00\",\"dateModified\":\"2023-07-18T05:38:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg\",\"width\":400,\"height\":319},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/introducing-high-availability-with-sql-server-on-linux\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing high-availability with SQL Server on Linux\"}]},{\"@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":"Introducing high-availability with SQL Server on Linux - dbi Blog","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\/introducing-high-availability-with-sql-server-on-linux\/","og_locale":"en_US","og_type":"article","og_title":"Introducing high-availability with SQL Server on Linux","og_description":"A couple of months ago, I did my first installation of SQL Server on Linux. I wrote about it in this blog post. So now it\u2019s time to start the new year by talking about high availability on Linux with SQL Server vNext. Running standalone instances will be suitable for scenarios but I guess introducing [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/","og_site_name":"dbi Blog","article_published_time":"2017-01-15T16:39:17+00:00","article_modified_time":"2023-07-18T05:38:35+00:00","og_image":[{"width":400,"height":319,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"Introducing high-availability with SQL Server on Linux","datePublished":"2017-01-15T16:39:17+00:00","dateModified":"2023-07-18T05:38:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/"},"wordCount":1221,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg","keywords":["CentOS 7","Cluster","CoroSync","Failover cluster","High availability","Linux","NFS","PaceMaker","Red Hat Linux 7","SQL Server","SQL Server vNext"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/","url":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/","name":"Introducing high-availability with SQL Server on Linux - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg","datePublished":"2017-01-15T16:39:17+00:00","dateModified":"2023-07-18T05:38:35+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-114-1-sql-linux-fci-architecture-e1484500501238-1.jpg","width":400,"height":319},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/introducing-high-availability-with-sql-server-on-linux\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing high-availability with SQL Server on Linux"}]},{"@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\/9693","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=9693"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9693\/revisions"}],"predecessor-version":[{"id":26800,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9693\/revisions\/26800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/9697"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9693"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}