MaxScale: MySQL okuma-yazma ayrımı ve yük dengeleme için bir ara yazılım aracı

1,

Yapılandırıldı MySQL Master-slave replikasyon yapısından sonra, okuma-yazma ayrımını gerçekleştirmeyi, okuma işlemlerini slave sunuculara dağıtmayı ve birden çok slave sunucu için yük dengeleme gerçekleştirmeyi umuyoruz.

Okuma-yazma ayrımı ve yük dengeleme MySQL kümesinin temel gereksinimidir, MaxScale bu işlevleri rahatça gerçekleştirmemize yardımcı olabilir.

2. MaxScale'in temel yapısı

MaxScale, MySQL'in kardeş şirketi MariaDB tarafından geliştirildi ve şimdi çok olgunlaştı. MaxScale, kullanıcıların kendi eklentilerini geliştirmelerine izin veren bir eklenti yapısıdır.

Şu anda MaxScale tarafından sağlanan eklenti işlevleri 5 kategoriye ayrılmıştır:

  • Kimlik doğrulama eklentisi

    Bir oturum açma kimlik doğrulama işlevi sağlar.MaxScale, veritabanındaki kullanıcı tablosundaki bilgileri okuyup önbelleğe alır.Bir bağlantı geldiğinde, önce önbelleğe alınan bilgilerden doğrular. Böyle bir kullanıcı yoksa, arka uç veritabanından bilgileri günceller ve tekrar devam eder. doğrulama

  • Protokol eklentisi

    İstemci bağlantı protokolü ve bağlantı veritabanı protokolü dahil

  • Yönlendirme eklentisi

    İstemcinin talebinin arka uç veritabanı sunucusuna nasıl iletileceğine karar verin Okuma-yazma ayrımı ve yük dengeleme işlevleri bu modül tarafından gerçekleştirilir

  • İzleme eklentisi

    Her veritabanı sunucusunu izleyin. Örneğin, bir veritabanı sunucusunun çok yavaş yanıt verdiği bulunursa, istek ona iletilmeyecektir.

  • Günlük ve filtre eklentisi

    SQL'i filtreleyebilen ve hataya tolerans gösterebilen basit bir veritabanı güvenlik duvarı işlevi sağlayın

3.

Örneğin, bir master ve iki slave yapısında 3 veritabanı sunucusu vardır.

Sürece genel bakış

(1) Küme ortamını yapılandırın

(2) MaxScale'i indirin ve yükleyin

(3) MaxScale'i yapılandırın ve veritabanı bilgilerini ekleyin

(4) MaxScale'i başlatın ve veritabanının doğru şekilde bağlanıp bağlanmadığını kontrol edin

(5) Müşteri test için MaxScale'e bağlanır

Ayrıntılı süreç

(1) Bir ana ve iki bağımlı ile bir küme ortamı yapılandırın

3 sunucu hazırlayın, MySQL'i kurun ve bir ana ve iki ikincil öğeden oluşan bir çoğaltma yapısını yapılandırın.

(2) MaxScale'i kurun

Başka bir sunucuya kurmak en iyisidir, kaynaklar yetersizse, onu bir MySQL ile bir araya getirebilirsiniz.

MaxScale indirme adresi: https://downloads.mariadb.com/files/MaxScale

Sunucunuza göre uygun kurulum paketini seçin.

Örnek olarak centos 7'yi alarak kurulum adımları aşağıdaki gibidir:

yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -yrpm -ivh maxscale-1.4.3-1.centos.7.x86_64.rpm

(3) MaxScale'i Yapılandırın

Yapılandırmaya başlamadan önce, modülleri izlemek ve yönlendirmek için ana bilgisayarda MaxScale için iki kullanıcı oluşturmanız gerekir.

İzleme kullanıcısı oluşturun

