Docker Container: SQL Server 2019 AlwaysOn Availability Group – Part 1

SQL Server 2016 versiyonu ile birlikte Linux desteğine kavuştu. 2017 ve 2019 versiyonları ile birlikte Linux ve Container platformları üzerinde HA/DR, Kubernetes ve Big Data Cluster çözümleri desteklenmeye başladı.

Bu yazı serisinde Docker Container üzerinde, 3 node’lu SQL Server 2019 kurulumu yapacağız ve AlwaysOn Availability Group oluşturacağız.

Amacımız, tek bir konfigürasyon dosyasıyla hızlıca ortamımızı hazır hale getirip, compatibility, connectivity, code functional vb. testlerin koşabileceği ortamı developer ya da test ekiplerine sunmak.

Bu bölümde öncelikle container üzerinde Availability Group kurulumu gerçekleştirebilmek için Ubuntu’yu base alan bir image hazırlayıp, sonrasında gerekli kurulumları yaparak hazır hale getireceğiz.

Önemli: İşlemleri production ortamında yapmanız önerilmez. Kurulumlar Ubuntu 18.04 üzerinde gerçekleştirilmiştir.

Docker kurulumu için detaylı bilgiye buradan ulaşabilirsiniz.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic

Öncelikle önceki sürüme ait docker kurulumu varsa kaldırmamız öneriliyor. Sonrasında docker kurulumu için gerekli olan paketleri yüklememiz gerekiyor:

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

Docker’ın resmi GPG keyini ekliyoruz:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Docker reposunu ekliyoruz:

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Yükleme adımında son olarak Docker engine’i yükleyelim:

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Docker kurulumunu doğrulamak için aşağıdaki komutu çalıştırıyoruz:

$ sudo docker run hello-world

Çıktının aşağıdaki gibi olması gerekiyor. “Unable to …” bölümü uyarı olarak geliyor fakat localde image bulunmadığı ve docker hubtan çektiği için bu uyarıyı veriyor.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
..
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Her seferinde sudo yazmamak için sudo su ile geçiş yapıyoruz:

$ sudo su

Image’ı hazırlamak için Ubuntu ve SQL Server 2019 container imagelarını docker hubtan çekiyoruz:

$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
23884877105a: Pull complete
bc38caa0f5b9: Pull complete
2910811b6c42: Pull complete
36505266dcc6: Pull complete
Digest: sha256:3235326357dfb65f1781dbc4df3b834546d8bf914e82cce58e6e6b676e23ce8f
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

$ docker pull mcr.microsoft.com/mssql/server:2019-latest
2019-latest: Pulling from mssql/server
5b7339215d1d: Pull complete
14ca88e9f672: Pull complete
..
9a00f22bcd90: Pull complete
1a5a58ce1097: Pull complete
Digest: sha256:360f6e6da94fa0c5ec9cbe6e391f411b8d6e26826fe57a39a70a2e9f745afd82
Status: Downloaded newer image for mcr.microsoft.com/mssql/server:2019-latest
mcr.microsoft.com/mssql/server:2019-latest

Imagelar çekildikten sonra localimizde yer alan imageları listeyelim:

$ docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
ubuntu                           18.04               c3c304cb4f22        5 weeks ago         64.2MB
mcr.microsoft.com/mssql/server   2019-latest         d60e9ac97708        2 months ago        1.5GB
hello-world                      latest              bf756fb1ae65        5 months ago        13.3kB

Kontrol amacıyla SQL Server 2019 containerını oluşturup versiyon bilgisini kontrol edelim. Kullanıcı sözleşmesini kabul etmek ve SA şifresini belirlemek için ortam değişkenlerini (env var) ve dışarıya açık olan portun containerda hangi port(lara)a mapleneceğini setliyoruz:

$ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Str0ngPa$$w0rd" \
   -p 1501:1433 --name sqldemo \
   -d mcr.microsoft.com/mssql/server:2019-latest

Çalışan containerları görüntülemek için aşağıdaki kodu çalıştırıyoruz:

$ docker ps -a
CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
9c3eceb18f3f        mcr.microsoft.com/mssql/server:2019-latest   "/opt/mssql/bin/perm…"   36 seconds ago      Up 34 seconds       0.0.0.0:1501->1433/tcp   sqldemo

Yalnızca bizim oluşturduğumuz containerı görüntülüyoruz, eğer test amaçlı oluşturduğunuz containerlar varsa listede farklı containerlar görebilirsiniz. Etkileşimli mode’a geçmek ve SQL Server versiyonunu öğrenmek için aşağıdaki komutları çalıştırıyoruz (terminalde temiz çıktı elde edebilmek için PRINT kullanıldı):

$ docker exec -it sqldemo "bash"
mssql@9c3eceb18f3f:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q"PRINT @@VERSION"
Password:
Microsoft SQL Server 2019 (RTM-CU4) (KB4548597) - 15.0.4033.1 (X64)
        Mar 14 2020 16:10:35
        Copyright (C) 2019 Microsoft Corporation
        Developer Edition (64-bit) on Linux (Ubuntu 18.04.4 LTS) <X64>
mssql@9c3eceb18f3f:/$ exit

SQL Server 2019 Developer Edition RTM CU4 kurulduğu görülüyor. Bu bölümde son olarak aktif containerları listeleyip şu an için ihtiyacımız olmayanları durdurup kaldırabiliriz:

$ docker ps -a
CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
9c3eceb18f3f        mcr.microsoft.com/mssql/server:2019-latest   "/opt/mssql/bin/perm…"   6 minutes ago       Up 6 minutes        0.0.0.0:1501->1433/tcp   sqldemo
$ docker stop 9c3eceb18f3f
9c3eceb18f3f
$ docker rm 9c3eceb18f3f
9c3eceb18f3f

Ek bilgi: container idsinin tamamı yerine onu benzersiz kılan ilk 2 ya da 3 karakter girilebilir. Örnek 9c3eceb18f3f yerine 9c girebilirsiniz. Yine aktif containerların yalnızca container idlerini listelemek istiyorsanız aşağıdaki komutu kullanabilirsiniz:

$ docker ps -aq

Sonraki bölümde görüşmek üzere, sağlıcakla kalın.

“Docker Container: SQL Server 2019 AlwaysOn Availability Group – Part 1” hakkında 6 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir