Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
blocks:server:mirror [2024-10-22 09:34] admin ↷ Links adapted because of a move operation |
blocks:server:mirror [2025-06-14 18:42] (current) admin Added note on BLOCKS_HOME |
====== Blocks Mirroring Service ====== | ====== Blocks Mirroring Service ====== |
| |
Our Linux-based server (dated 2020-05-25 and later, running Ubuntu 20.04), supports a redundancy feature for increased system reliability. While the Blocks server software is very robust, the complete system can never be more reliable than the hardware it runs on. | Our Linux-based server supports a hardware redundancy feature for increased system reliability. While the Blocks server software is very robust, the complete system can never be more reliable than the hardware it runs on. |
| |
===== Introduction ===== | ===== Introduction ===== |
The first thing you should do if any of these components appear to not function is to make sure they're actually on. You may also connect a computer directly to the main switch and try to log in to your Blocks system from there. If that works, the problem is downstream from the main switch, such as in a secondary switch further out or in the player device. | The first thing you should do if any of these components appear to not function is to make sure they're actually on. You may also connect a computer directly to the main switch and try to log in to your Blocks system from there. If that works, the problem is downstream from the main switch, such as in a secondary switch further out or in the player device. |
| |
Once you determined that power's //on// and you can't reach Blocks even from a computer plugged into the main switch, the next step is typically to power down the server computer, wait a minute then power it up again. While waiting, also power-cycle the main switch. If this restores full functionality, you should take a look at the server [[blocks:server:advanced_server_configuration-pre-7#viewing_logs|log files]] to see if they give any clue to what happened. The problem may have been caused by some software error, or some intermittent hardware error. | Once you determined that power's //on// and you can't reach Blocks even from a computer plugged into the main switch, the next step is typically to power down the server computer, wait a minute then power it up again. While waiting, also power-cycle the main switch. If this restores full functionality, you should take a look at the server [[blocks:server:advanced_server_configuration#viewing_logs|log files]] to see if they give any clue to what happened. The problem may have been caused by some software error, or some intermittent hardware error. |
| |
If you suspect that the main switch is the culprit, replace it with another similar switch, then restart the Blocks server, to see if the problem goes away. Having a backup switch ready to go in the rack may be a good idea to safeguard against such problems. | If you suspect that the main switch is the culprit, replace it with another similar switch, then restart the Blocks server, to see if the problem goes away. Having a backup switch ready to go in the rack may be a good idea to safeguard against such problems. |
{{ :blocks:server:mirror:linklocal.png?nolink |}} | {{ :blocks:server:mirror:linklocal.png?nolink |}} |
| |
Restart your server to make sure that everything still works as before. Then use the [[blocks:server:advanced_server_configuration-pre-7#configuring_blocks_server_options|option select]] command to select the mirror mode: | Restart your server to make sure that everything still works as before. Then use the [[blocks:server:advanced_server_configuration#configuring_blocks_server_options|option select]] command to select the mirror mode: |
| |
<code> | <code> |
===== Cloning the Blocks Server ===== | ===== Cloning the Blocks Server ===== |
| |
Once you have configured your main Blocks Server as described above and have it all working as desired, it's time to make the Mirror Server by cloning the Blocks server. This is done using a program called Clonezilla. Read [[blocks:server:creating_a_server-pre-7#prepare_clonezilla_usb_stick| this article]] on getting started with Clonezilla. | Once you have configured your main Blocks Server as described above and have it all working as desired, it's time to make the Mirror Server by cloning the Blocks server. This is done using a program called Clonezilla. Read [[blocks:server:creating_a_server#prepare_clonezilla_usb_stick| this article]] on getting started with Clonezilla. |
| |
You'll also need a second USB storage device. This may be a USB stick with enough room to store the actively used data from your Blocks server's disk. Or it may be an external USB disk drive. This storage device must be formatted as FAT32 or NTFS. | You'll also need a second USB storage device. This may be a USB stick with enough room to store the actively used data from your Blocks server's disk. Or it may be an external USB disk drive. This storage device must be formatted as FAT32 or NTFS. |
The computer will shut down automatically once a clone has been made. Remove the USB sticks/drives. Restart your Blocks server and make sure it comes back OK. If it doesn't, re-enter its BIOS settings and set it back to start from its internal drive. | The computer will shut down automatically once a clone has been made. Remove the USB sticks/drives. Restart your Blocks server and make sure it comes back OK. If it doesn't, re-enter its BIOS settings and set it back to start from its internal drive. |
| |
[[blocks:server:creating_a_server-pre-7#writing_the_server_image_to_the_ssd|This guide]] describes how to write the image to your Mirror Server, thus making it an exact copy of your Blocks server. Store your clone image for safekeeping. It contains a complete snapshot of your Blocks server at this point in time, thus acting as a full backup. | [[blocks:server:creating_a_server#writing_the_server_image_to_the_ssd|This guide]] describes how to write the image to your Mirror Server, thus making it an exact copy of your Blocks server. Store your clone image for safekeeping. It contains a complete snapshot of your Blocks server at this point in time, thus acting as a full backup. |
| |
| |
* Server Disk Space. Indicates the amount of free space on the Blocks Server itself. This also makes sens to keep an eye on – especially before adding a significant amount of new content. | * Server Disk Space. Indicates the amount of free space on the Blocks Server itself. This also makes sens to keep an eye on – especially before adding a significant amount of new content. |
* Server Time. Shows the current time of the clock in the Blocks Server. If your server has Internet access, this is generally adjusted automatically. If not, you may want to check this every few monts to make sure that it is reasonably accurate. | * Server Time. Shows the current time of the clock in the Blocks Server. If your server has Internet access, this is generally adjusted automatically. If not, you may want to check this every few monts to make sure that it is reasonably accurate. |
| * Sync Errors. Cumulative count of data sync errors that have occurred, if any. Check the Mirror log file for details. |
| |
The SYNCHRONIZE NOW button can be used to force a full synchronization. Use this after making manual changes to the files in the /home/pixi-server directory of the Blocks server, such as updating Blocks itself or the mirroring service (the files PIXILAN.jar and MIRROR.jar respectvely). Doing so pushes those changes over to the Mirror Server immediately rather than waiting for the next scheduled full synchronization. | The "Synchtronize Now" button can be used to force a full synchronization. Use this after making manual changes to the files in the /home/pixi-server directory of the Blocks server, such as updating Blocks itself or the mirroring service (the files PIXILAN.jar and MIRROR.jar respectvely). Doing so pushes those changes over to the Mirror Server immediately rather than waiting for the next scheduled full synchronization. |
| |
===== Testing the Mirror Server ===== | ===== Testing the Mirror Server ===== |
* Set java.util.logging.FileHandler.level to //ERROR// for less verbose logging, or //INFO// for more details (sometimes useful when troubleshooting). | * Set java.util.logging.FileHandler.level to //ERROR// for less verbose logging, or //INFO// for more details (sometimes useful when troubleshooting). |
| |
The settings under //logging// follow the java.util.logging standard, sometimes referred to as JUL, allowing you to use any settings available there, for example to log to an external log handler. | The following additional, advanced settings are available in version 7.1 and later, then specified under the "mirror:" heading as shown above. |
| |
| <code> |
| interface: enp2s0 |
| subnet: 192.168.0.0/24 |
| </code> |
| |
=====Troubleshooting===== | :!: **NOTE**: There are two spaces at the beginning of each line, as required when used under the "mirror:" heading. |
The server-to-server connection relies on that connection using self-assigned ("link local") addresses. Such adresses are in the 169.254.x.x address range. There must not be any other network interfaces in either computer having such IP addresses. If there are, make sure you disable any such interfaces, or change their address to keep them out of this address range. | |
| |
Some server class computers have a built in remote management network interface that may then also appear in Linux, often with such a 169.254.x.x address. You may not be able to disable or change the address of such a network interface in Linux. Instead, you can disable this in the computer's remote management settings. Here's a screenshot giving and example of how this is done on a Supermicro server. | * The //interface// setting is useful if your computer have more than one network interface with link local addressing. If so, use this setting to specify the name of the desired synchronization backdoor network interface. |
| * The //subnet// setting lets you specify a non link local subnet (in CIDR notation) for use as the data synchronization backdoor. This is useful in cases where you may want to use this interface for other purposes, such as remote management of the servers. You would then either set fixed addresses (within the specified subnet) or use dynamically assigned addresses (DHCP). |
| |
{{ :blocks:server:mirror:disable-bmc-nic-for-host-os.png?direct&600 |}} | |
| |
| The settings under //logging// follow the java.util.logging standard, sometimes referred to as JUL, allowing you to use any settings available there, for example to log to an external log handler. |
| |
| |
| =====Troubleshooting===== |
| Unless the advanced //subnet// setting is used (see above), the server-to-server backdoor connection assumes the use of self-assigned ("link local") addresses. Such adresses are in the 169.254.x.x address range. There must not be any additional network interfaces in either computer having such IP addresses. If there are, do either of the following: |
| * Disable any such interface(s). in some cases this may need to be done in the computer's BIOS settings. |
| * Change their addresses to keep them out of this address range. |
| * Use the advanced //interface// setting to specify which interface to use. |
| |
=== Verifying over SSH === | === Verifying over SSH === |
</code> | </code> |
| |
| === Custom path to Blocks' Executable Files === |
| The Mirror service assumes that the main Blocks executable file (named "PIXILAN.jar") is located in /home/pixi-server/, which is the case if you're using our Linux server image. However, if you're configuring a server on your own and chose to locate Blocks executable files elsewhere, you must specify the directory where PIXILAN.jar resides using the BLOCKS_HOME envirtonment variable. This is an advanced configuration option, and is normally not required. |
| |
=====Implementation Notes===== | =====Implementation Notes===== |