Tworzenie kontenerów LXC na VPS KVM

Cześć! W tym poradniku pokażę jak podzielić VPS KVM na mniejsze VPS’y (kontenery) z wirtualizacją LXC. Każdy kontener będzie miał przydzielone inne porty, więc wystarczy nam tylko jeden adres IP. Całością będziemy zarządzać przez darmowy panel ProxmoX który sami zainstalujemy :smile:

1. Co będzie nam potrzebne?

  • Dowolny VPS z aktualnej oferty LVL UP (oprócz KVM PL 1GB)
  • Trochę czasu

2. Pobieranie obrazu ISO ProxmoX’a

Przechodzimy na oficjalną stronę ProxmoX’a oraz kilkamy zakładkę Downloads. W kategorii Download Proxmox software, datasheets and documentation Files klikamy przycisk Download w pierwszej pozycji.

image

Po chwili rozpocznie się pobieranie pliku ISO - ma ono około 600MB więc musimy chwilę poczekać :slight_smile:

3. Przesyłanie pliku .iso do panelu ProxmoX

Może to trochę dziwnie zabrzmi, ale musimy teraz przesłać pobrane ISO panelu ProxmoX do panelu ProxmoX gdzie możemy zarządzać serwerem VPS. Aby to zrobić, musimy się najpierw zalogować - w panelu klienta przechodzimy do zakładki z serwerem VPS oraz klikamy przycisk:

image

Po chwili zobaczymy dane logowania do panelu ProxmoX naszego serwera VPS. Przechodzimy pod podany adres. Dla ułatwienia wybieramy język polski z rozwijanej listy. Po zalogowaniu z lewej strony przeglądarki wybieramy ostatni element.

image

Obok zaznaczamy image

Teraz klikamy przycisk image w górnej części panelu oraz wybieramy i przesyłamy pobrany wcześniej obraz ISO. Ponownie musimy chwilę poczekać. Po poprawnym przesłaniu obrazu zobaczymy go na liście.

image

4. Instalacja panelu ProxmoX

Teraz klikamy na image i przechodzimy do zakładki image po czym dwukrotnie klikamy image. Teraz wybieramy przesłany obraz ISO:

image

Zatwierdzamy przyciskiem OK i przechodzimy do zakładki image. Teraz musimy działać szybko - z rozwijanej listy wybieramy Restart:

image

Odrazu po kliknięciu klikamy również na obszar gdzie widzimy konsolę serwera w celu ukatywnienia okna. Zanim napis ProxmoX zniknie musimy wcisnąć na naszej klawaiaturze przycisk ESC. Jeżeli zobaczysz napisy podobne do tych

to znaczy że się udało. Teraz już nie musimy się śpieszyć. Jeżeli jednak uruchamia się system operacyjny z dysku to oznacza to, że robisz coś nieprawidłowo lub zbyt wolno. Teraz zgodnie z widocznymi napisami chcemy uruchomić instalator ProxmoX’a z napędu DVD na ata1 a więc wciskamy na klawiaturze przycisk 3. Po chwili powinien być widoczny taki ekran:

image

Teraz zatwierdzamy pierwsza opcję wciskając przycisk enter. Po chwili instalator załaduje się. Prawdopodobnie zobaczysz taki komunikat:

image

Należy go zignorować wciskając przycisk OK. Teraz czytamy (:kappa:) i akceptujemy EULA przyciskiem image. Kolejny ekran dotyczy konfiguracji dysków - zostawiamy domyślne ustawienia i klikamy przycisk image. Upewnij się, że na dysku nie ma żadnych potrzebnych ci danych, ponieważ wszystko zostanie usunięte. W następnym kroku wpisujemy Poland w pierwszym polu tekstowym i ponownie klikamy przycisk image.

image

W kolejnym etapie dwukrotnie wpisujemy hasło którym chcemy się logować do panelu ProxmoX oraz nasz adres e-mail na który otrzymamy powiadomienie jeżeli któryś z kontenerów z jakiegoś powodu nie będzie działał prawidłowo. Klikamy przycisk image.

