加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

想做负载均衡?能考虑用Impala实现

发布时间:2023-10-12 10:35:57 所属栏目:Linux 来源:互联网
导读:   今天我们来学习关于“想做负载均衡?可以考虑用Impala实现”的内容,下文有详解方法和实例,内容详细,逻辑清晰,有需要的朋友可以参考,希望大家阅读完这篇文章后能有所收获
  今天我们来学习关于“想做负载均衡?可以考虑用Impala实现”的内容,下文有详解方法和实例,内容详细,逻辑清晰,有需要的朋友可以参考,希望大家阅读完这篇文章后能有所收获,那么下面就一起来了解一下吧。
 
  1.文档编写目的
 
  在使用Impala JDBC连接Impala服务时,默认是不带负载均衡的,但一个Impala Daemon很可能会产生单点的问题,这里我们就需要考虑Impala Daemon的负载均衡,官方推荐并支持的负载均衡为HAProxy,参考:
 
  https://www.cloudera.com/documentation/enterprise/latest/topics/impala_proxy.html。
 
  但我们常常会碰到企业已经在用Nginx,Nginx毕竟在http和反向代理这块是最优秀的,这个时候我们就需要考虑复用Nginx。所以在这篇文章就介绍一下如何使用Nginx实现Impala服务的负载均衡。
 
  内容概述
 
  1.Nginx安装及启停
 
  2.配置Impala负载均衡策略
 
  3.Impala shell及JDBC测试
 
  4.使用keepalived保证nginx高可用
 
  测试环境
 
  1.CM和CDH版本为5.13.0
 
  2.采用root用户操作CentOS7.4
 
  3.Nginx1.12.2
 
  4.集群未启用Kerberos
 
  5.机器角色分配 A(192.168.32.138)  需要安装Nginx  Keepalived      B(192.168.32.134)需要安装Nginx  Keepalived
 
  2.Nginx服务安装及启停
 
  1.下载Nginx安装包,下载地址如下
 
  选择集群中任意一台服务器用来安装Nginx服务或者选用一台独立的服务器用来部署Nginx,需要确保Nginx所在的服务器与集群中所有的Impala节点网络是通的(包括端口号21050)
 
  http://nginx.org/download/nginx-1.12.2.tar.gz
 
  安装编译Nginx必备工具
 
  yum install -y gcc
 
  yum install -y gcc-c++
 
  yum install -y pcre pcre-devel
 
  yum install -y zlib zlib-devel
 
  yum install -y openssl openssl-devel
 
  cd /usr/local/src/
 
  wget  http://nginx.org/download/nginx-1.12.2.tar.gz
 
  2.解压nginx-1.21.2.tar.gz压缩包,并进行编译安装
 
  tar -zxf nginx-1.12.2.tar.gz  
 
   cd nginx-1.12.2
 
  ./configure --with-stream
 
  
 
  make && make install
 
  注意:必须编译stream模块
 
  默认Nginx的安装目录为/usr/local/nginx
 
  3.启动与停止Nginx
 
  启动
 
  cd /usr/local/nginx/sbin/
 
  ./nginx
 
  停止
 
  ./nginx  -s stop
 
  4.测试Nginx是否正常访问,在浏览器输入http://{安装Nginx的服务器IP}
 
  出现 Welcome to nginx! 页面表示nginx已启动成功。
 
  3.配置Impala负载均衡策略
 
  1.修改/usr/local/nginx/conf/nginx.conf文件,在文件末尾增加如下配置
 
  stream{
 
    log_format basic '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received' '$session_time';
 
    upstream impala { #impala daemon
 
      least_conn; #路由策略:least_conn:最少连接
 
      server 192.168.32.134:21000;
 
      server 192.168.32.135:21000;
 
      server 192.168.32.136:21000;
 
  }
 
  upstream impalajdbc {
 
  least_conn;
 
      server 192.168.32.134:21050;
 
  server 192.168.32.135:21050;
 
  server 192.168.32.136:21050;
 
  }
 
  server{ #impala 负载均衡
 
  listen 21001;
 
  proxy_pass impala;
 
  }
 
  server{ #impala jdbc 负载均衡
 
  listen 21051;
 
  proxy_pass impalajdbc;
 
    }
 
  }
 
  2.重启Nginx
 
  停止
 
  cd /usr/local/nginx/sbin/
 
  ./nginx  -s stop
 
  启动
 
  ./nginx
 
  4.测试Impala负载均衡
 
  1.在192.168.32.134节点使用impala-shell连接Impala(假设此时nginx安装在192.168.32.134上)
 
   impala-shell -i 192.168.32.134:21001
 
  经过多条sql语句测试即可测出执行sql操作时,连接的不为同一个Impala Daemon。
 
  5.Impala JDBC连接测试
 
  此处使用工具dbeaver链接Impala进行测试。
 
  ip 192.168.32.134
 
  port 21051
 
  6.使用Keepalived保证Nginx高可用
 
  1、keepalived简介
 
  Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。
 
  但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
 
  Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作;
 
  当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
 
  2、 安装
 
  cd /usr/local/src
 
  #下载
 
  wget http://www.keepalived.org/software/keepalived-1.2.23.tar.gz
 
  #解压
 
  tar -zxvf keepalived-1.2.23.tar.gz
 
  cd keepalived-1.2.23
 
  #安装
 
  ./configure --prefix=/usr/local/keepalived   #prefix指定安装目录
 
  make
 
  make install
 
  3、配置
 
      指定配置文件,修改 /usr/local/keepalived/etc/sysconfig/keepalived
 
  KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf" #指定keepalived配置文件路径
 
  因为我们使用非默认路径(/usr/local)安装keepalived,需要设置一些软链接以保证keepalived能正常启动
 
  ln -s /usr/local/keepalived/sbin/keepalived  /usr/bin #将keepalived主程序加入到环境变量
 
  ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/ #keepalived启动脚本,放到/etc/init.d/目录下就可以使用service命令便捷调用
 
  ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/ #keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可
 
  4、启动
 
  service keepalived start|stop|restart
 
  chkconfig keepalived on
 
  默认的配置文件中,指定了虚拟IP :192.168.32.200,可使用ip addr(或ip a)命令验证之。
 
  5、应用
 
  keepalived两种模式:主-备
 
  主-备
 
  虚拟IP:192.168.32.200        主节点:192.168.32.138         备用节点:192.168.32.134
 
  主配置文件
 
  【/usr/local/keepalived/etc/keepalived/keepalived.conf】
 
  global_defs {
 
      notification_email { #指定keepalived在发生事情的时候,发送邮件告知,可以有多个地址,每行一个。
 
          acassen@firewall.loc
 
          failover@firewall.loc
 
          sysadmin@firewall.loc
 
      }
 
      notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
 
      smtp_server 127.0.0.1 #发送email的smtp地址
 
      smtp_connect_timeout 30 #超时时间
 
      router_id LVS_DEVEL #运行keepalived的机器的一个标识,多个节点标识可以相同,也可以不同
 
      vrrp_skip_check_adv_addr
 
      vrrp_strict
 
      vrrp_garp_interval 0
 
      vrrp_gna_interval 0
 
  }
 
  vrrp_instance VI_1 {
 
      state MASTER #指定当前节点为主节点 备用节点上设置为BACKUP即可
 
      interface eth0 #绑定虚拟IP的网络接口
 
      virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
 
      priority 100 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
 
      advert_int 1
 
      authentication { #设置验证信息,两个节点必须一致
 
          auth_type PASS
 
          auth_pass 1111
 
      }
 
      virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
 
          192.168.32.200
 
      }
 
  }    
 
  备配置文件
 
  【/usr/local/keepalived/etc/keepalived/keepalived.conf】

  global_defs {
 
      notification_email { #指定keepalived在发生事情的时候,发送邮件告知,可以有多个地址,每行一个。
 
          acassen@firewall.loc
 
          failover@firewall.loc
 
          sysadmin@firewall.loc
 
      }
 
      notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
 
      smtp_server 127.0.0.1 #发送email的smtp地址
 
      smtp_connect_timeout 30 #超时时间
 
      router_id LVS_DEVEL #运行keepalived的机器的一个标识,多个节点标识可以相同,也可以不同
 
      vrrp_skip_check_adv_addr
 
      vrrp_strict
 
      vrrp_garp_interval 0
 
      vrrp_gna_interval 0
 
  }
 
  vrrp_instance VI_1 {
 
      state BACKUP #指定当前节点为主节点 备用节点上设置为BACKUP即可
 
      interface eth0 #绑定虚拟IP的网络接口
 
      virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
 
      priority 99 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
 
      advert_int 1
 
      authentication { #设置验证信息,两个节点必须一致
 
          auth_type PASS
 
          auth_pass 1111
 
      }
 
      virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
 
          192.168.32.200
 
      }
 
  }
 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章