Red Hat Enterprise Linux 7 RHEL7 Sistemlerde Network Teaming

Red Hat tabanlı sistemlerde iki network arabirimini tek bir ağ arabirimi olarak göstermek için önceden bonding metodu kullanılmaktaydı.  RHEL 7 ile beraber her ne kadar bonding geriye uyumluluk için desteklense de artık bonding yerine teaming dediğimiz daha performanslı ve modüler dizaynından dolayı daha esnek bir yapı geldi.

RHEL7 içinde bu işlemi sağlamak için yeni bir kernel sürücüsü ve teamd adında yeni bir servis yazılımı (daemon) geldi.Çekirdekteki sürücü ilgili network paketlerini işlerken teamd mantıksal ve arabirim işleme fonksiyuonlarını icra etmektedir. Ayrıca teamd içindeki runner denilen bileşenler de active-backup, loadbalancing gibi işlemleri gerçekleştirmektedir. Teamd ile aşağıdaki runner’lar kullanılabilmektedir.

 

·        Broadcast
Her paketi bütün arabirimlere gönderen basit bir runner.

·        Roundrobin
Paketleri sırasıyla kullanılan interfaceler arasında böler.

·        Activebackup
Link kaybolmalarına karşı arabirimleri( network interface) izleyip link kopması durumunda diğer arabirimden trafiğin akmasını sağlar.

·        Loadbalance
Paketleri bir hash algoritması kullanarak etiketleyip ona göre böler.

·        Lacp

802.3ad Link Aggregation Control Protocol’ünü kullanarak paketleri işler.

 

 

Teamd Paketinin kurulması

Öncelikle teamd paketinin sisteme kurulu olduğundan emin olalım. Bunun için aşağıdaki komut verilir.

# yum install -y teamd

 

Bu şekilde paket kurulduktan sonra team interface işlemi oluşturma işlemine geçilebilir.

Nmcli komutu ile team oluşturma

 

Network arabirimi ayarları için Red Hat 7 işletim sisteminde ön tanımlı gelen Networkmanager paketindeki nmcli komutu  kullanarak team işlemi şu komutlarla oluşturulur.

 

# nmcli con add type team con-name team0 ifname team0

Connection ‘team0’ (7b13a35e-42f8-4fdc-91ea-385095654b6f) successfully added.

# nmcli con add type team-slave con-name team0-slave0  ifname em1 master  team0

Connection ‘team0-slave0’ (2bc70a66-2531-4685-9d4a-42361af1f8ac) successfully added.

# nmcli con add type team-slave con-name  team0-slave1 ifname em2 master  team0

Connection ‘team0-slave1’ (dd5e6013-a8bf-48fe-85db-a3d8b9b81093) successfully added.

# nmcli con up team0-slave0

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

 

# nmcli con up team0-slave1

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

 

Yukarıdaki ilk komut ile team0 adında bir interface eklenir. Aslında bu işleme kadar sistemde bir teamd servisi çalışmaz. Bu ilk komuttan sonra aşağıdaki gibi bir daemon başlar.

# ps axw|grep teamd

 3974 ?        S      0:00 /usr/bin/teamd -o -n -U -D -t team0

 

Daha sonra slave interface’ler eklenerek team0 interface’i oluşturulur. Oluşturulan team0 arabirimi detayları için teamdctl  team0  config dump komutu verilir. Aşağıda görüldüğü üzere Json formatında bir yapılandırması mevcuttur teamd’nin ve ön tanımlı olarak team interface’i oluştururken bir  runner belirtilmediği için roundrobin tipinde bir team arabirimi oluşturulur. Üstteki komutlarda enp0s9 ve enp0s10 arabirimi team0 a eklenmiş oldu.

 

# teamdctl  team0  config dump

{

    “device”: “team0”,

    “ports”: {

        “enp0s10”: {

            “link_watch”: {

                “name”: “ethtool”

            }

        },

        “enp0s9”: {

            “link_watch”: {

                “name”: “ethtool”

            }

        }

    },

    “runner”: {

        “name”: “roundrobin”

    }

}

 

