searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

探讨doris高可用(二)

2024-05-28 03:26:35
26
0

前言

尽管doris可部署多个fe节点进行高可用,避免单点故障,但当用户连接的fe节点宕机后,用户需切换连接ip,以继续使用doris集群。

在用户不切换连接ip的场景下,能否保证doris集群的高可用?

在之前已探讨过使用proxysql+keepalived的方案,那使用haproxy+keepalived能否可行?

 

haproxy

HAProxy 以其高性能、低延迟能力而闻名,广泛应用于高流量负载的 Web 应用程序中。 它能够有效地处理数百万个并发连接,但不支持Query重写、缓存。

 

部署参考:

1.准备工作

虚拟ip: 192.168.71.50

机器A: 安装keepalived,haproxy

机器B: 安装keepalived,haproxy

 

2.机器A、B分别部署haproxy

2.1 安装,yum方式安装

yum -y install haproxy

2.2 配置haproxy, 配置位置/etc/haproxy/haproxy.cfg,主要配置如下

(机器AB配置均一样)

global
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
defaults
    mode                    http
    log                     global
#    option                  httplog
    option                  dontlognull
    option http-server-close
#    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
frontend web_frontend
    bind 0.0.0.0:5033
    mode tcp
    default_backend doris
 
backend doris
    balance     roundrobin
    mode tcp
    server  app1 {doris-fe1-ip}:{doris-fe1-queryPort} check inter 2000 fall 3 rise 2
    server  app2 {doris-fe2-ip}:{doris-fe2-queryPort} check inter 2000 fall 3 rise 2
    server  app3 {doris-fe3-ip}:{doris-fe3-queryPort} check inter 2000 fall 3 rise 2

2.3 启动haproxy

systemctl start haproxy

 

3.机器A、B分别部署keepalived

3.1 安装keepalived

yum -y install keepalived

3.2 配置keepalived,配置位置/etc/keepalived/keepalived.conf,参考如下:

主keepalived配置:  抢占模式,state 配置为MASTER ,priority为100

! Configuration File for keepalived
 
global_defs {
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user root
   enable_script_security
}
 
#检查haproxy是否存活的脚本(配置时需把注释删掉)
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight -20
    fall 3
    rise 1
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass xxxyyy(密码)
    }
    virtual_ipaddress {
        192.168.71.50
    }
    track_script {
        chk_haproxy
    }
}

备keepalived配置:  抢占模式,state 配置为BACKUP,priority为90

! Configuration File for keepalived
 
global_defs {
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user root
   enable_script_security
}
 
#检查haproxy是否存活的脚本(配置时需把注释删掉)
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight -20
    fall 3
    rise 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass xxxyyy(密码)
    }
    virtual_ipaddress {
        192.168.71.50
    }
    track_script {
        chk_haproxy
    }
}

3.3 机器A、B启动keepalived

systemctl start keepalived

 

4.验证测试

使用haproxy+keepalived后,请求能通过虚拟ip负载到不同的fe节点上,并能避免调度到异常fe上。

当有haproxy实例宕机后,keepalived能使backup的实例变为master,从而使虚拟ip漂移到正常节点上。

并且,过haproxy,查询doris集群的整体时延无明显增加。

 

总结

1.容器部署haproxy,可能遇到Could not open configuration file Permission denied,是关闭selinux导致权限有问题,但组成大数据集群的机器一般会选择关闭该特性,因此不推荐使用容器部署。

2.避免单点故障,需keepalived支撑。

3.与proxysql相比,部署安装极为简单,易于运维。

0条评论
0 / 1000
冼****铭
4文章数
0粉丝数
冼****铭
4 文章 | 0 粉丝
冼****铭
4文章数
0粉丝数
冼****铭
4 文章 | 0 粉丝
原创

探讨doris高可用(二)

2024-05-28 03:26:35
26
0

前言

尽管doris可部署多个fe节点进行高可用,避免单点故障,但当用户连接的fe节点宕机后,用户需切换连接ip,以继续使用doris集群。

在用户不切换连接ip的场景下,能否保证doris集群的高可用?

在之前已探讨过使用proxysql+keepalived的方案,那使用haproxy+keepalived能否可行?

 

haproxy

HAProxy 以其高性能、低延迟能力而闻名,广泛应用于高流量负载的 Web 应用程序中。 它能够有效地处理数百万个并发连接,但不支持Query重写、缓存。

 

部署参考:

1.准备工作

虚拟ip: 192.168.71.50

机器A: 安装keepalived,haproxy

机器B: 安装keepalived,haproxy

 

2.机器A、B分别部署haproxy

2.1 安装,yum方式安装

yum -y install haproxy

2.2 配置haproxy, 配置位置/etc/haproxy/haproxy.cfg,主要配置如下

(机器AB配置均一样)

global
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
defaults
    mode                    http
    log                     global
#    option                  httplog
    option                  dontlognull
    option http-server-close
#    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
frontend web_frontend
    bind 0.0.0.0:5033
    mode tcp
    default_backend doris
 
backend doris
    balance     roundrobin
    mode tcp
    server  app1 {doris-fe1-ip}:{doris-fe1-queryPort} check inter 2000 fall 3 rise 2
    server  app2 {doris-fe2-ip}:{doris-fe2-queryPort} check inter 2000 fall 3 rise 2
    server  app3 {doris-fe3-ip}:{doris-fe3-queryPort} check inter 2000 fall 3 rise 2

2.3 启动haproxy

systemctl start haproxy

 

3.机器A、B分别部署keepalived

3.1 安装keepalived

yum -y install keepalived

3.2 配置keepalived,配置位置/etc/keepalived/keepalived.conf,参考如下:

主keepalived配置:  抢占模式,state 配置为MASTER ,priority为100

! Configuration File for keepalived
 
global_defs {
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user root
   enable_script_security
}
 
#检查haproxy是否存活的脚本(配置时需把注释删掉)
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight -20
    fall 3
    rise 1
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass xxxyyy(密码)
    }
    virtual_ipaddress {
        192.168.71.50
    }
    track_script {
        chk_haproxy
    }
}

备keepalived配置:  抢占模式,state 配置为BACKUP,priority为90

! Configuration File for keepalived
 
global_defs {
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user root
   enable_script_security
}
 
#检查haproxy是否存活的脚本(配置时需把注释删掉)
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight -20
    fall 3
    rise 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass xxxyyy(密码)
    }
    virtual_ipaddress {
        192.168.71.50
    }
    track_script {
        chk_haproxy
    }
}

3.3 机器A、B启动keepalived

systemctl start keepalived

 

4.验证测试

使用haproxy+keepalived后,请求能通过虚拟ip负载到不同的fe节点上,并能避免调度到异常fe上。

当有haproxy实例宕机后,keepalived能使backup的实例变为master,从而使虚拟ip漂移到正常节点上。

并且,过haproxy,查询doris集群的整体时延无明显增加。

 

总结

1.容器部署haproxy,可能遇到Could not open configuration file Permission denied,是关闭selinux导致权限有问题,但组成大数据集群的机器一般会选择关闭该特性,因此不推荐使用容器部署。

2.避免单点故障,需keepalived支撑。

3.与proxysql相比,部署安装极为简单,易于运维。

文章来自个人专栏
大数据组件学习
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0