Main Server: Unterschied zwischen den Versionen

Aus Freifunk Dresden - Anwender-Wiki
Zur Navigation springen Zur Suche springen
(Hauptserver inial)
 
(Hauptserver update)
Zeile 44: Zeile 44:
  
 
== Installation eines leeren Containers ==
 
== Installation eines leeren Containers ==
1. login in Hauptserver via ssh
+
1. Login in Hauptserver via ssh
 +
 
 
2. Container image aktualisieren. Dabei wird ein images von Ubuntu aus dem Internet lokal kopiert und davon ein Container erzeugt.
 
2. Container image aktualisieren. Dabei wird ein images von Ubuntu aus dem Internet lokal kopiert und davon ein Container erzeugt.
 +
 +
lxc image copy images:ubuntu/yakkety/amd64 local: --alias 16.10
 +
 +
lxc image list
 +
+-------+--------------+--------+-----------------------------------------+--------+---------+------------------------------+                                             
 +
| ALIAS | FINGERPRINT  | PUBLIC |              DESCRIPTION              |  ARCH  |  SIZE  |        UPLOAD DATE          |                                             
 +
+-------+--------------+--------+-----------------------------------------+--------+---------+------------------------------+                                             
 +
| 16.10 | d76375b3b387 | no    | Ubuntu yakkety (amd64) (20161127_03:49) | x86_64 | 80.30MB | Nov 27, 2016 at 3:33pm (UTC) |                                             
 +
+-------+--------------+--------+-----------------------------------------+--------+---------+------------------------------+
 +
 +
lxc launch d76375b3b387 icvpn
 +
 
3. Netzwerk Konfiguration
 
3. Netzwerk Konfiguration
  Host: /etc/hosts
+
 
   Container: /etc/network/interfaces
+
Host: /etc/hosts
 +
 
 +
192.168.1.1    main.lxc
 +
192.168.1.10    vpn1.lxc
 +
192.168.1.11   mail.lxc
 +
192.168.1.12    www.lxc
 +
192.168.1.13    download.lxc
 +
192.168.1.14    bt.lxc
 +
192.168.1.15    database.lxc
 +
192.168.1.16    icvpn.lxc
 +
192.168.1.20    git.lxc
 +
192.168.1.21    devel.lxc
 +
 
 +
Container: /etc/network/interfaces
 +
auto eth0
 +
#iface eth0 inet dhcp
 +
iface eth0 inet static
 +
        address 192.168.1.16
 +
        netmask 255.255.255.0
 +
        network 192.168.1.0/24
 +
        broadcast 192.168.1.255
 +
        gateway 192.168.1.1
 +
        # dns-* options are implemented by the resolvconf package, if installed
 +
        dns-nameservers 192.168.1.1
 +
        dns-search freifunk-dresden.de
 +
 
 +
 
 
4. ssh login Einrichten
 
4. ssh login Einrichten
 +
SSH ist für den Zugang zum Git-Linux Container notwendig. Dazu muss ein SSH Key generiert werden.
 +
ssh-keygen #ohne passwort
 +
cat ~/.ssh/id_rsa.pub
 +
 +
Weitere Console öffnen und dort in den Git Container wechseln.
 +
lxc exec git -- bash
 +
 +
Per Copy&Paste den id_rsa.pub key in /home/git/.ssh/authorized_keys einfügen
 +
 +
 
5. Optional: Alias fuer lxc console und ssh login (+X11 forwarding)
 
5. Optional: Alias fuer lxc console und ssh login (+X11 forwarding)
 
  alias icvpn='lxc exec icvpn -- bash'
 
  alias icvpn='lxc exec icvpn -- bash'
 
  alias sicvpn='ssh root@icvpn.lxc
 
  alias sicvpn='ssh root@icvpn.lxc
 
6. Installieren von git
 
6. Installieren von git
 +
apt-get install git
 +
 +
7. Container Basis installieren
 +
git clone ssh://git@git.lxc/~/container-install.git
 +
cd container-install
 +
./vserver-install.sh
 +
 +
== Linux Container Anpassung ==
 +
1. Leeres Git-Repository für den neuen Container erzeugen
 +
2. Clonen des neuen Git-Repositories
 +
3. Manuell alle Anpassungen/Installationen vornehmen und diese in das Repository bringen

Version vom 27. November 2016, 20:42 Uhr

Einleitung

Freifunk Dresden nutzt einen Hauptserver, der verschiedene Dienste bereit stellt. Generell kann das Freifunknetz in Dresden dezentral betrieben werden. Da wir hier eine automatische Registrierung der Knoten nutzen (könnte auch manuell auf jedem Knoten konfiguriert werden), wird zu mindestens ein zentraler Server benötigt, der die Registierung der Knoten und die Verteilung der Knotennummern übernimmt.

