{"id":31907,"date":"2019-10-31T21:43:53","date_gmt":"2019-10-31T18:43:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing\/"},"modified":"2019-10-31T21:43:53","modified_gmt":"2019-10-31T18:43:53","slug":"postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing","title":{"rendered":"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A considerable number of enterprise applications and virtualization systems have their own mechanisms for creating fault-tolerant solutions. In particular, Oracle RAC (Oracle Real Application Cluster) represents a cluster of two or more Oracle database servers working together to balance loads and ensure fault tolerance at the server\/application level. To operate in this mode, a shared storage is required, which is typically provided by a storage system. <\/p>\n<p><\/p>\n<p>As we discussed in one of our <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/accelstor\/blog\/441780\/\">articles<\/a><\/noindex>, the storage system itself, despite having redundant components (including controllers), still has points of failure\u2014primarily, in the form of a single set of data. Therefore, to build an Oracle solution with higher reliability requirements, the scheme of 'N servers \u2013 one storage system' needs to be made more complex.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/779e46d9ae2d70251bc72f55941171a5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>First, of course, we need to determine what risks we are trying to protect against. In this article, we will not consider protection against threats like 'a meteorite landed'. Thus, building a geographically dispersed disaster recovery solution will remain the topic for one of our future articles. Here, we will focus on the so-called Cross-Rack disaster recovery solution, where protection is established at the level of server racks. These racks can be located in the same room or different ones, but usually within the same building.<\/p>\n<p><\/p>\n<p>These racks should contain all the necessary set of equipment and software that will allow the operation of Oracle databases independently of the status of the 'neighbor'. In other words, by using a Cross-Rack disaster recovery solution, we eliminate the risks during a failure:<\/p>\n<p><\/p>\n<ul>\n<li>Oracle application servers<\/li>\n<li>Storage systems<\/li>\n<li>Switching systems<\/li>\n<li>Total failure of all equipment in the rack:\n<ul>\n<li>Power failure<\/li>\n<li>Cooling system failure<\/li>\n<li>External factors (human, nature, etc.)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Redundancy of Oracle servers implies the very principle of Oracle RAC operation and is implemented through the application. Redundancy of switching equipment is also not a problem. However, redundancy of storage systems is more complex.<\/p>\n<p><\/p>\n<p>The simplest option is to replicate data from the primary storage system to a backup. Synchronous or asynchronous, depending on the capabilities of the storage system. In the case of asynchronous replication, the issue of ensuring data consistency with Oracle immediately arises. However, even if there's programmatic integration with the application, manual intervention by administrators will be required to switch the cluster to the backup storage in case of a failure in the primary storage system.<\/p>\n<p><\/p>\n<p>A more complex option is software and\/or hardware 'virtualizers' of the storage system, which eliminate problems with consistency and manual intervention. But the complexity of deployment and subsequent administration, as well as the rather excessive cost of such solutions, discourages many.<\/p>\n<p><\/p>\n<p>For scenarios like Cross-Rack disaster recovery, the All Flash array solution AccelStor NeoSapphire\u2122 is ideal. <noindex><a rel=\"nofollow\" href=\"https:\/\/accelstor.ru\/product\/neosapphire-h710\">H710<\/a><\/noindex> using Shared-Nothing architecture. This model is a two-node storage system that employs its own FlexiRemap\u00ae technology for working with flash drives. Thanks to <noindex><a rel=\"nofollow\" href=\"https:\/\/accelstor.ru\/\">FlexiRemap\u00ae<\/a><\/noindex> NeoSapphire\u2122 H710 is capable of delivering performance of up to 600K IOPS@4K random write and 1M+ IOPS@4K random read, which is unattainable when using traditional RAID-based storage systems.<\/p>\n<p><\/p>\n<p>But the main feature of the NeoSapphire\u2122 H710 is that the two nodes are implemented as separate enclosures, each having its own copy of the data. The synchronization of the nodes is carried out through an external InfiniBand interface. This architecture allows the nodes to be spread across different locations up to 100m apart, thereby providing a Cross-Rack disaster recovery solution. Both nodes operate fully in synchronous mode. From the hosts' perspective, H710 appears as a regular dual-controller storage system. Therefore, no additional software or hardware options or particularly complex configurations need to be performed.<\/p>\n<p><\/p>\n<p>When comparing all the above Cross-Rack disaster recovery solutions, the option from AccelStor stands out significantly from the rest:<\/p>\n<p><\/p>\n<p>AccelStor NeoSapphire\u2122 Shared Nothing Architecture<br \/>\nSoftware or hardware 'virtualizer' of the storage system<br \/>\nReplication-based solution<\/p>\n<p><b>All exploit scenarios related to attack vectors on<\/b><\/p>\n<p>Server failure<br \/>\n<b>No Downtime<\/b><br \/>\n<b>No Downtime<\/b><br \/>\n<b>No Downtime<\/b><\/p>\n<p>Switch failure<br \/>\n<b>No Downtime<\/b><br \/>\n<b>No Downtime<\/b><br \/>\n<b>No Downtime<\/b><\/p>\n<p>Storage system failure<br \/>\n<b>No Downtime<\/b><br \/>\n<b>No Downtime<\/b><br \/>\n<b>Downtime<\/b><\/p>\n<p>Entire rack failure<br \/>\n<b>No Downtime<\/b><br \/>\n<b>No Downtime<\/b><br \/>\n<b>Downtime<\/b><\/p>\n<p><b>Cost and complexity<\/b><\/p>\n<p>Cost of the solution<br \/>\nLow*<br \/>\nHigh<br \/>\nHigh<\/p>\n<p>Deployment complexity<br \/>\nLow<br \/>\nHigh<br \/>\nHigh<\/p>\n<p><\/p>\n<p><i>*AccelStor NeoSapphire\u2122 is indeed an All Flash array, which by definition does not come cheap, especially with its double capacity. However, when comparing the total cost of a solution based on it with similar offerings from other vendors, the price can be considered low.<\/i><\/p>\n<p><\/p>\n<p>The topology for connecting application servers and nodes of the All Flash array will look as follows:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/faf6a0a78ed13532a817fb67a2651b1b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>When planning the topology, it is highly recommended to duplicate the management and interconnect switches for the servers.<\/p>\n<p><\/p>\n<p>From here on, we will discuss connections via Fibre Channel. If using iSCSI, the same principles apply, with adjustments for the types of switches used and slightly different array settings.<\/p>\n<p><\/p>\n<h3>Preparatory work on the array<\/h3>\n<p>\n<b class=\"spoiler_title\">Equipment and software used<\/b><\/p>\n<p><b>Specifications of servers and switches<\/b><\/p>\n<p><\/p>\n<p>Components<br \/>\nDescription<\/p>\n<p>Oracle Database 11g servers<br \/>\nTwo <\/p>\n<p>Server operating system<br \/>\nOracle Linux<\/p>\n<p>Oracle database version<br \/>\n11g (RAC)<\/p>\n<p>Processors per server<br \/>\nTwo 16-core Intel\u00ae Xeon\u00ae CPU E5-2667 v2 @ 3.30GHz<\/p>\n<p>Physical memory per server<br \/>\n128GB<\/p>\n<p>FC network<br \/>\n16Gb\/s FC with multipathing<\/p>\n<p>FC HBA<br \/>\nEmulex Lpe-16002B <\/p>\n<p>Dedicated public 1GbE ports for cluster management<br \/>\nIntel ethernet adapter RJ45<\/p>\n<p>16Gb\/s FC switch<br \/>\nBrocade 6505<\/p>\n<p>Dedicated private 10GbE ports for data synchronization<br \/>\nIntel X520<\/p>\n<p><\/p>\n<p><b>Specification of AccelStor NeoSapphire\u2122 All Flash array<\/b><\/p>\n<p><\/p>\n<p>Components<br \/>\nDescription<\/p>\n<p>Storage system<br \/>\nNeoSapphire\u2122 high availability model: H710<\/p>\n<p>Image version<br \/>\n4.0.1<\/p>\n<p>Total number of drives<br \/>\n48<\/p>\n<p>Drive size<br \/>\n1.92TB<\/p>\n<p>Drive type<br \/>\nSSD<\/p>\n<p>FC target ports<br \/>\n16 x 16Gb ports (8 per node)<\/p>\n<p>Management ports<br \/>\nThe 1GbE ethernet cable connecting to hosts via an ethernet switch<\/p>\n<p>Heartbeat port<br \/>\nThe 1GbE ethernet cable connecting between two storage nodes<\/p>\n<p>Data synchronization port<br \/>\n56Gb\/s InfiniBand cable<\/p>\n<p>Before using the array, it must be initialized. By default, the management address of both nodes is the same (192.168.1.1). You need to connect to them one after the other and set new (different) management addresses and configure time synchronization, after which the Management ports can be connected to a single network. Then, the nodes are combined into an HA pair by assigning subnets for the Interlink connections.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/9eef0dd1ac3a2ae1d19b3484ec2b2a27.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Once initialization is complete, the array can be managed from any node.<\/p>\n<p><\/p>\n<p>Next, we create the required volumes and publish them for the application servers.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/57a23b64c2bcb3c9f477cc5009e1cd48.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>It is highly recommended to create several volumes for Oracle ASM, as this will increase the number of targets for the servers, ultimately improving overall performance (more on queues elsewhere) <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/accelstor\/blog\/447390\/\">article<\/a><\/noindex>).<\/p>\n<p>\n<b class=\"spoiler_title\">Test configuration<\/b><\/p>\n<p>Storage Volume Name<br \/>\nVolume Size<\/p>\n<p>Data01<br \/>\n200GB<\/p>\n<p>Data02<br \/>\n200GB<\/p>\n<p>Data03<br \/>\n200GB<\/p>\n<p>Data04<br \/>\n200GB<\/p>\n<p>Data05<br \/>\n200GB<\/p>\n<p>Data06<br \/>\n200GB<\/p>\n<p>Data07<br \/>\n200GB<\/p>\n<p>Data08<br \/>\n200GB<\/p>\n<p>Data09<br \/>\n200GB<\/p>\n<p>Data10<br \/>\n200GB<\/p>\n<p>Grid01<br \/>\n1GB<\/p>\n<p>Grid02<br \/>\n1GB<\/p>\n<p>Grid03<br \/>\n1GB<\/p>\n<p>Grid04<br \/>\n1GB<\/p>\n<p>Grid05<br \/>\n1GB<\/p>\n<p>Grid06<br \/>\n1GB<\/p>\n<p>Redo01<br \/>\n100GB<\/p>\n<p>Redo02<br \/>\n100GB<\/p>\n<p>Redo03<br \/>\n100GB<\/p>\n<p>Redo04<br \/>\n100GB<\/p>\n<p>Redo05<br \/>\n100GB<\/p>\n<p>Redo06<br \/>\n100GB<\/p>\n<p>Redo07<br \/>\n100GB<\/p>\n<p>Redo08<br \/>\n100GB<\/p>\n<p>Redo09<br \/>\n100GB<\/p>\n<p>Redo10<br \/>\n100GB<\/p>\n<h3>Some explanations regarding the operating modes of the array and the processes occurring during abnormal situations<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/e0f9416f16bb8a13673cacfcf1792d9d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Each node's data set has a parameter called 'version number'. After the initial initialization, it is the same and equal to 1. If, for any reason, the version numbers are different, data synchronization occurs from the higher version to the lower one, after which the lower version's number is adjusted, meaning that the copies are identical. Reasons for differing versions may include:<\/p>\n<p><\/p>\n<ul>\n<li>Scheduled reboot of one of the nodes<\/li>\n<li>Failure of one of the nodes due to a sudden shutdown (power failure, overheating, etc.). <\/li>\n<li>Loss of InfiniBand connection with the inability to synchronize<\/li>\n<li>Failure of one of the nodes due to data corruption. Here, the creation of a new HA group and complete data set synchronization will be required.<\/li>\n<\/ul>\n<p><\/p>\n<p>In any case, the node that remains online increases its version number by one so that after the connection is restored with the pair, it can synchronize its data set.<\/p>\n<p><\/p>\n<p>If there is a disconnection over the Ethernet link, Heartbeat temporarily switches to InfiniBand and returns back within 10 seconds upon its restoration.<\/p>\n<p><\/p>\n<h3>Host configuration<\/h3>\n<p><\/p>\n<p>To ensure fault tolerance and enhance performance, MPIO support for the array must be enabled. To do this, add the following lines to the file \/etc\/multipath.conf and then restart the multipath service<\/p>\n<p>\n<b class=\"spoiler_title\">Hidden text<\/b>devices {<br \/>\n device {<br \/>\n vendor \"AStor\"<br \/>\n path_grouping_policy \"group_by_prio\"<br \/>\n path_selector \"queue-length 0\"<br \/>\n path_checker \"tur\"<br \/>\n features \"0\"<br \/>\n hardware_handler \"0\"<br \/>\n prio \"const\"<br \/>\n failback immediate<br \/>\n fast_io_fail_tmo 5<br \/>\n dev_loss_tmo 60<br \/>\n user_friendly_names yes<br \/>\n detect_prio yes<br \/>\n rr_min_io_rq 1<br \/>\n no_path_retry 0<br \/>\n }<br \/>\n}<\/p>\n<p><\/p>\n<p>Next, for ASM to work with MPIO through ASMLib, it is necessary to modify the file \/etc\/sysconfig\/oracleasm and then execute \/etc\/init.d\/oracleasm scandisks<\/p>\n<p>\n<b class=\"spoiler_title\">Hidden text<\/b><\/p>\n<p># ORACLEASM_SCANORDER: Matching patterns to order disk scanning<br \/>\nORACLEASM_SCANORDER=\"dm\"<\/p>\n<p># ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan<br \/>\nORACLEASM_SCANEXCLUDE=\"sd\"<\/p>\n<p><\/p>\n<h4>Note<\/h4>\n<p><\/p>\n<p><i>If you prefer not to use ASMLib, UDEV rules can be used, which are the basis for ASMLib.<\/i><\/p>\n<p><\/p>\n<p><i>Starting with version 12.1.0.2, the Oracle Database option is available for installation as part of the ASMFD software.<\/i><\/p>\n<p>It is essential to ensure that the disks created for Oracle ASM are aligned with the block size that the array physically operates with (4K). Otherwise, performance issues may occur. Therefore, it is necessary to create volumes with the appropriate parameters:<\/p>\n<p><\/p>\n<p><i>parted \/dev\/mapper\/device-name mklabel gpt mkpart primary 2048s 100% align-check optimal 1<\/i><\/p>\n<p><\/p>\n<h3>Database distribution across created volumes for our test configuration<\/h3>\n<p><\/p>\n<p>Storage Volume Name<br \/>\nVolume Size<br \/>\nVolume LUNs mapping<br \/>\nASM Volume Device Detail<br \/>\nAllocation Unit Size<\/p>\n<p>Data01<br \/>\n200GB<br \/>\nMap all storage volumes to storage system all data ports<br \/>\nRedundancy: Normal<br \/>\nName: DGDATA<br \/>\nPurpose: Data files<\/p>\n<p>4MB<\/p>\n<p>Data02<br \/>\n200GB<\/p>\n<p>Data03<br \/>\n200GB<\/p>\n<p>Data04<br \/>\n200GB<\/p>\n<p>Data05<br \/>\n200GB<\/p>\n<p>Data06<br \/>\n200GB<\/p>\n<p>Data07<br \/>\n200GB<\/p>\n<p>Data08<br \/>\n200GB<\/p>\n<p>Data09<br \/>\n200GB<\/p>\n<p>Data10<br \/>\n200GB<\/p>\n<p>Grid01<br \/>\n1GB<br \/>\nRedundancy: Normal<br \/>\nName: DGGRID1<br \/>\nPurpose: Grid: CRS and Voting<\/p>\n<p>4MB<\/p>\n<p>Grid02<br \/>\n1GB<\/p>\n<p>Grid03<br \/>\n1GB<\/p>\n<p>Grid04<br \/>\n1GB<br \/>\nRedundancy: Normal<br \/>\nName: DGGRID2<br \/>\nPurpose: Grid: CRS and Voting<\/p>\n<p>4MB<\/p>\n<p>Grid05<br \/>\n1GB<\/p>\n<p>Grid06<br \/>\n1GB<\/p>\n<p>Redo01<br \/>\n100GB<br \/>\nRedundancy: Normal<br \/>\nName: DGREDO1<br \/>\nPurpose: Redo log of thread 1<\/p>\n<p>4MB<\/p>\n<p>Redo02<br \/>\n100GB<\/p>\n<p>Redo03<br \/>\n100GB<\/p>\n<p>Redo04<br \/>\n100GB<\/p>\n<p>Redo05<br \/>\n100GB<\/p>\n<p>Redo06<br \/>\n100GB<br \/>\nRedundancy: Normal<br \/>\nName: DGREDO2<br \/>\nPurpose: Redo log of thread 2<\/p>\n<p>4MB<\/p>\n<p>Redo07<br \/>\n100GB<\/p>\n<p>Redo08<br \/>\n100GB<\/p>\n<p>Redo09<br \/>\n100GB<\/p>\n<p>Redo10<br \/>\n100GB<\/p>\n<p>\n<b class=\"spoiler_title\">Database settings<\/b><\/p>\n<ul>\n<li>Block size = 8K<\/li>\n<li>Swap space = 16GB<\/li>\n<li>Disable AMM (Automatic Memory Management)<\/li>\n<li>Disable Transparent Huge Pages<\/li>\n<\/ul>\n<p><b class=\"spoiler_title\">Other settings<\/b><\/p>\n<p><u># vi \/etc\/sysctl.conf<\/u><br \/>\n\u2713 fs.aio-max-nr = 1048576<br \/>\n\u2713 fs.file-max = 6815744<br \/>\n\u2713 kernel.shmmax 103079215104<br \/>\n\u2713 kernel.shmall 31457280<br \/>\n\u2713 kernel.shmmn 4096<br \/>\n\u2713 kernel.sem = 250 32000 100 128<br \/>\n\u2713 net.ipv4.ip_local_port_range = 9000 65500<br \/>\n\u2713 net.core.rmem_default = 262144<br \/>\n\u2713 net.core.rmem_max = 4194304<br \/>\n\u2713 net.core.wmem_default = 262144<br \/>\n\u2713 net.core.wmem_max = 1048586<br \/>\n\u2713 vm.swappiness=10<br \/>\n\u2713 vm.min_free_kbytes=524288 # don't set this if you're using Linux x86<br \/>\n\u2713 vm.vfs_cache_pressure=200<br \/>\n\u2713 vm.nr_hugepages = 57000<\/p>\n<p><u># vi \/etc\/security\/limits.conf<\/u><br \/>\n\u2713 grid soft nproc 2047<br \/>\n\u2713 grid hard nproc 16384<br \/>\n\u2713 grid soft nofile 1024<br \/>\n\u2713 grid hard nofile 65536<br \/>\n\u2713 grid soft stack 10240<br \/>\n\u2713 grid hard stack 32768<br \/>\n\u2713 oracle soft nproc 2047<br \/>\n\u2713 oracle hard nproc 16384<br \/>\n\u2713 oracle soft nofile 1024<br \/>\n\u2713 oracle hard nofile 65536<br \/>\n\u2713 oracle soft stack 10240<br \/>\n\u2713 oracle hard stack 32768<br \/>\n\u2713 soft memlock 120795954<br \/>\n\u2713 hard memlock 120795954\n<\/p>\n<p><\/p>\n<p><u>sqlplus \"\/as sysdba\"<\/u><br \/>\nalter system set processes=2000 scope=spfile;<br \/>\nalter system set open_cursors=2000 scope=spfile;<br \/>\nalter system set session_cached_cursors=300 scope=spfile;<br \/>\nalter system set db_files=8192 scope=spfile;\n<\/p>\n<p><\/p>\n<h3>Failover test<\/h3>\n<p><\/p>\n<p>HammerDB was used for demonstration purposes to simulate OLTP workload. HammerDB configuration:<\/p>\n<p><\/p>\n<p><b>Number of Warehouses<\/b><br \/>\n256<\/p>\n<p>Total Transactions per User<br \/>\n1000000000000<\/p>\n<p>Virtual Users<br \/>\n256<\/p>\n<p><\/p>\n<p>As a result, a figure of 2.1M TPM was obtained, which is far from the array's performance limit <noindex><a rel=\"nofollow\" href=\"https:\/\/accelstor.ru\/product\/neosapphire-h710\">H710<\/a><\/noindex>, but is the 'ceiling' for the current hardware configuration of the servers (primarily due to the processors) and their quantity. The goal of this test is still to demonstrate the resilience of the solution as a whole, rather than achieving performance maximums. So let's just take this figure as a reference.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/6de29f092e4c96a980a5790d8dd9a447.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Node failure test<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/c222cea4613ad7096bb097fee16bbb48.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/4b9459ba3d7cf34ec1e4ad4cd34adc09.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hosts lost part of the paths to the storage, continuing to operate through the remaining ones with the second node. Performance dropped for several seconds due to path reconstruction and then returned to normal indicators. There was no service interruption.<\/p>\n<p><\/p>\n<h3>Cabinet failure test with all equipment<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/bf4c1bbf2b4986911c4274525cf8e5d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture\" src=\"\/wp-content\/uploads\/2019\/04\/17d5aa73f72dce4fd9227cb6907c249c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>In this case, performance also dropped for several seconds due to path reconstruction and then returned to half of the initial indicator. The result was halved from the original due to the exclusion of one application server from operation. There was also no service interruption.<\/p>\n<p><\/p>\n<blockquote><p>If there is a need for implementing a cost-effective Cross-Rack disaster recovery solution for Oracle with minimal deployment\/administration effort, then the collaboration of Oracle RAC and architecture <noindex><a rel=\"nofollow\" href=\"https:\/\/accelstor.ru\/page\/pochemu-accelstor\">AccelStor Shared-Nothing<\/a><\/noindex> will be one of the best options. Instead of Oracle RAC, any other software that supports clustering, including the same DBMS or virtualization systems, could be used. The principle of building the solution will remain the same. The ultimate goal is to achieve zero values for RTO and RPO.<\/p><\/blockquote>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/accelstor\/blog\/448538\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u043c\u0430\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e Enterprise \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, Oracle RAC (Oracle Real Application Cluster) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 Oracle, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0446\u0435\u043b\u044c\u044e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\/\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0442\u0430\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0449\u0435\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0432 \u0440\u043e\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23767,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u043c\u0430\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e Enterprise \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 Oracle RAC \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b AccelStor Shared-Nothing | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u043c\u0430\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e Enterprise \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:53+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Building a fault-tolerant solution based on Oracle RAC and AccelStor Shared-Nothing architecture | ProHoster","description":"Many enterprise applications and virtualization systems have their own mechanisms for building fault-tolerant solutions.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 Oracle RAC \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b AccelStor Shared-Nothing | ProHoster","og:description":"\u041d\u0435\u043c\u0430\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e Enterprise \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/postroenie-otkazoustojchivogo-resheniya-na-baze-oracle-rac-i-arhitektury-accelstor-shared-nothing","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:53+00:00","article:modified_time":"2019-10-31T18:43:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31907","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 08:22:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:09:25","updated":"2026-01-21 08:22:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/31907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=31907"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/31907\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/23767"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=31907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=31907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=31907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}