Differences between revisions 15 and 78 (spanning 63 versions)
Revision 15 as of 2017-10-10 22:51:56
Size: 1579
Editor: shran
Comment:
Revision 78 as of 2021-03-03 17:37:31
Size: 2615
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Its all about uptime! = = It is all about uptime! =
Line 3: Line 3:
The main goal is to go as close to no downtime as possible. System uptime and availability is being increasingly important. Various services are expected to be accessibly at all times. The challenge is to configure and maintain such a system, with minimal downtime, and preferable no downtime at all. At first this sounds like a very complicated task, but breaking it down to its components makes it possible. Configuring and deploying one component at a time, in a redundant way, allows for added complexity in a simple way, which increasingly builds on a stable redundant platform, keeping the redundancy all the way through the component stack. As the system is comprised of redundant components, it is ensured that any component at any time can be taken down for maintenance, without compromising the uptime and availabilty of the system.
Line 5: Line 5:
== These are our worst foes == == The Challenge ==

Many factors affects such a system, and usually we are not controlling all of them.
Line 12: Line 14:
To get around this a redundant system has to be built. Realizing that a redundant system consists of many redundant parts, virtualization naturally comes to mind. Redundancy for all factors will be very expensive, so here we will focus on the software redundancy, and the physical hardware the software runs on.
Line 14: Line 16:
Basic knowledge of GNU/Linux commandline tools is required to use this guide. These tools will not be explained here. Realizing that a redundant system consists of many redundant parts, virtualization naturally comes to mind.
Line 19: Line 21:
  *
 *
KVM Guest
 * [[KVM Guest|KVM Guest]]
Line 22: Line 23:
== Manage Virtual Domains ==
Line 23: Line 25:
 * [[Domain Creation|Domain Creation]]
 * [[Domain Console|Domain Console]]
 * [[Domain Destruction|Domain Destruction]]
 * [[Domain Editing|Domain Editing]]
 * [[Domain Cloning|Domain Cloning]]
 * [[Domain Migration|Domain Migration]]
Line 24: Line 32:
This project is based on the GNU/Linux software packaged by Debian, currently the stretch release. The information provided here will most likely work on other GNU/Linux systems as well. == Network Planning ==
Line 26: Line 34:
 * [[Network Planning|Network Planning]]
Line 27: Line 36:
== Configure a Redundant Service ==
Line 28: Line 38:
I have had a home server running for many years now, but as time passed more and more functionality was added to it. Eventually I ended up in a situation where maintaining the server often forced me to shut down services.  * [[DNS|DNS]]
 * [[DHCP|DHCP]]
 * [[NTP|NTP]]
 * [[GlusterFS|GlusterFS]]
 * [[Corosync and HA-proxy|Corosync and HA-proxy]]
 * [[Mariadb|Mariadb]]
 * [[Redis|Redis]]
 * [[Apache|Apache]]
 * [[LDAP|LDAP]]
 * [[Postfix|Postfix]]
 * [[Dovecot|Dovecot]]
 * [[Nextcloud|Nextcloud]]
 * [[OPNsense|OPNsense]]
Line 30: Line 52:
While trying to get my hands on a physical book on kvm based virtualization I found that there was no such book. I wanted to start using kvm, since my server ran so many different services, that they eventually began to get in the way for each other. But finding a really good beginners guide was hard, hence my decision to start this site. == Configure a Service ==
Line 32: Line 54:
I call the site uptime. The whole idea about this setup is to get as high an uptime as possible. Other goals like security and speed will also be considered, but the main focus is on getting the best possible uptime.  * [[Syncthing|Syncthing]]
 * [[Minidlna|Minidlna]]

== Tools ==

=== Networking ===

 * [[nethogs|nethogs]]
 * [[bwm-ng|bwm-ng]]

''This project is based on the GNU/Linux software packaged by Debian. KVM hosts are running on Buster, guests are for the most part running on Buster. The information provided here will most likely work on other GNU/Linux systems as well. Basic knowledge of GNU/Linux commandline tools, file editing, network etc. is required to use and understand this guide.''

It is all about uptime!

System uptime and availability is being increasingly important. Various services are expected to be accessibly at all times. The challenge is to configure and maintain such a system, with minimal downtime, and preferable no downtime at all. At first this sounds like a very complicated task, but breaking it down to its components makes it possible. Configuring and deploying one component at a time, in a redundant way, allows for added complexity in a simple way, which increasingly builds on a stable redundant platform, keeping the redundancy all the way through the component stack. As the system is comprised of redundant components, it is ensured that any component at any time can be taken down for maintenance, without compromising the uptime and availabilty of the system.

The Challenge

Many factors affects such a system, and usually we are not controlling all of them.

  • Power outage
  • Internet access
  • Hardware malfunction
  • Software updates

Redundancy for all factors will be very expensive, so here we will focus on the software redundancy, and the physical hardware the software runs on.

Realizing that a redundant system consists of many redundant parts, virtualization naturally comes to mind.

Configure your system

Manage Virtual Domains

Network Planning

Configure a Redundant Service

Configure a Service

Tools

Networking

This project is based on the GNU/Linux software packaged by Debian. KVM hosts are running on Buster, guests are for the most part running on Buster. The information provided here will most likely work on other GNU/Linux systems as well. Basic knowledge of GNU/Linux commandline tools, file editing, network etc. is required to use and understand this guide.

TODO

None: Uptime (last edited 2021-12-31 11:46:57 by Kristian Kallenberg)