Teraz w polu Hostname wpisujemy nazwę hosta - może być to np. p1.example.com.

image

Resztę ustawień zostawiamy domyślnie - powinny one zostać wykryte automatycznie dzięki serwerowi DHCP. Teraz klikamy przycisk image i czekamy aż instalacja zakończy się. Powinno to zająć mniej niż 5 minut :slight_smile:. Po zakończeniu instalacji zobaczymy

image

Teraz klikamy image i czekamy aż serwer uruchomi się ponownie. Tym razem nie musimy nic wciskać.

Po ponownym uruchomieniu powinniśmy zobaczyć taki ekran:

image

5. Konfiguracja ProxmoX’a

Wchodzimy w przeglądarce pod adres https://xxx.xxx.xxx.xxx:8006 zastępując xxx.xxx.xxx.xxx adresem IP naszego VPS’a.

Uwaga! Koniecznie trzeba użyć protokołu https ponieważ ProxmoX wymusza jego użycie.

Pewnie zobaczysz taki komunikat:

image

Klikamy przycisk image oraz napis Otwórz stronę xxx.xxx.xxx.xxx (niebezpieczną)

Teraz na ekranie logowania wprowadź nazwę użytkownika root, podane przy instalacji hasło oraz wybierz język polski. Pozostaw domyślnie wybraną autoryzację Linux. Kliknij przycisk image.

image

Zobaczysz taki komunikat:

image

Jest to tylko zachęta do kupna lepszej wersji - kliknij przycisk image

Jak widać panel wygląda identycznie tak jak ten od zarządzania serwerem VPS:

Zanim zaczniemy tworzyć kontenery LXC, musimy edytować jeszcze plik /etc/network/interfaces na serwerze gdzie zainstalowany jest panel ProxmoX. Łączymy się z SFTP używając programu np. WinSCP używając adresu IP serwera VPS, nazwy użytkownika root oraz hasła podanego przy instalacji. Otwórz wspomniany wyżej plik przy użyciu programu np. Notepad++.

Aktualnie plik powinien wyglądać podobnie do tego:

auto lo
iface lo inet loopback

iface ens18 inet manual

auto vmbr0
iface vmbr0 inet static
	address xxx.xxx.xxx.xxx
	netmask 255.255.255.255
	gateway 51.68.154.254
	bridge_ports ens18
	bridge_stp off
	bridge_fd 0

Należy na jego końcu dokleić poniższy tekst:

auto vmbr2
iface vmbr2 inet static
    address 192.168.100.1
    netmask 255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE

Ostatecznie plik powinien wyglądać tak:

auto lo
iface lo inet loopback

iface ens18 inet manual

auto vmbr0
iface vmbr0 inet static
	address xxx.xxx.xxx.xxx
	netmask 255.255.255.255
	gateway 51.68.154.254
	bridge_ports ens18
	bridge_stp off
	bridge_fd 0

auto vmbr2
iface vmbr2 inet static
    address 192.168.100.1
    netmask 255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE

Teraz zapisujemy plik i łączymy się z SSH tymi samymi danymi co do SFTP. Wpisujemy komendę reboot i czekamy aż panel uruchomi się ponownie. Przechodzimy ponownie pod adres panelu i logujemy się.

6. Pobieranie szablonów LXC

Musimy teraz pobrać szablony systemów operacyjnych. Po lewej stronie wybieramy image. Teraz u góry klikamy przycisk image. Wybieramy interesujący nas system operacyjny z listy:

image

Ja wybiorę Debiana 8. Klikamy przycisk image i czekamy aż szablon pobierze się. Gdy zobaczysz image możesz zamknąć okno przyciskiem image. Szablon jest już pobrany. Możesz pobrać ich więcej, ale nam na potrzeby poradnika wystarczy tylko Debian 8 :wink:.

