大数据——StarRocks 实现高可用连接以及负载均衡(Keepalived+Haproxy服务高可用,outlook邮箱使用mailx报警)

一、前言

关于StarRocks的负载均衡以及高可用,官方给了2种方法:
1、通过 JDBC Connector 均衡负载
2、通过 ProxySQL 均衡负载
参考官方文档:StarRocks负载均衡配置
当前文档选择常用架构 Keepalived+Haproxy服务
架构方案:

机器节点服务
192.168.1.101masterStarRocks Keepalived Haproxy
192.168.1.102followStarRocks Keepalived Haproxy
192.168.1.103followStarRocks

Keepalived 虚拟ip : 192.168.1.100

二、安装 Haproxy

192.168.1.101、192.168.1.102
以上2台机器分别进行以下操作
1. 下载 HAProxy
下载地址:https://src.fedoraproject.org/repo/pkgs/haproxy/
2、解压

tar -zxvf haproxy-2.6.6.tar.gz -C /opt/

mv haproxy-2.6.6 haproxy

3、编译

yum install gcc gcc-c++ -y

make TARGET=linux-glibc PREFIX=/usr/local/haproxy 

make install PREFIX=/usr/local/haproxy 

4、配置文件

vim /etc/rsyslog.d/haproxy.conf 
$ModLoad imudp 
$UDPServerRun 514 
local0.* /usr/local/haproxy/logs/haproxy.log 
&~

5、 开启远程日志

vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-c 2 -r -m 0" 

参数解析:
-c 2 使用兼容模式,默认是 -c 5。 -r 开启远程日志。
-m 0 标记时间戳。单位是分钟,为0时,表示禁用该功能。

6、使修改生效

systemctl restart rsyslog

7、编辑负载均衡文件

vim /usr/local/haproxy/haproxy.cfg
#
# demo config for Proxy mode
#

global
        maxconn         2000
        ulimit-n        40075
        log             127.0.0.1 local0 info
        uid             200
        gid             200
        chroot          /var/empty
        daemon
        group           haproxy
        user            haproxy


defaults
  # 应用全局的日志配置
  log global
  mode http
  retries 3 #健康检查。3次连接失败就认为服务器不可用,主要通过后面的check检查
  option redispatch #服务不可用后重定向到其他健康服务器
  # 超时配置
  timeout connect 5000
  timeout client 5000
  timeout server 5000
  timeout check 2000

frontend mysql-front
    bind *:3307              # 这里绑定的端口就是后面使用 VIP 访问 mysql 时使用的端口
    mode tcp
    default_backend mysql-backup

backend mysql-backup
    mode tcp
    balance roundrobin
    server db1 192.168.1.101:9030 weight 1 check inter 3000 rise 2 fall 3
    server db2 192.168.1.102:9030 weight 1 check inter 3000 rise 2 fall 3
    server db3 192.168.1.103:9030 weight 1 check inter 3000 rise 2 fall 3

listen http_front                                                       # haproxy的客户页面
  bind *:8888         # HAProxy自己的IP地址
  mode http
  log 127.0.0.1 local0 err
  option httplog
  stats uri /haproxy                                    # 自定义页面的 url(即访问时地址为:192.168.1.101:8888/haproxy)
  stats auth admin:admin         # 控制面板账号密码 账号:admin
  stats refresh 10s
  stats enable

8、启动服务

 /opt/haproxy/haproxy -f /usr/local/haproxy/haproxy.cfg

9、查看服务状态

netstat -lnatp | grep -i haproxy

在这里插入图片描述
10、web访问
192.168.1.101:8888/haproxy
192.168.1.102:8888/haproxy
登陆密码:admin : admin

11、测试端口是否转换成功

mysql -u root -p -P3307 -h 192.168.1.101

三、安装 mailx

1、安装

yum -y install mailx

2、配置

vim /etc/mail.rc

需要将邮箱的相关参数配置进mailx的配置文件/etc/mail.rc,在最后添加自己邮箱的相关参数,以下是关于outlook的使用参数

set from=xxx@xxx.com
set smtp=outlook.office365.com:587
set smtp-use-starttls=yes                  #如果用25端口不需要此条,但是很多云服务器ban25端口
set ssl-verify=ignore                      #ssl验证:忽略
set nss-config-dir=/etc/pki/nssdb          # 不需要配置,指向目录即可
set smtp-auth-user=xxx@xxx.com
set smtp-auth-password=xxxxxxxxx
set smtp-auth=login

3、测试

echo hello | mailx -v -s "test" xxx@x.com

四、安装 Keepalived

192.168.1.101、192.168.1.102
以上2台机器分别进行以下操作
1、安装

yum -y install keepalived

2、自定义检查脚本

vim /etc/keepalived/check_server.sh

StarRocksFE 和 Haproxy 发生错误都停止 Keepalived ,实现vip漂移

#!/bin/bash
StarRocksNUM=`ps -ef | grep -i StarRocksFE | grep -vc grep`
if [ $StarRocksNUM -eq 0 ]; then
    systemctl stop keepalived.service
fi

HAPROXYNUM=`ps -ef | grep -i haproxy | grep -vc grep`
if [ $HAPROXYNUM -eq 0 ]; then
    systemctl stop keepalived.service
fi

