CentOS服务器下使用Nginx实现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 } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux下RAID磁盘阵列部署详解
磁盘阵列 RAID RAID:廉价磁盘冗余阵列(Redundant Array of Independent Disks) 作 用:容错、提升读写速率 RAID类型 个数 利用率 优缺点 ------------------------------------- RAID0 条带集 2+ 100% 读写速率最快,不容错 RAID1 镜像集 2 50% 读写速率一般,容错 RAID5 带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块 RAID6 带奇偶校验条带集双校验dp 4+ (n-2)/n 读写快,容错,允许坏两块 RAID01 RAID10 RAID1的安全+RAID0的高速 4 50% 读写速率快,容错 RAID50 RAID5的安全+RAID0的高速 6 (n-2)/n 读写速率快,容错 RAID60 RAID6的安全+RAID0的高速 8 (n-4)/n 读写速率快,容错 ------------------------------------- 一、不同场景RAID的使用 RAID 实现方式 硬RAID: 需要RAID卡,有自己的CPU,处理速度快,有电...
- 下一篇
Linux下lsof命令详解和使用示例
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 1.命令格式: lsof[参数][文件] 2.命令功能: 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof需要访问核心内存和各种文件,所以需要root用户执行。 lsof打开的文件可以是: 1.普通文件 2.目录 3.网络文件系统的文件 4.字符或设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链接 8.网络文件(例如:NFSfile、网络socket,unix域名socket)...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群