Neuer Hetzner Rootserver

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
DeletedUserReAsG

Re: Neuer Hetzner Rootserver

Beitrag von DeletedUserReAsG » 19.09.2017 05:33:56

In Debianzfs-utils sind die Sachen, die du benötigst. Wenn das im Rescuesystem nicht zur Verfügung steht, kannst du eine Art Hilfssystem auf einer kleinen Partition am Ende des Datenträgers debootstrappen, dort alles Benötigte drauftun und von dort aus die eigentliche Rootpartition formatieren und die Installation durchführen.

Wie ZFS generell benutzt wird, wirst du ja sicher wissen, wenn du’s so unbedingt als Root-FS haben willst (wovor an verschiedenen Stellen abgeraten wird, btw. – aber die Warnungen hast du ja sicher auch alle gelesen). Außderdem ist zu bedenken, dass vom Rescuesystem aus nicht auf das System zugegriffen werden kann, wenn es die Voraussetzungen nicht mitbringt.

Mal direkt gefragt: bist du sicher, dass du ZFS auf der Rootpartition brauchst? Wenn ja, welche Vorteile versprichst du dir davon? Auf einem Server, der zuverlässig laufen soll, würde ich beim Root-FS auf was Bewährtes zurückgreifen, etwa ext4 – auch, wenn’s langweilig ist. Bei den Datenpartitionen mag ZFS Vorteile bringen, und da kann man es ohne die eingangs erwähnten Verrenkungen drauftun.

Nicht böse gemeint: „Ich kenne mich nicht so gut aus“ und „Ich will einen Server mit einem experimentellen Setup fahren“ passt in meinen Augen nicht so richtig zusammen.

Colttt
Beiträge: 2983
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Neuer Hetzner Rootserver

Beitrag von Colttt » 23.09.2017 02:20:01


scientific hat geschrieben:
Nicht ohne Grund gibts so einen Hype darum.

Lg scientific
Der Hype besteht IMHO nur deswegen weil die bei Docker nen besseres Marketing haben. LXC ist Docker nachvwie vor an features überlegen, davon abgesehen finde ich es gruselig dass das teil von irgendwo sich sein OS lädt und installiert, zumal es auch nicht gewollt ist sich dort per ssh ein zu loggen.. dann lieber LXC..

Zu ZFS, warum? Btrfs sollte für diesen zweck mehr als ausreichend sein.

Und wie soll er das mit den IPs und den Webseiten machen? Im normalfall gibt hetzner 1IPv4 raus.. wenn er jetzt jede seite virtualisiert, braucht er doch jedes mal eine IP, oder hab i da grade nen Denkfehler?
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Neuer Hetzner Rootserver

Beitrag von bluestar » 23.09.2017 10:40:45

Colttt hat geschrieben: ↑ zum Beitrag ↑
23.09.2017 02:20:01
Und wie soll er das mit den IPs und den Webseiten machen? Im normalfall gibt hetzner 1IPv4 raus.. wenn er jetzt jede seite virtualisiert, braucht er doch jedes mal eine IP, oder hab i da grade nen Denkfehler?
Naja wenn er jede Seite in ne eigene VM packen will, dann braucht er dort ja auch mehrere IPs seitens Hetzner... Ist ja kein Problem, die kann erdort ja buchen.

jeff84
Beiträge: 324
Registriert: 15.07.2009 13:32:36

Re: Neuer Hetzner Rootserver

Beitrag von jeff84 » 23.09.2017 14:48:45

Colttt hat geschrieben: ↑ zum Beitrag ↑
23.09.2017 02:20:01
Und wie soll er das mit den IPs und den Webseiten machen? Im normalfall gibt hetzner 1IPv4 raus.. wenn er jetzt jede seite virtualisiert, braucht er doch jedes mal eine IP, oder hab i da grade nen Denkfehler?
Oder nen Haproxy davor auf den Server und ins Backend nur mit privaten IPs sprechen.

Colttt
Beiträge: 2983
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Neuer Hetzner Rootserver

Beitrag von Colttt » 26.09.2017 23:39:15

@jeff84: ein traum wäre eine beispielconfig hier zu posten ;)
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Neuer Hetzner Rootserver

Beitrag von bluestar » 27.09.2017 12:42:45