7. Tworzenie kontenerów LXC

Po prawej stronie w górnej części panelu klikamy przycisk image. Teraz wpisujemy nazwę naszego kontenera oraz dwukrotnie wpisujemy hasło którym chcemy logować się do konta root. Klikamy przycisk image.

Teraz wybieramy jeden z pobranych wcześniej szablonów i znów klikamy przycisk image

image

Wybieramy rozmiar dysku dla naszego kontenera - nam wystarczy 5GB, klikamy przycisk image

image

Wybieramy ilość rdzeni dla naszego kontenera i klikamy przycisk image

image

Wybieramy ilość ramu oraz swapu dla naszego kontenera i klikamy przycisk image

image

Uwaga! Pamiętaj aby zostawić przynajmniej 512MB ramu dla hosta!

W kolejnym kroku zmieniamy Bridge na vmbr2

image

W polu IPv4/CIDR wpisujemy 192.168.100.x/24 gdzie x to liczba 3 lub większa - każdy kontener musi mieć inną liczbę, zapamiętaj ją ponieważ będzie potrzeba do przydzielania portów :smile:

image

W polu Gateway (IPv4) wpisujemy 192.168.100.1

image

Resztę ustawień zostawiamy domyślnie i klikamy przycisk image

image

W kolejnym kroku nic nie wpisujemy - klikamy przycisk image

Teraz widzimy podsumowanie informacji o naszym kontenerze - jeżeli wszystko się zgadza to zaznaczamy checkboxa image i klikamy przycisk image

Widzimy napis image czyli wszystko poszło OK :smile:
Zamykamy okienko klikając przycisk image

Teraz w zakładce image sprawdzamy czy nasz kontener działa

image

Jeżeli widzisz napis running to jest uruchomiony :slight_smile:

8. Przydzielanie portów

Teraz ponownie logujemy się na SSH hosta używając danych logowania do panelu

Aktualizujemy repozytoria:

apt-get update

(Jeżeli zobaczysz w konsoli takie napisy: E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/stretch/pve-enterprise/binary-amd64/Packages 401 Unauthorized to możesz je zignorować)

Instalujemy narzędzie pozwalające zachować reguły iptables nawet po restarcie serwera:

apt-get -y install iptables-persistent

image
Wybieramy Yes i potwierdzamy enterem

image
Wybieramy No i potweirdzamy enterem

Dodajemy reguły umożliwiające komunikację z kontenerami:

iptables -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j MASQUERADE -t nat
iptables -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j SNAT --to-source X -t nat

W drugiej komendzie należy wpisać adres IP serwera VPS w miejsciu X

Komenda umożliwiająca przydzielenie portu:

iptables -A PREROUTING -i vmbr0 -p X1 -m X2 --dport X3 -j DNAT --to-destination 192.168.100.X4:X5 -t nat

X1 = udp lub tcp małymi literami
X2 = to samo co X1
X3 = port który chcemy przydzielić
X4 = liczba podana przy konfiguracji sieci podczas tworzenia kontenera
X5 = port który chcemy przekierować

Przykład:

iptables -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 44 -j DNAT --to-destination 192.168.100.3:22 -t nat

Ta komenda przekieruje serwer SSH z portu 22 na port 44 :smile:

Po ustawieniu wszystkiego zapisujemy reguły tak aby nie zresetowały się po restarcie:

iptables-save > /etc/iptables/rules.v4

9. Automatyczne uruchamianie kontenerów po restarcie hosta

Przechodzimy do zakładki image i klikamy dwukrotnie na image. Zaznaczamy ptaszka i klikamy przycisk image

image

Klikamy dwukrotnie na image. W polu Start/Shutdown order wpisujemy jako który w kolejności ma uruchomić się kontener. Pole Startup delay przy pierwszym kontenerze zostawiamy puste, ale przy następnych zawsze wpisujemy liczbę o 15 większą, czyli przy drugim będzie to 15 a przy trzecim 30. Pole Shutdown timeout zawsze zostawiamy puste.

