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
Ağ Sanallaştırma
Masaüstü Sanallaştırma
Sanallaştırmanın faydaları:
- Fiziksel sunucuların sayısını azaltma
- Enerji tasarrufu
- 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