Der Hauptserver nutzt Linux Container, um einzelnen Aufgaben besser zu trennen. Jeder Linux Container wird über ein Installation-Script konfiguriert, welches in einem privaten GIT Repository gesichert wird. Das Prinzip entspricht der Installation des basic-vservers (auf github), nur eben mit den Anpassungen für einen bestimmten Dienst.

Der große Vorteil für die Verwendung von Linux Containern liegt darin, dass eine Funktionalität durch einfaches Kopieren auf einen anderen physischen Server umziehen kann.

Struktur des Servers

Technische Daten des Servers

Linux Container Struktur

----------+---------+--------------------------------+------+------------+-----------+
|   NAME   |  STATE  |              IPV4              | IPV6 |    TYPE    | SNAPSHOTS |
+----------+---------+--------------------------------+------+------------+-----------+
| bt2      | RUNNING | 192.168.1.14 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| database | RUNNING | 192.168.1.15 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| ddmesh   | RUNNING | 192.168.1.99 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| devel    | RUNNING | 192.168.1.21 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| download | RUNNING | 192.168.1.13 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| git      | RUNNING | 192.168.1.20 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| icvpn    | RUNNING | 192.168.1.16 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+
| mail     | RUNNING | 192.168.1.11 (eth0)            |      | PERSISTENT | 1         |
+----------+---------+--------------------------------+------+------------+-----------+
| vpn1     | RUNNING | 192.168.1.10 (eth0)            |      | PERSISTENT | 1         |
|          |         | 172.31.242.46 (vpn0)           |      |            |           |
|          |         | 10.200.1.1 (bmx_prime)         |      |            |           |
+----------+---------+--------------------------------+------+------------+-----------+
| www      | RUNNING | 192.168.1.12 (eth0)            |      | PERSISTENT | 0         |
+----------+---------+--------------------------------+------+------------+-----------+

Installation eines leeren Containers

1. Login in Hauptserver via ssh

2. Container image aktualisieren. Dabei wird ein images von Ubuntu aus dem Internet lokal kopiert und davon ein Container erzeugt.

lxc image copy images:ubuntu/yakkety/amd64 local: --alias 16.10
lxc image list
+-------+--------------+--------+-----------------------------------------+--------+---------+------------------------------+                                               
| ALIAS | FINGERPRINT  | PUBLIC |               DESCRIPTION               |  ARCH  |  SIZE   |         UPLOAD DATE          |                                               
+-------+--------------+--------+-----------------------------------------+--------+---------+------------------------------+                                               
| 16.10 | d76375b3b387 | no     | Ubuntu yakkety (amd64) (20161127_03:49) | x86_64 | 80.30MB | Nov 27, 2016 at 3:33pm (UTC) |                                               
+-------+--------------+--------+-----------------------------------------+--------+---------+------------------------------+
lxc launch d76375b3b387 icvpn

3. Netzwerk Konfiguration

Host: /etc/hosts

192.168.1.1     main.lxc
192.168.1.10    vpn1.lxc
192.168.1.11    mail.lxc
192.168.1.12    www.lxc
192.168.1.13    download.lxc
192.168.1.14    bt.lxc
192.168.1.15    database.lxc
192.168.1.16    icvpn.lxc
192.168.1.20    git.lxc
192.168.1.21    devel.lxc

Container: /etc/network/interfaces auto eth0

#iface eth0 inet dhcp
iface eth0 inet static 
       address 192.168.1.16
       netmask 255.255.255.0
       network 192.168.1.0/24 
       broadcast 192.168.1.255
       gateway 192.168.1.1
       # dns-* options are implemented by the resolvconf package, if installed
       dns-nameservers 192.168.1.1
       dns-search freifunk-dresden.de


4. ssh login Einrichten SSH ist für den Zugang zum Git-Linux Container notwendig. Dazu muss ein SSH Key generiert werden.

ssh-keygen #ohne passwort
cat ~/.ssh/id_rsa.pub

Weitere Console öffnen und dort in den Git Container wechseln.

lxc exec git -- bash

Per Copy&Paste den id_rsa.pub key in /home/git/.ssh/authorized_keys einfügen


5. Optional: Alias fuer lxc console und ssh login (+X11 forwarding)

alias icvpn='lxc exec icvpn -- bash'
alias sicvpn='ssh root@icvpn.lxc

6. Installieren von git

apt-get install git

7. Container Basis installieren

git clone ssh://git@git.lxc/~/container-install.git
cd container-install
./vserver-install.sh

Linux Container Anpassung

1. Leeres Git-Repository für den neuen Container erzeugen 2. Clonen des neuen Git-Repositories 3. Manuell alle Anpassungen/Installationen vornehmen und diese in das Repository bringen