mysql > "111111" ile tanımlanan @ '%' kullanıcı ölçeklendiricisi oluştur; mysql > *. * üzerinde replication slave, replikasyon istemcisini scalemon @ % e verin;

Yönlendirme kullanıcısı oluştur

mysql > "111111" ile tanımlanan kullanıcı maxscale @ % oluştur; mysql > mysql. * için maxscale @ % ye seçim verin;

Kullanıcı oluşturulduktan sonra yapılandırmayı başlatın

vi /etc/maxscale.cnf

çıkagelmek Bölüm, adresi ve bağlantı noktasını ana bilgisayarın IP ve bağlantı noktasına işaret edecek şekilde değiştirin.

Tüm içeriği iki kez kopyalayın ve ve olarak değiştirin ve ayrıca adresi ve bağlantı noktasını sırasıyla slave1 ve slave2'yi gösterecek şekilde değiştirin:

çıkagelmek Bölümde, sunucuları sunucu1, sunucu2, sunucu3 olarak değiştirin ve kullanıcıyı ve önceden oluşturulmuş izleme kullanıcısının bilgilerine (scalemon, 111111) şifresini değiştirin.

çıkagelmek Bölümde, sunucuları sunucu1, sunucu2, sunucu3 olarak değiştirin ve kullanıcıyı değiştirin ve daha önce oluşturulan yönlendirme kullanıcısının bilgilerine (maxscale, 111111) geçirin.

Kullandığımız için başka bir servisi silmemiz gerekiyor, sadece tüm içeriği silmemiz yeterli.

Yapılandırma tamamlandı, kaydedin ve düzenleyiciden çıkın.

(4) MaxScale'i başlatın

Başlat komutunu yürütün

maxscale config = / etc / maxscale.cnf

MaxScale'in yanıt bağlantı noktasının hazır olup olmadığını kontrol edin

netstat -ntelp

  • 4006, MaxScale'e bağlanırken kullanılan bağlantı noktasıdır

  • 6603, MaxScale Manager'ın bağlantı noktasıdır

Veritabanı bağlantı durumunu kontrol etmek için MaxScale Manager'da oturum açın Varsayılan kullanıcı adı ve şifresi admin / mariadb'dir.

maxadmin user = admin password = mariadb

MaxScale > sunucuları listeleme

Gördüğünüz gibi, MaxScale master ve slave'e bağlandı.

(5) Test

Önce ana bilgisayarda bir test kullanıcısı oluşturun

mysql > *. * üzerindeki TÜM AYRICALIKLARI rtest @ % olarak vermek 111111 ile tanımlanmıştır;

MaxScale'e bağlanmak için Mysql istemcisini kullanın

MaxScale'in bulunduğu mysql -h IP -P 4006 -u rtest -p111111

Mevcut veritabanını bilmek için veritabanı sunucu adını görüntüleme işlemini gerçekleştirin:

İşlem başlatıldıktan sonra, otomatik olarak ana bilgisayara yönlendirilir ve sıradan sorgu işlemleri slave üzerindedir.

MaxScale yapılandırması tamamlandı.

4.

MaxScale'in MySQL'in okuma-yazma ayrımını gerçekleştirebileceğini ve yük dengelemesini okuyabileceğini zaten tanıtmıştım.Peki slave başarısız olduğunda, MaxScale ne yapacak?

Örneğin, bir ana ve iki bağımlı olmak üzere 3 veritabanı sunucusu vardır ve veritabanı adları ana, köle1, köle2'dir.

Şimdi aşağıdaki iki durumu deniyoruz:

(1) Bir bağımlı sunucu (bağımlı1 veya bağımlı2) başarısız olduğunda, MaxScale'in nasıl yanıt verdiğini ve başarısız sunucunun tekrar çevrimiçi duruma gelmesinden sonraki durumu kontrol edin

(2) Her iki bağımlı sunucu (slave1 ve slave2) arızalandığında, MaxScale'in nasıl yanıt verdiğini ve arızalı sunucunun tekrar çevrimiçi olduktan sonraki durumu kontrol edin

