Proxy in einem (LXC)-Container setzen

Da ein paar Server in meinem Netz nicht direkt, sondern nur via Reverse-Proxy erreichbar sind haben diese auch keinen direkten Internetzugang. Sie müssen sich also auch Updates etc. via Proxy holen.

Dafür setze ich zum einen APT-Cacher-NG, und zum Anderen einen Squid ein. Apt könnte natürlich auch über den Squid laufen, aber da ja mehrere Server laufen muss ich nicht alle Updates zig mal herunterladen.

Den Proxy für APT setzt man einfach indem man eine Datei erstellt

$ nano /etc/apt/apt.conf.d/00aptproxy

Hier wird nun der Proxy eingetragen

Acquire::http::Proxy "http://aptproxy.domain.de:3142“;
Acquire::https::Proxy "https://aptproxy.domain.de:3142“;

Damit wget z.B. aber auch via Proxy raus geht kann man den „normalen“ Proxy beispielsweise ins Environment setzen. Dies geschieht durch

$ nano /etc/enviroment

und eintragen der Werte

$ nano /etc/environment
http_proxy=http://proxy.domain.de:3128
https_proxy=https://proxy.domain.de:3128
ftp_proxy=ftp://proxy.domain.de
no_proxy=localhost,intranet.domain.de
soap_use_proxy=on

Nun hatte ich das Problem das ein Container das so gesetzte Environment nicht übernimmt, sondern offensichtlich das des Host auf dem er läuft. Da sich Host und Gast aber in unterschiedlichen Netzen befinden kann der Proxy nicht aufgelöst werden.

Deswegen setzt man den Proxy für wget in dessen Config-Datei

$ nano /etc/wgetrc
https_proxy = https://proxy.domain.de:3128/
http_proxy = http://proxy.domain.de:3128/
ftp_proxy = http://proxy.domain.de:3128/

Separaten (SSD) Root unter Ceph einrichten

In meinem (Proxmox)-Ceph Cluster möchte ich mit ein paar SSD einen separaten Root Bereich zur Ablage von VM-Images realisieren. Früher musste man dazu die Crush-Map noch von Hand extrahieren, anpassen und wieder einspielen. In der von mir eingesetzten Jewel-Version geht das auch schon mit dem CLI.

Zunächst ein neuen Root-Container erzeugen:

$ ceph osd crush add-bucket ssds root

Da in Ceph-Servern schon SATA Platten verbaut und genutzt sind, muss man für den neuen Pool gefakten Hostnamen anlegen

$ ceph osd crush add-bucket ceph01-ssd host
$ ceph osd crush add-bucket ceph02-ssd host
$ ceph osd crush add-bucket ceph03-ssd host

In die ceph.conf (/etc/pve/ceph.conf wird im [osd]-Abschnitt der folgende Eintrag gemacht, damit nach einem Reboot die OSD nicht wieder in den default-Pool gelegt werden.

[osd]
osd crush update on start = false

In meinem Fall hat dies schon gelangt, damit die OSD permanent im SSD-Container bleiben. Falls das nicht klappt kann man probieren den jeweiligen OSD direkt anzuweisen wo er liegt. Dazu ebenfalls in der ceph.conf einen Eintrag pro OSD machen.

[osd.13]
host = ceph01
osd_journal = /dev/disk/by-id/ata-SATA_SSD_67F584760C2400150026-part1
crush_location = root=ssds host=ceph01-ssd

Nun kann man die neuen OSD anlegen. Entweder via GUI oder

ceph osd crush add 13 0.64 root=ssds

Hierbei ist „13“ die OSD-Nummer und 1.5 gibt die weight an. Eine weight von 1 entspricht 1TB.

Im Anschluss verschiebt man die OSD in den neuen Container.

ceph osd crush set osd.13 0.64 root=ssds host=ceph01-ssd

Nun kann man einen neuen Pool erzeugen. Via Webinterface oder

ceph osd pool create ssdpool 64 64

Anschließend muss noch eine Crush-Rule erzeugt werden

ceph osd crush rule create-simple ssdpool ssds host

Der letzte Schritt ist die Cruh-Rule dem neuen Pool zuzuweisen

ceph osd pool set ssdpool crush_ruleset 3