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 · Roundrobin · Activebackup · Loadbalance · 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ı