2017-06-01 14 views
7

geldiğinde sunucu kullanıyorum Mysql sunucularımızı dengelemek için HAProxy çalıştıran bir sunucum var. Yoğun bir süre boyunca düşük ortalama yükümüz olduğunda, sunucunun bir kısmı aşağı inebilir, ancak gelecekte yükün tekrar yükselmesi durumunda, bu sunucular otomatik olarak yükselir. Sorun, bir örneğin aşağı iner, HAProxy bir daha asla bakmaz, bu yüzden örnek tekrar olduğunda göz ardı edilir. Bunu düzeltmek için gerektiğinde yeniden başlatıyoruz. Sanırım bizim sorunu çözmek olabilir büyük bir sayıya Tekrar denemeleri 2 ila değiştirmek BelkiHAProxy kullanım sunucusu AŞAĞIDAKİ YUKARI

global 
    log 127.0.0.1 local0 notice 
    user haproxy 
    group haproxy 

defaults 
    log global 
    retries 2 
    timeout connect 3000 
    timeout server 5000 
    timeout client 5000 

listen mysql-cluster 
     bind 0.0.0.0:3306 
     mode tcp 
     option mysql-check user haproxy_check 
     balance leastconn 
     server mysql-1 ********:3306 check 
     server mysql-2 ********:3306 check 

: Burada

bizim yapılandırma dosyasıdır?

DÜZENLEME istediği gibi burada benim HAProxy sürümü:

$ haproxy -v 
HA-Proxy version 1.4.24 2013/06/17 
Copyright 2000-2013 Willy Tarreau <[email protected]> 

Teşekkür

+0

Değiştirme "yeniden denemeler" hiçbir şeyi değiştirmeyecek. Bu parametre, bir arka uç bağlantısı kurarken yeniden denemeler anlamına gelir * deneme *, HAProxy düşüncesinin sağlıklı olmasına rağmen, bir arka uçta başarısız olur; Deneme yapılmadığını söylüyorsunuz, bu yüzden geçerli değil. Yeniden başlatmanız gerektiğinde ... yeniden başlatmanız gerekir * ne *? Ayrıca, '********: 3306' bir IP adresi veya bir ana bilgisayar adı? –

+0

HAProxy'yi yeniden başlatmam gerekiyor, bu yüzden config dosyasını tekrar yükler ve her iki sunucuya da bir bağlantı kurmaya çalışır. '********: 3306' bir ana bilgisayar adıdır. –

+0

Sanırım sorunun ne olacağını biliyorum. Lütfen HAProxy sürümünüzü belirtin. ('haproxy -v') –

cevap

2

Biz AWS altyapısında benzer durum vardı: (Elimizdeki RDS kopyaları erişimi için her örneğinde HAProxy 3 kopya, ancak uygulama sadece bir hostname ile çalışabilir). Bu sorunu global olarak HAProxy'yi Route53 ile değiştirerek aynı adla (örneğin db.ornek.internal) ve aynı ağırlıkta (Ağırlıklı Route53 politikası) birden fazla kayıt kullanarak değiştiriyoruz. Ayrıca her kopya için Route53 sağlık kontrolü oluşturuyoruz (TCP 3306 port kontrolü). Bizim için bu çözüm harika çalışıyor ve eğer RDS çoğaltması - değiştirmemiz gereken tek yer eklememiz/silmemiz gerekiyorsa - Route53 kaydı ve sağlık kontrolü (her durumda HAProxy durumunu korumamız gerekmiyor)

+0

Çözümünüz gayet iyi, fakat sorunun nedeninin ne olduğunu anladınız mı? @Mauricio'nun önerdiği veya başka bir şey yaptığı gibi dns sorgularının başarısız olması durumunda garproxy'nin tuhaf bir davranışı mı? – ffeast

+0

@Tim Bikbaev, bu durumda, hangi kullanım için Route53 ve HAProxy tarafından ele alınan karar sadece Route53'e yönlendiriyor? Eğer durum buysa, HAProxy'ye ihtiyacımız yok değil mi? Rota53'ü örneklerimiz için yük dengeleyici olarak kullanmak mümkün mü? –

+0

@ MaurícioGiordano bu durumda HAProxy'yi hiç kullanmayacağız - ana faydası !!) tüm yük dengeleme Route53 seviye + sağlık kontrolleri üzerinde gerçekleştirilecektir –