Üstte ayrıca config dump’ından görülebilidiği üzere link gitmesini izlemek için ethtool komutu kullanılmaktadır.

Nmcli ile detaylı yapılandırma

nmcli con add type team con-name team0 ifname team0 komutuna ek olarak istenirse  sonuna aşağıdaki gibi

nmcli con add type team con-name team0 ifname team0 config  config.json

gibi bir parametre verilerek oluşturulan  team arabiriminin nasıl davranacağı belirtilebilir. RHEL7 ile beraber

/usr/share/doc/teamd-1.9/example_configs dizininde örnek alabileceğiniz yapılandırmalalar mevcuttur veya istenirse bu yapılandırma komut satırından da verilebilir.

# nmcli con add type team con-name team0 ifname team0 config  ‘{“runner”: {“name”:  “activebackup”}}’

 

# nmcli con add type team-slave con-name team0-slave0  ifname enp0s9 master  team0

Connection ‘team0-slave0’ (2bc70a66-2531-4685-9d4a-42361af1f8ac) successfully added.

# nmcli con add type team-slave con-name  team0-slave1 ifname enp0s10 master  team0

Connection ‘team0-slave1’ (dd5e6013-a8bf-48fe-85db-a3d8b9b81093) successfully added.

# nmcli con up team0-slave0

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

 

# nmcli con up team0-slave1

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

 

Yapılandırmayı tekrar görmek için

# teamdctl team0 config dump

{

    “device”: “team0”,

    “ports”: {

        “enp0s10”: {

            “link_watch”: {

                “name”: “ethtool”

            }

        },

        “enp0s9”: {

            “link_watch”: {

                “name”: “ethtool”

            }

        }

    },

    “runner”: {

        “name”: “ activebackup”

    }

}

 

Son olarak bu interface’e IP vermek için

# nmcli con mod team0  ipv4.addresses 192.168.56.100/24

# nmcli con mod team0  ipv4.method manual

# nmcli connection modify team0 connection.autoconnect   yes

# nmcli connection reload

# nmcli connection up  team0

 

 

Teamd bağlantısını kaldırmak

 

Team0 bağlantısını kaldırmak için önce slave’ler sonra team0 ‘ın kendisi kaldırılır.

# nmcli connection delete team0-slave0

# nmcli connection delete team0-slave1

# nmcli connection delete team0

 

Nm-connection-editor ile team oluşturmak

Bunun için önce  nm-connection-editor komutu çalıştırılır.

 

Üstte gelen ekranda önce Add tuşuna basılır ve Connection Type olarak Team seçilir ve Create tuşuna basılır. Sonra gelen ekranda aşağıdaki gibi Connection name olarak team0 yazılır ve Teamed Connections kısmında  Add tuşuna basılır.

Sonra aşağıda gelen ekrandan tip olarak öntanımlı tip olan Eterhnet seçili bırakılarak Create tuşuna basılır.



Üstteki gibi Ethernet sekmeninde enp0s9 seçilip, aşağıdaki gibi General tabında Autoconnect yapılırarak Save tuşuna basılır.

 

Aynı işlem enp0s10 interface’i içinde yapılır ve ana ekran şu hale gelir.

Burada Json config dosyasına istenen değişiklikler eklenir.

Üstteki Json Config satırında boşluk karakteri olmaması önemlidir!

 

En son olaraksa Ipv4 Settings tabından aşağıdaki gibi IP bilgisi eklenip, bağlantı Manuel yapılıp save edilir.

 

Umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşem dileği ile.

 

Kaynaklar 

Nmcli-examples , teamdctl ve teamd man sayfaları

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Configure_a_Network_Team_Using-the_Command_Line.html#sec-Configure_Network_Teaming_Using_nmcli

 

 

 

Exit mobile version