Ubuntu Server Üzerinde Service Olarak Nats Streaming’in Kurulumu

Tugay Ersoy
4 min readApr 8, 2021

--

Merhaba, bir önceki yazımda Nats Streaming’den ve Subscription senaryolarından bahsetmiştim bu yazımda da Nats Streaming’i Ubuntu Server üzerinde nasıl bir service olarak başlatabileceğimizden bahsedeceğim. Şimdiden keyifli okumalar.

Nats Streaming, Windows Server üzerinde çalıştırılabileceği gibi bir Linux distrosu üzerinde de çalıştırılabilir fakat storage için gerekli olan file gösterilirken Windows’da olduğu gibi bir shared folder göstermek pek mümkün değildir. Bu sebeple Ubuntu sunucularda bunu bir NFS (Network File System) çözümü ile sağlıyoruz.

Ubuntu Sunucu Üzerinde NFS Directory’i Mount Etme

Öncelikle Mount etme işlemini yapabilmek için bir NFS paylaşımı gerekmektedir. Bu paylaşımı Windows Sunucularda da Linux sunucularda da sağlayabiliyoruz. Gerçekleştirdiğim bu örnekte Windows Sunucu üzerinde NFS ile share ettiğim bir path’i Ubuntu Server üzerinde mount ederek, gerekli shared alana erişmiş oldum.

Yeni kurulan bir Ubuntu sunucu üzerinde mount işlemini yapabilmek için öncelikle sunucuda gerekli update’ler yapılmış ve nfs-common paketinin yüklenmiş olması gerekmektedir.

1. Gerekli update işlemleri için aşağıdaki komutlar çalıştırılmalıdır

$ sudo apt-get update 
$ sudo apt-get upgrade

2. nfs-common paketini yüklemek için aşağıda yer alan komut çalıştırılmalıdır.

$ sudo apt install nfs-common

3. Mount işlemi aşağıdaki komut ile gerçeklenir.

$ sudo mount nfs_host_ip_or_hostname:/host_path /client_path

Mount işlemi gerçekleştirilirken NFS’in yer aldığı sunucunun ip veya hostname bilgisi girilebilir.

4. Mount işleminin gerçeklendiği aşağıdaki komut ile teyit edilir.

Komut çalıştırıldıktan sonra, terminal ekranına gelen listede belirtiğiniz mount’un yer almış olması gerekmektedir. Mount ismi ve yer aldığı hostname veya ip gözükmektedir.

$ df -h
  • Unmount işlemi için de aşağıda yer alan komut çalıştırılabilir.
$ sudo umount /client_path

Nats Streaming’in Kurulumunu Gerçekleştirme

Nats Streaming’in bir Linux distrosunda kurulum için öncelikle güncel github reposundaki versiyon makineye indirilir ardından gerekli config ayarları yapılabilir

1. Nats’ın çalışacağı directory oluşturulur. Güncel versiyon, github reposunda Curl komutu ile indirilir.

curl -L https://github.com/nats-io/nats-streaming-server/releases/download/v0.21.1/nats-streaming-server-v0.21.1-linux-amd64.zip -o nats-streaming-server.zip

Curl yüklü değilse kurulumun gerçekleştirilmesi gerekmektedir.

2. İndirilen dosya zip’den belirtilen directory’e çıkartılır. Şimdilik tmp klasörü altına çıkartıyoruz.

$ unzip nats-streaming-server.zip -d tmp

3. İstenilen path’e cp komutu ile kopyalanabilir.

$ cp tmp/nats-streaming-server-v0.21.1-linux-amd64/nats-streaming-server /srv/nats-streaming/bin

Ubuntu sunucu üzerinde servis olarak çalışacak third party uygulamalar best practice olarak srv/ altında konumlandırılmalıdır.

4. Uygulama test edilir.

$ ./nats-streaming-server

5. Config dosyası oluşturulur ve açılan dosya içerisine belirtilen configler girilir.

Örnek config aşağıdaki gibidir. Config içerisinde yüklenen directory’e göre ayarlamalar yapılmalıdır.

http_port: 8222 # Monitoring için Nats'ın çalışacağı port 
port: 4222
debug: false
trace: false
logtime: true
logfile_size_limit: 100MB
log_file: "/srv/nats-streaming/log/nats-server.log" # Default olarak sunucu eventlerine basılan log file'a da basılabilir.

cluster: {
port: 6222
routes: ["nats://x.x.x.x:6222"] # ft mode'da çalışacağından ft group içerisinde yer alan diğer sunucu
}

streaming {
cluster_id: deneme_cluster
store: "file" # storage olarak file belirtiyoruz.
dir: "/srv/nats-storage" # nfs'i mount ettiğimiz directory
ft_group: "ftgroup1"
file_options {
buffer_size: 32mb
parallel_recovery: 16
}
store_limits {
# Limitler genel verilebileceği gibi Channel bazında da verilebilmektedir.
max_age: "48h"
max_inactivity: "48h"
}
}

Nats Streaming’i Çalıştıracak Servis Kullanıcısını Oluşturma

Linux distrolarda best practice olarak her servisi kendi user account’u oluşturulup bu account ile servis çalıştırılmalıdır. Bu sebeple user oluşturulup ardından servis belirtilen yetkilerde ve oluşturulan user ile başlatılacaktır.

1. nats isminde system user ve aynı isimde group oluşturuyoruz.

$ sudo adduser --system --group --no-create-home --shell /bin/false nats

— shell /bin/false ile belirtilen user için login olunması ve — no-create-home ile de belirtilen user için home directory oluşturulmasının önüne geçilmiştir.

2. nats kullanıcısına belirtilen directory için owner yetkisini tanımlıyoruz.

sudo chown -R nats:nats /srv

Servisi en başta /srv altında tanımladığımız için bu şekilde yetki verdik. Burada yer alan -R argümanı ilen bu path altında yer alan directory ve dosyalar içinde aynı owner yetkisini vermiş olduk.

Nats Streaming’i Servis Olarak Çalıştırma

  • Nats Streaming belirttiğimiz config dosyası ve kullanıcı ile servis olarak başlatacaktır.
  • Sistem kendini tekrar başlattığında servisde otomatik başlayacaktır.

1. Ubuntu sunucularda kullanıcı tanımlı servisler /etc/systemd/system/ altında yer almaktadır. Bu sebeple nats-streaming.service adında bir dosya oluşturuyoruz.

nano nats-streaming.service

2. Servis tanımını aşağıdaki gibi düzenliyoruz.

[Unit] Description=NATS-Streaming Server [Service] ExecStart=/srv/nats-streaming/bin/nats-streaming-server -sc /srv/nats-streaming/config.file -m 8222 User=nats Restart=on-failure [Install] WantedBy=multi-user.target

3. Servisi başlatıyoruz.

sudo systemctl start nats-streaming

4. Sunucunun restart olması durumuna karşın aşağıdaki komut ile başlatılırken servisinde başlatılması sağlanır.

sudo systemctl enable nats-streaming

Bu adımlarla Ubuntu bir sunucu üzerine Nats Streaming’i kurmuş olduk. Bir sonraki yazımda Nats Streaming’in Monitoring EndPoint’i üzerinden Queue işlemlerinin nasıl yorumlanabileceğini aktarıcam. Umarım faydalı olmuştur. Sağlıklı günler herkese

Originally published at http://github.com.

--

--