MongoDB分片集群的入口mongos自身没有failover机制。官方建议是将mongos和应用服务器部署在一起,多个应用服务器就要部署多个mongos实例,这样很是不方便。还可以使用LVS或者HAProxy来实现多个mongos的failover机制,但是一定要注意使用client affinity即客户端关联特性。


global
    chroot      /data/app_platform/haproxy/share/ 
    log         127.0.0.1 local3 info
    daemon      
    user        haproxy
    group       haproxy
    pidfile     /var/run/haproxy.pid
    nbproc      1                       
    stats socket  /tmp/haproxy level admin
    stats maxconn 20                    
    node        master_loadbalance1
    description lb1
    maxconn     65536
    nosplice                            
    spread-checks 3                     

defaults
    log         global                  
    mode tcp
    option abortonclose         
    option allbackups            
    option tcpka                        
    option redispatch
    retries 3   
    timeout check 60s                   
    timeout connect 600s                            
    timeout queue 600s                   
    timeout server 600s                  
    timeout tarpit 60s
    timeout client 600s   
    
    
    
frontend  mongos_pool 0.0.0.0:28018
    mode tcp
    maxconn 32768
    no option dontlognull
    option tcplog     
    log         global
    option log-separate-errors
    default_backend mongos_pool

backend mongos_pool
    mode tcp
    balance     source
    default-server inter 2s fastinter 1s downinter 5s slowstart 60s rise 2 fall 5 weight 30

    server  gintama-xxx-mongos1   192.168.100.74:28018    check  maxconn 2000
    server  gintama-xxx-mongos2   192.168.100.75:28018    check  maxconn 2000


注意使用

balance source