9 Ekim 2015 Cuma

LXC (Linux Containers)

Sanallaştırma

Sanallaştırma genel olarak fiziksel makinenin ya da ağ kaynaklarının bölünerek kullanılmasıdır. Bir serverin fiziksel kaynaklarının çeşitli yazılımlarla,birden fazla işletim sistemi ve donanımlara ayrılmasıdır. Birbinden bağımsız olarak açılıp kapatılabilir ve değişik programlar çalıştırılabilir.
Sanallaştırmanın çok fazla yönü vardır:

Platformu Sanallaştırma
Kaynak Sanallaştırma
Depolama Sanallaştırma
Sanallaştırma
Masaüstü Sanallaştırma


Sanallaştırmanın faydaları:
  1. Fiziksel sunucuların sayısını azaltma
  2. Enerji tasarrufu 
  3. Sunucuları tek bir merkezden yönetebildiğin için yönetimse gücü azaltma

LXC(Linux Containers)

Linux sistemlerde kullanabileceğimiz sanallaştırma uygulamasıdır. Lxc bir sunucuda birden fazla işletim sistemini farklı sunuculardaymış gibi çalıştırıyor.


Kurulumu

sudo apt-get install lxc

container oluştururken slackware için  /usr/share/lxc/templates klasörü altında yer alan template scriptleri kullanılıyor. Ben bu dizinin altına baktığımda boştu bu yüzden lxc-template paketini indirdim.container oluştururken debootsrap(containerın dosya sistemini ayarlamak için gereklidir) ve libvirt(container yönetimi için) paketleri de gereklidir . Gerekli paketleri indirdikten sonra  container oluşturmak için aşağıdaki komutu kullanıyoruz:


sudo lxc-create -t slackware -n container_name

Arka planda çalıştırmak için:

sudo lxc-start  -n container_name -d 

Konsola bağlanmak için:

sudo lxc-console -n container_name

Durdurmak için:

sudo lxc-stop -n container_name

Network Yapılandırması

Yapılandırma için bridge_utils dnsmasq ve iptables paketleri gereklidir.

host makinesinde ilk olarak bridge device oluşturduk(Bridge device aynı protokolü kullanan diger ağlarla ara bağlantı sağlayan bilgisayar ağ cihazıdır.)

brctl addbr br0
brctl setfd br0 0
ifconfig 192.168.100.1 netmask 255.255.255.0 promisc up

echo 1> /proc/sys/net/ipv4/ip_forward (ip_forward açıyoruz)
echo 1> /proc/sys/net/ipv4/conf/br0/proxy_arp (br0 için proxy açıyoruz)


host sisteminde nat tablosunda trafik yönelendirmesi yapıyoruz.İnternet erişimimi eth0 dan sağladığım için out device olarak onu ayarladım:

iptables -t nat -A POSTROUTING -o eth0 -j MASQERADE

dnsmasq'ın global configuration dosyasında (/etc/dnsmasq.conf)  şu satırın ekli olup olmadığını kontrol edin değilse ekleyin:

conf-dir = /etc/dnsmasq.d


Şimdi /etc/dnsmasq.d dizinin altına br0.conf  dosyası oluşturun içine aşağıdaki satırları ekleyin:

interface=br0
dhcp-range = 192.168.100.2,192.168.100.254,72h
bind-interfaces
except-interface=virbr0


/var/lib/lxc/container_name/config dosyasına aşağıdaki eklemeleri yapıyoruz:

#Network
lxc.network.type = veth
lxc.network.flags = up

#Network host side
lxc.network.link = virbr0

#Must be Unıque for each container
lxc.network.veth.pair= veth0
lxc.network.hwaddr=00:FF:AA:00:00:01

#Network container side 
lxc.network.name=eth0
lxc.network.ipv4=0.0.0.0/24

Yapılandırmaları yaptıktan sonra containerı baştan başlatabilirsiniz.


Lxc container oluştururken oluşturduğum containerdan ayar yapmadan ip adresi atamak için aşağıdaki değişiklikleri yapmanız yeterlidir:
/etc/lxc/default.conf dosyasına aşağıdaki satırları ekleyin:

lxc.network.name = eth0
lxc.network.ipv4 = 0.0.0.0/24