Tworzenie kontenerów LXC na VPS KVM

Poradniki
vps, zarządzanie, kvm, poradnik-miesiąca
KMatuszak
KMatuszak Weteran

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 😄

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|359x137

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|110x49

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|206x123

Obok zaznaczamy image|101x34

Teraz klikamy przycisk image|67x31 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|168x71

4. Instalacja panelu ProxmoX

Teraz klikamy na image|139x28 i przechodzimy do zakładki image|79x35 po czym dwukrotnie klikamy image|205x35. Teraz wybieramy przesłany obraz ISO:

image|313x253

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

image|134x87

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

image|690x169

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|559x332

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

image|390x145

Należy go zignorować wciskając przycisk OK. Teraz czytamy (:kappa:) i akceptujemy EULA przyciskiem image|93x47. Kolejny ekran dotyczy konfiguracji dysków - zostawiamy domyślne ustawienia i klikamy przycisk image|80x48. 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|80x48.

image|330x137

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|80x48.

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

image|464x238

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

image|409x123

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

Po ponownym uruchomieniu powinniśmy zobaczyć taki ekran:

image|688x179

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|671x433

Klikamy przycisk image|138x54 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|85x34.

image|418x216

Zobaczysz taki komunikat:

image|627x147

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

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

image|690x347

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|138x29. Teraz u góry klikamy przycisk image|80x36. Wybieramy interesujący nas system operacyjny z listy:

image|618x418

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

7. Tworzenie kontenerów LXC

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

image|690x241

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

image|377x158

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

image|379x175

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

image|370x123

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

image|433x165

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

W kolejnym kroku zmieniamy Bridge na vmbr2

image|363x119

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 😄

image|236x36

W polu Gateway (IPv4) wpisujemy 192.168.100.1

image|224x36

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

image|603x169

W kolejnym kroku nic nie wpisujemy - klikamy przycisk image|68x31

image|679x500

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

Widzimy napis image|107x51 czyli wszystko poszło OK 😄 Zamykamy okienko klikając przycisk image|32x28

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

image|429x33

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|247x72 Wybieramy Yes i potwierdzamy enterem

image|434x66 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 😄

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|81x36 i klikamy dwukrotnie na image|162x38. Zaznaczamy ptaszka i klikamy przycisk image|86x34

image|316x152

Klikamy dwukrotnie na image|149x34. 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|337x210

10. Podsumowanie

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

|84x126Poradnik miesiąca: styczeń 2019

DBanaszewski
DBanaszewski α-tester v3

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:

SystemZ
SystemZ Admin lvlup.pro

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

bopke
bopke Moderator forum.lvlup.pro

Kawał dobrej roboty, brawo! =)

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

dominixz
dominixz

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

liamdj23
liamdj23

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

Kevin94
Kevin94

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 :p

liamdj23
liamdj23

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

Kevin94
Kevin94

KMatuszak:

address xxx.xxx.xxx.xxx netmask 255.255.255.255 gateway 51.68.154.254

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

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

Kevin94
Kevin94

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...

liamdj23
liamdj23

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

KMatuszak
KMatuszak Weteran

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

SystemZ
SystemZ Admin lvlup.pro

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.

SP24
SP24

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

KMatuszak
KMatuszak Weteran

VPS musi mieć wirtualizację KVM oraz system Debian 9

DoreK
DoreK α-tester v3

KMatuszak:

oraz system Debian 9

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

KMatuszak
KMatuszak Weteran

Z tego co mi wiadomo to nie.

SystemZ
SystemZ Admin lvlup.pro

DoreK:

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

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.

kubus
kubus

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)

liamdj23
liamdj23

Sprawdzasz w panelu proxmox lvlup czy w zainstalowanym na vps?

kubus
kubus

oczywiście, że na zainstalowanym na VPS.

liamdj23
liamdj23

Powinieneś mieć dwa dyski: local i local-lvm, pokaż zrzut ekranu

kubus
kubus

Posiadam te dwa. image|125x72

liamdj23
liamdj23

Według tego zrzutu ekranu masz zajęte mniej niż

kubus:

88 procent

Czyli wszystko jest okej :thinking:

KMatuszak
KMatuszak Weteran
Damian28w
Damian28w

Witam,

Da radę by każdy z tych VPS "ów miał swoje indywidualne IP ?

Bo np na innym hostingu jest mozliwość wykupienia sobie adresu IP i sewrera KVM za dość fajne pieniadze stąd moje pytanko :)

Timo
Timo Moderator forum.lvlup.pro

Tak, można przydzielić własne IP do każdego kontenera. Musisz jedynie wykupić te adresy dla swojego pakietu i możesz podłączać.

Aby dokupić adresy IP na lvlup, napisz ticket ;)

Damian28w
Damian28w

A orientujesz się może czy cena za te IP jest miesieczna czy tak jak na innym hostingu jednorazowa ?

eSuu
eSuu

Jest to koszt 10zł/msc za sztukę.

KMatuszak
KMatuszak Weteran

Jeśli nie chcesz się bawić w sklejanie komend do przydzielania portów to możesz skorzystać z tego narzędzia: https://iptables.liamdj23.ovh/ :slight_smile:

KMatuszak
KMatuszak Weteran

Przetestowałem poradnik na najnowszym Proxmox'ie 6.0 bazującym na Debianie 10, nic się nie zmieniło w konfiguracji :slight_smile:

KMatuszak
KMatuszak Weteran

KMatuszak:

Jeśli nie chcesz się bawić w sklejanie komend do przydzielania portów to możesz skorzystać z tego narzędzia: https://iptables.liamxdev.ovh

Nie mogę edytować tamtego posta więc napiszę w nowym, @liamdj23 zmienił domenę i teraz link jest taki: https://iptables.liamdj23.ovh/ 🙂

bopke
bopke Moderator forum.lvlup.pro

Wyedytowałem żeby był aktualny link =)

anon85678085
anon85678085

Polecam, skorzystałem działa na ProXmox 6. 👌

Jellly
Jellly

Da się jakoś przy pomocy iptables z góry przydzielić zakres portów? Średnio mi się widzi wpisywać tak regułkę 20 razy.

Timo
Timo Moderator forum.lvlup.pro

Zakres możesz podać bodajże po dwukropku, na przykład 8080:8084.