hazır

MaxScale'in durumunu daha derinlemesine görmek için MaxScale günlüğünü açmanız gerekir:

Yapılandırma dosyasını değiştirin

vi /etc/maxscale.cnf

Global ayarlar yapmak ve ona günlükler eklemek için kullanılan parçayı bulun.

Yapılandırma

log_info = 1logdir = / tmp /

Log_info düzeyini açarak MaxScale'in yönlendirme günlüğünü görebilirsiniz.

Yapılandırmayı değiştirdikten sonra MaxScale'i yeniden başlatın.

deney prosedürü

1, Tek bağımlı arıza

İlk durum, her şeyin normal olmasıdır.

Slave2'nin çoğaltılmasını durdurun ve slave2'nin mysql yürütmesinde oturum açın.

mysql > köleyi durdur;

MaxScale sunucu durumunu görüntüleyin

slave2 süresi doldu.

Günlük bilgilerini görüntüleyin

cat /tmp/maxscale1.log

Sonunda:

2016-08-1512:26:02 uyarı: Sunucu durumu değiştirdi: slave2: lost_slave

Slave2'nin kaybolduğunu sor.

Müşteri sorgu sonuçlarını görüntüleyin:

Tüm sorgu işlemleri slave1'e aktarılır.

Bir slave arızasından sonra MaxScale'in bunu otomatik olarak ortadan kaldıracağı ve artık istekleri kendisine iletmeyeceği görülebilir.

Slave2'ye tekrar bakalım Çevrimiçi olduktan sonraki durum.

Slave2'nin MySQL yürütmesine giriş yapın

mysql > köle başlat;

MaxScale sunucu durumunu görüntüleyin

slave2 süresi doldu.

Günlük bilgilerini görüntüleyin

cat /tmp/maxscale1.log

Sonunda:

2016-08-1512:26:02 uyarı: Sunucu durumu değiştirdi: slave2: lost_slave

Slave2'nin kaybolduğunu sor.

Müşteri sorgu sonuçlarını görüntüleyin:

Tüm sorgu işlemleri slave1'e aktarılır.

Bir slave arızasından sonra MaxScale'in bunu otomatik olarak ortadan kaldıracağı ve artık istekleri kendisine iletmeyeceği görülebilir.

Slave2'ye tekrar bakalım Çevrimiçi olduktan sonraki durum.

Slave2'nin MySQL yürütmesine giriş yapın

mysql > köle başlat;

MaxScale sunucu durumunu görüntüleyin

Normal durum geri yüklendi ve köle2 yeniden tanındı.

Günlük bilgilerini görüntüleyin, görüntüleyin:

2016-08-1512:32:36 uyarı: Sunucu durumu değiştirdi: slave2: new_slave

Müşteri sorgu sonuçlarını görüntüleyin:

Slave2 normal olarak sorgu isteklerini kabul edebilir.

Deneyler sayesinde, bazı slave'ler arızalandığında, MaxScale'in bunu otomatik olarak tanımlayabildiği ve yönlendirme listesini kaldırabildiği görülebilir.Arıza geri yüklendiğinde ve tekrar çevrimiçi olduğunda, MaxScale de otomatik olarak yönlendirmeye ekleyebilir ve süreç şeffaftır.

2, Tüm köle hataları

Ayrı olarak oturum açın köle1 ile köle2 MySQL, çoğaltmayı durdurmak için komutu yürütün

mysql > köleyi durdur;

MaxScale sunucu durumunu görüntüleyin

Her sunucunun rollerinin tanınmadığı görülmüştür.

Günlüğü görüntüle:

Günlükten MaxScale, iki bağımlı ve ana birimin kaybolduğunu buldu ve ardından bir hata bildirdi: ana birim yok.

İstemci ayrıca MaxScale'e bağlanamadı.

Bu, tüm bağımlı sunucular arızalandıktan sonra, yöneticinin onu tanımlayamayacağı ve tüm veritabanı hizmetinin başarısız olacağı anlamına gelir.

Tüm slave'lerin arızalanması durumunda, master kullanılabilir hale getirilebilir mi? Bu, en azından normal olarak veritabanı hizmetleri sağlayabilir.

Bu, MaxScale yapılandırmasını değiştirmeyi ve MaxScale'e kararlı bir ana makineye ihtiyacımız olduğunu söylemeyi gerektirir.

İşlem

Önce iki slave'i geri yükleyin, kümenin normal durumuna dönmesine izin verin ve iki slave'in MySQL'inde oturum açın.

mysql > köle başlat;

MaxScale konfigürasyon dosyasını değiştirin ve yeni konfigürasyonlar ekleyin.

vi /etc/maxscale.cnf

Bölümü bulun ve ekleyin:

Detect_stale_master = true

Kaydedip çıkın ve ardından MaxScale'i yeniden başlatın.

doğrulama

İki bağımlıyı durdurun ve MaxScale sunucusunun durumunu kontrol edin.

Köle tanınmasa da, efendinin hala orada ve kararlı bir durumda olduğu görülebilir.

Müşteri isteği yerine getirir:

İstemci MaxScale'e bağlanabilir ve tüm istekler ana bilgisayara aktarılır, bu da tüm bağımlı birimler başarısız olduğunda ana birimin tüm istekleri desteklediğini gösterir.

İki slave geri yüklendiğinde, genel durum otomatik olarak normale döner ve istemciden bir talep yürütüldüğünde, slave'e tekrar aktarılabilir.

özet

Test sayesinde, bazı slave arızaları durumunda, istemciye tamamen şeffaf olduğu görülmüştür.Tüm slave'ler arızalandığında, MaxScale basit konfigürasyondan sonra bunu iyi bir şekilde halledebilir.

Peri dizisi! İngiliz all-starlar 1. Dünya Savaşı temalı "1917" filmine katıldı, bu başka bir "Dunkirk" mi olacak?
önceki
Otonom sürüş tek ayak üzerinde yürümek zordur ve insanlar, araçlar ve yollar arasında tam bir işbirliği gerektirir
Sonraki
ELK'ye ek olarak, açık kaynak izleme teknolojisi yığınında InfluxData'nın TICK'i de vardır.
Yukarı akış haberleri yeterince heyecan verici! Yukarı akış haberleri Süper Lig'i gösteriyor
Skyworth değişim arıyor: TV'ler için AI çipleri oluşturun, Coocaa sistemini yükseltin ve 4K içeriği dağıtın
Chicken, LOL, CF gibi bu oyunların savaş şarkıları nelerdir? En çok hangi şarkıyı seviyorsun?
Kalite ve eğlence, tüm editörler yeni Audi A4L'yi deneyimler
Linux sistem yöneticileri için temel izleme araçları
Ekranda klasik IP çıkışları, "Gundam" "Aerospace Team: Star Beast War" ın Çince versiyonunun yıllık sıcak yerli animasyon haline gelmesi bekleniyor.
Avukat Liu Qiangdong, Reuters'ın hiçbir amacı olmadığını açıklamaya devam ettiğini söyledi; Tesla, Çin'de satılan tüm modellerde fiyatları düşürdü; Tencent Cloud yeni nesil bir veritabanı yayınladı
Detroit insan oluyor: üç ana hat, hangisi sizin favoriniz?
Chrome Hearts bir ev teması sergisi mi açtı? ! Sınırlı bir öğeyi başlatmak için zorluk endeksi ...
Beiqi Weiwang M50F yeni modeli 1.5T güçle donatılmış
Karmaşık İşletme ve Bakım senaryolarında hataların temel nedenini dakikalar içinde bulma
To Top