Colttt hat geschrieben: ↑ zum Beitrag ↑
26.09.2017 23:39:15
@jeff84: ein traum wäre eine beispielconfig hier zu posten ;)
Dem kann ich mich uneingeschränkt anschliessen.

jeff84
Beiträge: 324
Registriert: 15.07.2009 13:32:36

Re: Neuer Hetzner Rootserver

Beitrag von jeff84 » 30.09.2017 00:04:06

Ok, fangen wir an.

Ziel:
- ein Root-Server (IP: 1.2.3.4)
- 4 VMs, auf denen je ein Webdienst läuft
- 1 VM auf der ein DNS Server läuft
- Alle VMs in verschiedenen Subnetzen (Bereich: 172.30.0.0/16), können also nur geroutet miteinander sprechen, mit Ausnahme der beiden Webserver der w3-App

zusätzliche Netz-Config des Servers:

Code: Alles auswählen

~ # cat /etc/network/interfaces.d/virt-bridge 
iface vbr1 inet static
	address 172.30.1.1
	netmask 255.255.255.0
	bridge_ports none

iface vbr2 inet static
	address 172.30.2.1
	netmask 255.255.255.0
	bridge_ports none

iface vbr3 inet static
        address 172.30.3.1
        netmask 255.255.255.0
        bridge_ports none
        
iface vbr4 inet static
        address 172.30.4.1
        netmask 255.255.255.0
        bridge_ports none
Konfiguration Netzwerk-Karte VM's

Code: Alles auswählen

~ # virsh dumpxml vm1
...
    <interface type='bridge'>
      <mac address='11:22:33:44:55:66'/>
      <source bridge='vbr1'/>
      <target dev='vnet3'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
...
Konfiguration Netzwerk VM's

Code: Alles auswählen

~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens2
iface ens2 inet static
	address 172.30.1.10/24
	gateway 172.30.1.1
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 8.8.8.8 8.8.4.4
weitere Config auf dem Server:

Code: Alles auswählen

~ # sysctl -w net.ipv4.ip_forward=1
~ # iptables -t nat -A POSTROUTING -o enp3s0 -s 172.30.1.0/24 -j MASQUERADE
~ # iptables -t nat -A POSTROUTING -o enp3s0 -s 172.30.2.0/24 -j MASQUERADE
~ # iptables -t nat -A POSTROUTING -o enp3s0 -s 172.30.3.0/24 -j MASQUERADE
~ # iptables -t nat -A POSTROUTING -o enp3s0 -s 172.30.4.0/24 -j MASQUERADE
~ # iptables -t nat -A PREROUTING -d 1.2.3.4/32 -i enp3s0 -p udp -m udp --dport 53 -j DNAT --to-destination 172.30.4.10:53
~ # iptables -t nat -A PREROUTING -d 1.2.3.4/32 -i enp3s0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.30.4.10:53
~ # certbot certonly --webroot -w /srv/www/letsenc --rsa-key-size 4096 -d w1.example.net -d w2.example.net -d w3.example.net
~ # cat /etc/letsencrypt/live/w1.example.net/privkey.pem /etc/letsencrypt/live/w1.example.net/fullchain.pem > /etc/haproxy/ssl/w1.example.net.pem
Und dann kommt der Haproxy dran:

Code: Alles auswählen

~ # cat /etc/haproxy/haproxy.cfg 
global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# Default ciphers to use on SSL-enabled listening sockets.
	# For more information, see ciphers(1SSL). This list is from:
	#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
	# An alternative list with additional directives can be obtained from
	#  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
	ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
	ssl-default-bind-options no-sslv3

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
	option forwardfor
        option http-server-close
        timeout connect 5000
        timeout client  50000
        timeout server  50000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http

userlist stats-auth
	group admin    users haadmin
        user  haadmin    insecure-password admin-password
	group readonly users hastats
        user  hastats  insecure-password stats-password


listen HAProxy-Statistics
        bind 1.2.3.4:444 ssl crt /etc/haproxy/ssl no-sslv3
        option httplog
        option httpclose
        stats enable
        stats uri /haproxy?stats
        stats refresh 20s
        stats show-node
        stats show-legends
        stats show-desc Haproxy
        acl AUTH       http_auth(stats-auth)
        acl AUTH_ADMIN http_auth_group(stats-auth) admin
        stats http-request auth unless AUTH
        stats admin if AUTH_ADMIN

frontend www-http
        bind 1.2.3.4:80
        reqadd X-Forwarded-Proto:\ http
        acl letsenc_app path_beg -i /.well-known/acme-challenge/
	acl w1_app hdr(host) w1.example.net
	acl w2_app hdr(host) w2.example.net
	acl w3_app hdr(host) w3.example.net
	use_backend letsenc if letsenc_app
	use_backend w1-backend if w1_app
	use_backend w2-backend if w2_app
	use_backend w3-backend if w3_app

	
frontend www-https
        bind 1.2.3.4:443 ssl crt /etc/haproxy/ssl no-sslv3
        reqadd X-Forwarded-Proto:\ https
        acl secure dst_port eq 443
        rspadd Strict-Transport-Security:\ max-age=31536000; if secure
        tcp-request inspect-delay 5s
        tcp-request content accept if { req_ssl_hello_type 1 }
        use_backend w1-backend if { ssl_fc_sni -i w1.example.net }
        use_backend w2-backend if { ssl_fc_sni -i w2.example.net }
        use_backend w3-backend if { ssl_fc_sni -i w3.example.net }


backend letsenc
        server lets01 127.0.0.1:8880 check

backend w1-backend
        redirect scheme https if !{ ssl_fc }
        balance roundrobin
        server w1_01  172.30.1.10:80 check

backend w2-backend
        redirect scheme https if !{ ssl_fc }
        balance roundrobin
        server w2_01  172.30.2.10:80 check
        
backend w3-backend
        redirect scheme https if !{ ssl_fc }
        balance roundrobin
        server w3_01  172.30.3.10:80 check
        server w3_02  172.30.3.20:80 check
Noch ein kleiner NGINX-vHost auf dem Hauptserver:

Code: Alles auswählen

~ # cat /etc/nginx/sites-enabled/letsencrypt 
server {
        listen          127.0.0.1:8880;
        server_name     localhost;
        charset         utf-8;
        root            /srv/www/letsenc;
        location / {
        }
    }
Ich hoffe ich habe nichts entscheidendes vergessen. Ist schon spät und das entspricht auch nicht wirklich meinem Setup, sollte aber so oder so ähnlich funktionieren... ;-)

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Neuer Hetzner Rootserver

Beitrag von bluestar » 20.10.2017 09:22:22

Ich bin den ZFS Problemen gerade auf den Grund gekommen.. Das Hetzner Rescue System ist ein Debian 8.0 Jessie, das musst du natürlich beachten.

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Hetzner Rootserver

Beitrag von graubart » 07.11.2017 16:31:48

wir haben den Bogen jetzt dank eurer Hilfe raus denke ich. Bleibt nur diue Frage nun, wieviel Speicherplatz für die einzelnen Verzeichnisse reservieren müssen: /, /home, /boot
Was meint ihr. De gesamte Speicerplatz beträgt, 2x4TB. Derzeit haben wir ca. 1,2TB in Nutzung auf dem alten Server, davon 1,1TB in /.
Gruß
Henrik

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Neuer Hetzner Rootserver

Beitrag von bluestar » 12.12.2017 13:33:44

graubart hat geschrieben: ↑ zum Beitrag ↑
07.11.2017 16:31:48
wir haben den Bogen jetzt dank eurer Hilfe raus denke ich. Bleibt nur diue Frage nun, wieviel Speicherplatz für die einzelnen Verzeichnisse reservieren müssen: /, /home, /boot
Ich würde erst einmal gar keinen Speicherplatz "reservieren", wozu?
graubart hat geschrieben: ↑ zum Beitrag ↑
07.11.2017 16:31:48
Was meint ihr. De gesamte Speicerplatz beträgt, 2x4TB. Derzeit haben wir ca. 1,2TB in Nutzung auf dem alten Server, davon 1,1TB in /.
Du solltest mal analysieren, in welchem Verzeichnis die 1.1TB tatsächlich liegen.

Code: Alles auswählen

for dir in $(ls -1 / | grep -v proc | grep -v sys); do du -hs /$dir; done
Wenn du die Größenverteilung kennst, dann solltest du überlegen welche Verzeichnisse du als einzelens ZFS haben möchtest z.B. um Snapshots zu machen bzw. Daten effektiv voneinander trennen zu können...

Antworten