原来的状况: 两台flume ,10.0.15.70,10.0.15.71。在这两台flume机器上,分别会启2个mina的server端,监听客户端发送到8080,8081端口的数据,flume收集数据写入到kafka及hdfs上。 由于现在flume单机的原因,如果出现问题,数据将无法转发到别的机器上。于是,做了以下方案用于加固。
新方案:
两个VIP(供keepalived使用):10.0.15.15,10.0.15.16
nginx,keepalive服务器:10.0.15.70,10.0.15.71
4台flume:10.0.15.210,10.0.15.215,10.0.15.217,10.0.15.218
最新架构方案如下图所示:
两台nginx互备,其中一台出现宕机,另外一台接替继续工作。
flume机器: 10.0.15.210 10.0.15.217 互相备份,nginx 将8082,8083端口的数据转发到这两台机器中的任意一台的8080,8081端口,由这台flume机器将数据写入hdfs, 如果这台机器出现问题,nginx将请求转发到另外一台。 同理,10.0.15.215,10.0.15.218互备,nginx 将8084,8085端口的数据转发到这两台机器中的任意一台的8080,8081端口,由这台flume机器将数据写入hdfs, 如果这台机器出现问题,nginx将请求转发到另外一台。
下面来看具体的配置:
nginx和keepalived安装不做描述,只关注配置:
keepalived配置,两个keepalived互为主从备份关系
10.0.15.15的配置如下:cat /etc/keepalived/keepalived.conf
10.0.15.16的配置如下:
10.0.15.15与10.0.15.16互为主备。
在配置中涉及到一个chk_nginx.sh脚本,这个脚本用于检测nginx服务是否存活,如果nginx服务挂掉了,先重启,如果出现宕机的情况,则将对应的keepalived服务关掉,从而实现nginx的热备份,脚本内容如下:
这个脚本一定要有可执行权限,否则无法实现热备,这个点之前 被坑了。
10.0.15.70及10.0.15.71l两台nginx的nginx.conf配置信息如下:
其中 tcp是在conf目录下的一个文件夹,包含4个文件:tcp_8082.com,tcp_8083.com,tcp_8084.com,tcp_8085.com
tcp_8082.com对应文件内容:
server {
listen 8082;
proxy_pass proxy_tcp8082;
}
其它3个文件的内容是一样的,只是listen端口不同而已。
配置完成后,启动nginx, keepalived, flume agent,就可以实现上面的功能。 nginx双机热备,加固flume.
nginx启动: /usr/local/nginx/sbin/nginx
nginx停止: /usr/local/nginx/sbin/nginx -s stop
keepalived启动: service keepalived start/stop
关于nginx+ keepalive双机热备,可以参考如下博文:
http://blog.csdn.net/zhu_tianwei/article/details/43603771
http://www.cnblogs.com/kaituorensheng/p/4889268.html
新方案:
两个VIP(供keepalived使用):10.0.15.15,10.0.15.16
nginx,keepalive服务器:10.0.15.70,10.0.15.71
4台flume:10.0.15.210,10.0.15.215,10.0.15.217,10.0.15.218
最新架构方案如下图所示:
两台nginx互备,其中一台出现宕机,另外一台接替继续工作。
flume机器: 10.0.15.210 10.0.15.217 互相备份,nginx 将8082,8083端口的数据转发到这两台机器中的任意一台的8080,8081端口,由这台flume机器将数据写入hdfs, 如果这台机器出现问题,nginx将请求转发到另外一台。 同理,10.0.15.215,10.0.15.218互备,nginx 将8084,8085端口的数据转发到这两台机器中的任意一台的8080,8081端口,由这台flume机器将数据写入hdfs, 如果这台机器出现问题,nginx将请求转发到另外一台。
下面来看具体的配置:
nginx和keepalived安装不做描述,只关注配置:
keepalived配置,两个keepalived互为主从备份关系
10.0.15.15的配置如下:cat /etc/keepalived/keepalived.conf
点击(此处)折叠或打开
- ! Configuration File for keepalived
- global_defs {
- notification_email {
- }
- router_id LVS_DEVEL
- }
- vrrp_script chk_nginx {
- script "/etc/keepalived/chk_nginx.sh"
- interval 2
- weight 2
- }
- vrrp_instance VI_1 {
- state MASTER
- interface eth1
- virtual_router_id 200
- priority 100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 123456
- }
- track_script {
- chk_nginx
- }
- virtual_ipaddress {
- 10.0.15.15
- }
- }
- vrrp_instance VI_2 {
- state BACKUP
- interface eth1
- virtual_router_id 251
- priority 50
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 123456
- }
- track_script {
- chk_nginx
- }
- virtual_ipaddress {
- 10.0.15.16
- }
- }
点击(此处)折叠或打开
- ! Configuration File for keepalived
- global_defs {
- notification_email {
- }
- router_id LVS_DEVEL
- }
- vrrp_script chk_nginx {
- script "/etc/keepalived/chk_nginx.sh"
- interval 2
- weight 2
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface eth1
- virtual_router_id 200
- priority 99
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 123456
- }
- track_script {
- chk_nginx
- }
- virtual_ipaddress {
- 10.0.15.15
- }
- }
- vrrp_instance VI_2 {
- state MASTER
- interface eth1
- virtual_router_id 251
- priority 51
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 123456
- }
- track_script {
- chk_nginx
- }
- virtual_ipaddress {
- 10.0.15.16
- }
- }
在配置中涉及到一个chk_nginx.sh脚本,这个脚本用于检测nginx服务是否存活,如果nginx服务挂掉了,先重启,如果出现宕机的情况,则将对应的keepalived服务关掉,从而实现nginx的热备份,脚本内容如下:
点击(此处)折叠或打开
- #!/bin/bash
- # description:
- status=$(ps -C nginx --no-heading|wc -l)
- if [ "${status}" = "0" ]; then
- /usr/local/nginx/sbin/nginx
- status2=$(ps -C nginx --no-heading|wc -l)
- if [ "${status2}" = "0" ]; then
- /etc/init.d/keepalived stop
- fi
- fi
这个脚本一定要有可执行权限,否则无法实现热备,这个点之前 被坑了。
10.0.15.70及10.0.15.71l两台nginx的nginx.conf配置信息如下:
点击(此处)折叠或打开
- worker_processes 2;
- error_log logs/error.log;
-
- pid /var/run/nginx.pid;
- worker_rlimit_nofile 102400;
-
- events {
- use epoll;
- worker_connections 102400;
- }
-
- stream {
-
-
- upstream proxy_tcp8082 {
-
- least_conn;
- server 10.0.15.210:8080 weight=1 max_fails=3 fail_timeout=30s;
- server 10.0.15.217:8080 weight=1 max_fails=3 fail_timeout=30s;
- }
-
-
- upstream proxy_tcp8083 {
-
- least_conn;
- server 10.0.15.210:8081 weight=1 max_fails=3 fail_timeout=30s;
- server 10.0.15.217:8081 weight=1 max_fails=3 fail_timeout=30s;
- }
-
- upstream proxy_tcp8084 {
-
- least_conn;
- server 10.0.15.215:8080 weight=1 max_fails=3 fail_timeout=30s;
- server 10.0.15.218:8080 weight=1 max_fails=3 fail_timeout=30s;
- }
-
- upstream proxy_tcp8085 {
-
- least_conn;
- server 10.0.15.215:8081 weight=1 max_fails=3 fail_timeout=30s;
- server 10.0.15.218:8081 weight=1 max_fails=3 fail_timeout=30s;
- }
- include tcp/*;
-
- }
其中 tcp是在conf目录下的一个文件夹,包含4个文件:tcp_8082.com,tcp_8083.com,tcp_8084.com,tcp_8085.com
tcp_8082.com对应文件内容:
server {
listen 8082;
proxy_pass proxy_tcp8082;
}
其它3个文件的内容是一样的,只是listen端口不同而已。
配置完成后,启动nginx, keepalived, flume agent,就可以实现上面的功能。 nginx双机热备,加固flume.
nginx启动: /usr/local/nginx/sbin/nginx
nginx停止: /usr/local/nginx/sbin/nginx -s stop
keepalived启动: service keepalived start/stop
关于nginx+ keepalive双机热备,可以参考如下博文:
http://blog.csdn.net/zhu_tianwei/article/details/43603771
http://www.cnblogs.com/kaituorensheng/p/4889268.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31347383/viewspace-2127290/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31347383/viewspace-2127290/