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.