3、配置文件修改
修改 Keepalived 配置文件,将原本的 keepalived.conf 文件备份,新建 keepalived.conf 文件加入如下内容

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

vim /etc/keepalived/keepalived.conf

master节点:

! Configuration File for keepalived  # 这一行为注释

global_defs {
   router_id hadoop101    # 机器标识,通常使用 hostname,相对具有唯一性,和备机区分开,不能使用同一个标识
   notification_email {
     x@x.com
   }
   notification_email_from xxx@x.com
   smtp_server outlook.office365.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_server {                        # 定义一个检测脚本,在global_defs之外配置
  script "/etc/keepalived/check_server.sh"      # 自己写的监测脚本
  interval 2    # 每2s监测一次
  fall 2        # 尝试两次都成功才成功
  rise 2        # 尝试两次都失败才失败
}

vrrp_instance VI_1 {
    state MASTER                  # 标示状态为MASTER
    interface em1                 # 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同
    virtual_router_id 220         # 虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致
    priority 150                  # 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
    advert_int 1                  # 设定 master 与 backup 负载均衡器之间同步检查的时间间隔,默认是秒
    nopreempt                     # 主设备(priority 值大的)配置一定要加上 nopreempt,否则非抢占也不起作用
    mcast_src_ip 192.168.1.101    # Master服务器IP
    authentication {
        auth_type PASS            # 主从服务器验证方式 , 主要有 PASS 和 AH 两种
        auth_pass 20221103
    }
    virtual_ipaddress {
        192.168.1.100             # 虚拟 IP 池, 两个节点设置必须一样
    }
    track_script {                # 调用自定义的脚本
        chk_server
    }
    
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

backup节点:

! Configuration File for keepalived  # 这一行为注释

global_defs {
   router_id hadoop102    # 机器标识,通常使用 hostname,相对具有唯一性,和备机区分开,不能使用同一个标识
   notification_email {
     x@x.com
   }
   notification_email_from xxx@x.com
   smtp_server outlook.office365.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_server {                        # 定义一个检测脚本,在global_defs之外配置
  script "/etc/keepalived/check_server.sh"      # 自己写的监测脚本
  interval 2    # 每2s监测一次
  fall 2        # 尝试两次都成功才成功
  rise 2        # 尝试两次都失败才失败
}

vrrp_instance VI_1 {
    state BECKUP                  # 标示状态为BECKUP
    interface em1                 # 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同
    virtual_router_id 220         # 虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致
    priority 100                  # 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
    advert_int 1                  # 设定 master 与 backup 负载均衡器之间同步检查的时间间隔,默认是秒
    mcast_src_ip 192.168.1.102    # BECKUP服务器IP
    authentication {
        auth_type PASS            # 主从服务器验证方式 , 主要有 PASS 和 AH 两种
        auth_pass 20221103
    }
    virtual_ipaddress {
        192.168.1.100             # 虚拟 IP 池, 两个节点设置必须一样
    }
    track_script {                # 调用自定义的脚本
        chk_server
    }
    
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

4、启动

systemctl start keepalived.service

systemctl enable keepalived

5、查看服务

systemctl status keepalived.service

五、测试

1、测试端口是否转换成功

mysql -u root -p -P3307 -h 192.168.1.100

连接StarRocks 成功后

192.168.1.101 机器:

ps -ef|grep haproxy

kill -9  haproxy服务

查看邮箱邮件:
在这里插入图片描述

2、连接StarRocks 成功后
vip漂移后,查看StarRocks 连接

mysql -u root -p -P3307 -h 192.168.1.100
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高可用性是指系统或服务能够持续提供正常的服务,即使部分组件或节点出现故障。VIP+Keepalived+HAProxy+SLB 是一种常见的高可用架构设计,下面我会简单介绍一下其实现原理和各个组件的作用。 1. VIP(Virtual IP):虚拟 IP 是一个不属于任何实际物理接口的 IP 地址,用于将外部请求定向到后端服务器集群。 2. KeepalivedKeepalived 是一个基于 VRRP(虚拟路由冗余协议)的软件,它可以管理 VIP,并确保在主节点故障时快速切换到备份节点。 3. HAProxyHAProxy 是一种高性能的负载均衡器,它能够将外部请求分发到后端服务器上,并提供各种负载均衡算法和健康检查机制。 4. SLB(Server Load Balancer):SLB 是一种云服务,通常由云服务提供商提供,它也是一种负载均衡器,可以将外部请求分发到后端服务器集群上。 实现高可用的过程如下: 1. 部署多台服务器作为后端服务器集群,这些服务器可以运行相同的应用程序或服务。 2. 在服务器集群中配置 Keepalived,并为其分配一个 VIP 地址,用于接收外部请求。 3. Keepalived 通过 VRRP 协议与服务器集群中的所有节点通信,选择其中一台作为主节点,其余节点作为备份节点。 4. 主节点负责接收外部请求并将其传递给 HAProxy 或 SLB。 5. HAProxy 或 SLB 根据负载均衡算法将请求分发到后端服务器集群中的可用节点上。 6. 如果主节点出现故障,Keepalived 会立即将 VIP 转移到备份节点,确保服务的连续性。 这种架构可以提供高可用性和负载均衡,并能够在出现故障时自动切换到备份节点,保证系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值