借助keepalived + nginx双机热备加固flume线路

原来的状况: 两台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

最新架构方案如下图所示:

bb

两台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

点击(此处)折叠或打开

  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. }
  5. router_id LVS_DEVEL
  6. }
  7. vrrp_script chk_nginx {
  8. script "/etc/keepalived/chk_nginx.sh"
  9. interval 2
  10. weight 2
  11. }
  12. vrrp_instance VI_1 {
  13. state MASTER
  14. interface eth1
  15. virtual_router_id 200
  16. priority 100
  17. advert_int 1
  18. authentication {
  19. auth_type PASS
  20. auth_pass 123456
  21. }
  22. track_script {
  23. chk_nginx
  24. }
  25. virtual_ipaddress {
  26. 10.0.15.15
  27. }
  28. }
  29. vrrp_instance VI_2 {
  30. state BACKUP
  31. interface eth1
  32. virtual_router_id 251
  33. priority 50
  34. advert_int 1
  35. authentication {
  36. auth_type PASS
  37. auth_pass 123456
  38. }
  39. track_script {
  40. chk_nginx
  41. }
  42. virtual_ipaddress {
  43. 10.0.15.16
  44. }
  45. }
10.0.15.16的配置如下:

点击(此处)折叠或打开

  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. }
  5. router_id LVS_DEVEL
  6. }
  7. vrrp_script chk_nginx {
  8. script "/etc/keepalived/chk_nginx.sh"
  9. interval 2
  10. weight 2
  11. }
  12. vrrp_instance VI_1 {
  13. state BACKUP
  14. interface eth1
  15. virtual_router_id 200
  16. priority 99
  17. advert_int 1
  18. authentication {
  19. auth_type PASS
  20. auth_pass 123456
  21. }
  22. track_script {
  23. chk_nginx
  24. }
  25. virtual_ipaddress {
  26. 10.0.15.15
  27. }
  28. }
  29. vrrp_instance VI_2 {
  30. state MASTER
  31. interface eth1
  32. virtual_router_id 251
  33. priority 51
  34. advert_int 1
  35. authentication {
  36. auth_type PASS
  37. auth_pass 123456
  38. }
  39. track_script {
  40. chk_nginx
  41. }
  42. virtual_ipaddress {
  43. 10.0.15.16
  44. }
  45. }
10.0.15.15与10.0.15.16互为主备。

在配置中涉及到一个chk_nginx.sh脚本,这个脚本用于检测nginx服务是否存活,如果nginx服务挂掉了,先重启,如果出现宕机的情况,则将对应的keepalived服务关掉,从而实现nginx的热备份,脚本内容如下:

点击(此处)折叠或打开

  1. #!/bin/bash
  2. # description:
  3. status=$(ps -C nginx --no-heading|wc -l)
  4. if [ "${status}" = "0" ]; then
  5. /usr/local/nginx/sbin/nginx
  6. status2=$(ps -C nginx --no-heading|wc -l)
  7. if [ "${status2}" = "0" ]; then
  8. /etc/init.d/keepalived stop
  9. fi
  10. fi

这个脚本一定要有可执行权限,否则无法实现热备,这个点之前 被坑了。

10.0.15.70及10.0.15.71l两台nginx的nginx.conf配置信息如下:

点击(此处)折叠或打开

  1. worker_processes 2;
  2. error_log logs/error.log;

  3. pid /var/run/nginx.pid;
  4. worker_rlimit_nofile 102400;

  5. events {
  6. use epoll;
  7. worker_connections 102400;
  8. }

  9. stream {


  10. upstream proxy_tcp8082 {

  11. least_conn;
  12. server 10.0.15.210:8080 weight=1 max_fails=3 fail_timeout=30s;
  13. server 10.0.15.217:8080 weight=1 max_fails=3 fail_timeout=30s;
  14. }


  15. upstream proxy_tcp8083 {

  16. least_conn;
  17. server 10.0.15.210:8081 weight=1 max_fails=3 fail_timeout=30s;
  18. server 10.0.15.217:8081 weight=1 max_fails=3 fail_timeout=30s;
  19. }

  20. upstream proxy_tcp8084 {

  21. least_conn;
  22. server 10.0.15.215:8080 weight=1 max_fails=3 fail_timeout=30s;
  23. server 10.0.15.218:8080 weight=1 max_fails=3 fail_timeout=30s;
  24. }

  25. upstream proxy_tcp8085 {

  26. least_conn;
  27. server 10.0.15.215:8081 weight=1 max_fails=3 fail_timeout=30s;
  28. server 10.0.15.218:8081 weight=1 max_fails=3 fail_timeout=30s;
  29. }
  30. include tcp/*;

  31. }

其中 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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值