image

10. Podsumowanie

Dziękuję @liamdj23 za pożyczenie serwera VPS do napisania poradnika :heart:
Miłego korzystania z kontenerów! :smile:
Użyte strony:

Poradnik miesiąca: styczeń 2019

23 polubienia

Poradnik bardzo fajny, sam musiałem kiedyś chodzić po stronach i czytać jak to skleić, a teraz już wiem gdzie trzeba się udać :slight_smile:

8 polubień

Bardzo dokładny poradnik, brawo :slight_smile:
Proxcepcja jak najbardziej zadziała.

O ile pamiętam da się zainstalować Proxmoxa korzystając z repo i instalując paczki na już zainstalowanym Debianie pomijając kroki związane z instalacją systemu z .iso

14 polubień

Kawał dobrej roboty, brawo! =)

Już za miesiąc nowość w ofercie LVLUP - LXC GAME PRO :kappa:

12 polubień

Poradnik przejrzyście napisany i w zrozumiały sposób. Na pewno mi się przyda :slight_smile:

6 polubień

Opłacało się VPSa pożyczyć, gratuluję świetnego poradnika! :heart:

10 polubień

zainstalowałem na debian 9 stretch z https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch

tylko w /etc/network/interfaces
mam

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto eth0
iface eth0 inet dhcp

Podpowiedział byś mi jak to uzupełnić ? xd bo moja niewiedza nie pozwala mi na skonfigurowanie tego :stuck_out_tongue:

Musisz uzupełnić danymi z poradnika zgodnie z tym co masz napisane w panelu lvlup

3 polubienia
wpisać to tak jak podałeś ? 
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
gateway 51.68.154.254

Pamiętaj aby wszędzie zastąpić xxx.xxx.xxx.xxx adresem swojego serwera VPS oraz wpisać prawidłowy gateway

3 polubienia

ok czyli w moim przypadku gateway to będzie
10.156.0.1

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.156.0.1      0.0.0.0         UG    0      0        0 eth0
10.156.0.1      0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 vmbr2

a w polu addres to ip zewnętrzne kvm ? czy wewnętrzne ? czy co xd
przepraszam że tak dopytuję ale pusty jestem w tym…

w polu address wpisz IP przez które łączysz się z VPS np. przez SSH

3 polubienia

Nie sądzę aby taki był gateway, masz go w panelu tam gdzie konfiguracja sieci w czterech ostatnich linijkach

2 polubienia

Trochę źle doradzacie.
Jeśli ktoś ma ustawione DHCP to jest najlepsza konfiguracja bo jest odporna na przenoszenie węzłami, gdyż wtedy brama może ulec zmianie.

Wystarczy ustawić dhcp na bridge i będzie ok, w przeciwnym razie przy ewentualnych pracach technicznych odetnie neta od VPS.

Sugerowałbym zmodyfikować poradnik aby uwzględniał DHCP, mniej roboty i mniej awaryjne.

6 polubień

A jeśli mam vpsa od DigitalOcean i na nim chcę zrobić kilka kontenerów, to ten poradnik też będzie odpowiedni?

1 polubienie

VPS musi mieć wirtualizację KVM oraz system Debian 9

3 polubienia

to na ubuntu nie da się? ;] ;]

1 polubienie

Z tego co mi wiadomo to nie.

2 polubienia

Da się ale bez Proxmoxa.
Proxmox jest oparty o Debiana.
Na Ubuntu polecam LXD czyli w zasadzie LXC na sterydach.
Proxmox z tego co się orientuje nawet część fixów do LXC bierze właśnie z Ubuntu LXD.

1 polubienie

Zainstalowałem według poradnika, nic nie ruszałem dalej ani stawiania LXC i wchodzę w Disks > LVM i widzę, że jest zajęte już 88 procent i jest wolne 3GB. To ma tak być?(mam 25GB dysku)

2 polubienia