阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx-1.9.7 TCP反向代理(短)

412次阅读
没有评论

共计 9466 个字符,预计需要花费 24 分钟才能阅读完成。

称之为反向代理也只要是感觉结构上和 Nginx-Tomcat 反向代理集群比较像而已,非官方哦~
附上脚本地址,加在最后面

—————————————- 正文 —————————————-

Nginx-1.9.7 可以在官方下载,自带了 TCP 代理的模块,但是需要在编译的时候添加参数去明文指定才会编译进去
 参考官方文档,编译时加上如下参数:–with-stream
然后 make && make install 完成编译安装(介绍 nginx 安装的资料很多,不再复述)
—————————————- 配置 & 验证 —————————————-

附上一份简单的配置文件

stream {
upstream mysql {
    hash $remote_addr consistent;
    server MySQL_URL:3306 max_fails=3 fail_timeout=30s;
  }

server {
    listen 13579;
    proxy_connect_timeout 30s;
    proxy_timeout 600s;
    proxy_pass mysql;
  }
 }

启动以后看看端口的状态

Nginx-1.9.7 TCP 反向代理(短)

和 HTTP 的反向代理不同的地方就在整个模块,不再是 http 模块了,而是 stream 模块,里面的语法基本是一致的,在 upstream 里面,可以看到依然可以利用 Nginx 的负载均衡策略,所以,Nginx-1.9.x 成功加入 MySQL 中间件豪华午餐~
那么在其他的机器上试试通过网络远程访问这个端口来连接 MySQL

Nginx-1.9.7 TCP 反向代理(短)

可以看到通过这个 13579 的端口确实可以访问到 MySQL

—————————————- 分割线 —————————————-

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

—————————————- 用途 —————————————-

说起用途的话,可以考虑利用 Nginx 作为中间件来搭建双主多从的 HA 集群,然后写一个脚本来监控从库的状态来实时切换 Nginx,屏蔽 down 机主库对应的从库或者是 down 掉的从库,之后再上 5.7,利用多主模式来横向扩展 MySQL 集群的写入能力,同时监控从库的脚本也可以省略点逻辑,不用去判断对应的主库是否失败。

做出两套方案以后,再去验证实际的可用性,性能什么的 … 近期的计划差不多就做好了~

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-11/125446p2.htm

Linux 下用的脚本

批量启动 Tomcat

  1. #!/bin/bash
  2. #JDK 路径
  3. export Java_HOME=”/usr/jdk1.7.0_09″
  4. # 前缀路径
  5. PREFIX=”/data/webapp/apache-tomcat-80″
  6. # 起始编号
  7. BEGIN=1
  8. # 终止编号
  9. END=20
  10. sudo chown -R ccapp:ccapp /data/webapp/apache-tomcat-80*
  11. sudo chown -R ccapp:ccapp /usr/logs/*
  12. # 关闭
  13. stop(){
  14. for((i=$BEGIN;i<=$END;i++))
  15. do
  16. # 抽取 Tomcat 进程号 PID
  17. #pid=`ps -ef | grep tomcat7-$i |grep -v ‘grep’ | awk ‘{print $2}’`
  18. # 测试当前进程是否处于活动状态
  19. #test “$pid” != “” && kill $pid && echo “Stop tomcat7-$i Successful!” || echo “Stop tomcat7-$i Failed!”
  20. if [$i -lt 10]; then
  21. #echo “tomcat7-0$i”
  22. pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
  23. test “$pid” != “” && sudo kill $pid && echo “Stop apache-tomcat-800$i Successful!” || echo “Stop apache-tomcat-800$i Failed!”
  24. else
  25. #echo “tomcat7-$i”
  26. pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
  27. test “$pid” != “” && sudo kill $pid && echo “Stop apache-tomcat-80$i Successful!” || echo “Stop apache-tomcat-80$i Failed!”
  28. fi
  29. sleep 1
  30. done
  31. #echo
  32. }
  33. # 启动
  34. start(){
  35. for((i=$BEGIN;i<=$END;i++))
  36. do
  37. # 启动 Tomcat
  38. #$PREFIX$i/bin/startup.sh && echo “Start tomcat7-$i Successful!”
  39. #echo
  40. if [$i -lt 10]; then
  41. #echo “tomcat7-0$i”
  42. $PREFIX\0$i/bin/startup.sh && echo “Start apache-tomcat-800$i Successful!”
  43. else
  44. #echo “tomcat7-$i”
  45. $PREFIX$i/bin/startup.sh && echo “Start apache-tomcat-80$i Successful!”
  46. fi
  47. sleep 1
  48. done
  49. }
  50. status(){
  51. for((i=$BEGIN;i<=$END;i++))
  52. do
  53. # 抽取 Tomcat 进程号 PID
  54. #pid=`ps -ef | grep tomcat7-$i |grep -v ‘grep’ | awk ‘{print $2}’`
  55. # 打印 PID
  56. #echo “tomcat7-$i – $pid”
  57. if [$i -lt 10]; then
  58. #echo “tomcat7-0$i”
  59. #$PREFIX\810$i/bin/startup.sh && echo “Start tomcat7-810$i Successful!”
  60. pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
  61. echo “apache-tomcat-800$i – $pid”
  62. else
  63. #echo “tomcat7-$i”
  64. #$PREFIX\81$i/bin/startup.sh && echo “Start tomcat7-81$i Successful!”
  65. pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
  66. echo “apache-tomcat-80$i – $pid”
  67. fi
  68. done
  69. }
  70. case “$1” in
  71. start)
  72. #echo “Start tomcat7-$BEGIN ~ tomcat7-$END”
  73. #echo
  74. start
  75. #echo
  76. ;;
  77. stop)
  78. #echo “Stop tomcat7-$BEGIN ~ tomcat7-$END”
  79. #echo
  80. stop
  81. #echo
  82. ;;
  83. restart)
  84. #echo “Restart tomcat7-$BEGIN ~ tomcat7-$END”
  85. #echo
  86. stop
  87. sleep 2
  88. start
  89. #echo
  90. ;;
  91. status)
  92. #echo “Pid of tomcat7-$BEGIN ~ tomcat7-$END”
  93. status
  94. #echo
  95. ;;
  96. *)
  97. echo $”Usage: $0 {start|stop|restart|status}”
  98. exit 1
  99. ;;
  100. esac

Nginx 自检脚本(每 60 秒自动检测一次)

  1. #!/bin/bash
  2. prefix=/usr/local/nginx_1.4.6/sbin
  3. while :
  4. do
  5.     nginxpid=`ps -C nginx –no-header | wc -l`
  6.     if [$nginxpid -eq 0]; then
  7.     DATE=$(date +%Y-%m-%d %T)
  8.     killall nginx && $prefix/nginx && echo “$DATE Restart Nginx successful~” || echo “$DATE Fail to restart Nginx!”
  9.     sleep 60
  10.     else
  11.     DATE=$(date +%Y-%m-%d %T)
  12.     echo “$DATE : Nginx_Check is running, everything is OK~”
  13.     sleep 60
  14.     fi
  15. done

业务部署自动化脚本

点击 ( 此处 ) 折叠或打开

  1. #!/bin/bash
  2. # 脚本说明
  3. # 内容分发至各实例
  4. # 变更记录
  5. #
  6. # 系统环境变量
  7. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  8. export PATH
  9. # 自定义变量
  10. bak=`date +%Y%m%d-%T`
  11. prefix=/usr/
  12. #tomcat_path=/usr/apache-tomcat-7.0.33/bin
  13. project=APP
  14. #begin=1
  15. #end=15
  16. # 实例备份
  17. cd $prefix
  18. mkdir -p /home/user/$project/$bak
  19. \cp -rf $project /home/user/$project/$bak
  20. # 根据实际情况修改, 脚本参数如 APP.zip 解压后可以为 APP 的文件夹
  21. # 也可以是 APP 文件夹下的内容
  22. cd /tmp/user/
  23. rm -rf ${project}
  24. mkdir $project
  25. cp $project\.war ./$project
  26. cd $project
  27. unzip ${project}\.war
  28. #unzip $1
  29. cd ..
  30. #chmod -R 755 $project
  31. # 分发 copy, 如果所有的工程都指向一个文件夹,则无需分发,直接拷贝
  32. #for((i=$begin;i<=$end;i++))
  33. #do
  34. # 根据需要增加覆盖 copy 的项目
  35. # \cp -rf $project $prefix-$i/webapps/
  36. #done
  37. #rm -rf $prefix$project
  38. cp -avpf $project\/* $prefix$project\/
  39. #Tomcat 操作留给其他功能模块控制
  40. #cd $tomcat_path
  41. #./shutdown.sh
  42. #./startup.sh
  43. echo “update successful!”

懒人用删除 Tomcat 日志脚本(其实什么日志都能删)

  1. #!/bin/bash
  2. # 前缀路径
  3. PREFIX=“/usr/TomcatSvr7-“
  4. # 起始编号
  5. BEGIN=2
  6. # 终止编号
  7. END=20
  8. for((i=$BEGIN;i<=$END;i++))
  9. do
  10.     #删除历史记录
  11.     rm rf $prefix$i/logs/*0*
  12.     cat /dev/null > $prefix$i/logs/catalina.out
  13. done

Nginx 日志管理

  1. logs_path=\”/usr/local/nginx_1.4.6/logs/\”
  2. mv ${logs_path}www.log ${logs_path}www_$(date -d \”yesterday\” +\”%Y%m%d\”).log
  3. mv ${logs_path}error.log ${logs_path}error_$(date -d \”yesterday\” +\”%Y%m%d\”).log
  4. kill -HUP `cat ${logs_path}nginx.pid`
  5. find $logs_path -name \”www_*log\” -mtime +0 -exec rm -rf {} ;
  6. #find $logs_path -name \”access_*log\” -mtime +2 -exec rm -rf {} ;
  7. find $logs_path -name \”error_*log\” -mtime +0 -exec rm -rf {} ;

在 root 下输入 crontab -e , 01 00 * * * /home/nginxlog.sh,指定每天 0:01 分自动执行脚本~

自动配置 LVM 分区

点击 ( 此处 ) 折叠或打开

  1. #!/bin/bash
  2. DEV=/dev/sdb
  3. VG=VG_DATA
  4. LG=lv_data
  5. DIR=/data
  6. pvcreate $DEV \
  7. && vgcreate $VG $DEV \
  8. && lvcreate -l 100%PVS -n $LG $VG \
  9. && mkfs.ext4 /dev/$VG/$LG \
  10. && mkdir $DIR
  11. && mount /dev/$VG/$LG $DIR

Nginx 配置

  1. server_tokens off;
  2. sendfile on;
  3. tcp_nopush on;
  4. tcp_nodelay on;
  5. keepalive_timeout 65;
  6. client_header_timeout 10;
  7. client_body_timeout 10;
  8. reset_timedout_connection on;
  9. send_timeout 10;
  10. charset utf-8;
  11. server_names_hash_bucket_size 128;
  12. client_header_buffer_size 512k;
  13. large_client_header_buffers 4 64k;
  14. client_max_body_size 16m;
  15. client_body_buffer_size 256k;
  16. proxy_connect_timeout 60;
  17. proxy_send_timeout 30;
  18. proxy_read_timeout 30;
  19. proxy_buffer_size 16k;
  20. proxy_buffers 4 256k;
  21. proxy_busy_buffers_size 512k;
  22. proxy_temp_file_write_size 512k;
  23. open_file_cache max=10240 inactive=20s;
  24. open_file_cache_valid 30s;
  25. open_file_cache_min_uses 10;
  26. open_file_cache_errors on

Tomcat 连接池配置

  1. port=”5000″
  2. protocol=”org.apache.coyote.http11.Http11NioProtocol”
  3. connectionTimeout=”30000″
  4. URIEncoding=”UTF-8″
  5. maxThreads=”1000″
  6. minSpareThreads=”100″
  7. acceptCount=”300″
  8. acceptorThreadCount=”6″
  9. keepAliveTimeout=”120000″
  10. maxKeepAliveRequests=”1000″
  11. enableLookups=”false”
  12. redirectPort=”8443″ />

实时查看连接数

  1. watch -n 1 “netstat -n | awk ‘/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'”

远程切换 Nginx

  1. #!/bin/bash
  2. PORT1=8066
  3. PORT2=10066
  4. switch_to_8066(){
  5.     ssh 10.10.10.11 “/bin/bash /root/nginx_p$PORT1.sh;exit”
  6. }
  7. switch_to_10066(){
  8.     ssh 10.10.10.11 “/bin/bash /root/nginx_p$PORT2.sh;exit”
  9. }
  10. switch_to_all(){
  11.     ssh 10.10.10.11 “/bin/bash /root/nginx_all.sh;exit”
  12. }
  13. case “$1” in
  14. switch_to_8066)
  15. echo “switch nginx to port $PORT1”
  16. switch_to_8066
  17. echo “switch to port $PORT1 success”
  18. ;;
  19. switch_to_10066)
  20. echo “switch nginx to port $PORT2”
  21. switch_to_10066
  22. echo “switch to port $PORT2 success”
  23. ;;
  24. switch_to_all)
  25. echo “switch nginx to port $PORT1 and $PORT2”
  26. switch_to_all
  27. echo “switch to port $PORT2 and $PORT1 success”
  28. ;;
  29. *)
  30. echo $”Usage: $0 {switch_to_$PORT1|switch_to_$PORT2|switch_to_all}”
  31. exit 1
  32. ;;
  33. esac

被远程调用的脚本,只有红色部分有区别

  1. #!/bin/bash
  2. NGINX_CONF=/usr/local/nginx_1.8.0/conf/
  3. NGINX_SBIN=/usr/local/nginx_1.8.0/sbin/nginx
  4. CONF_FILE=nginx_8066.conf
  5. ps -ef | grep nginx |grep -v ‘grep’ |grep -v ‘nginx_p8066.sh’ | awk ‘{print $2}’ | xargs kill
  6. $NGINX_SBIN -c $NGINX_CONF$CONF_FILE 

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-11/125446.htm

称之为反向代理也只要是感觉结构上和 Nginx-Tomcat 反向代理集群比较像而已,非官方哦~
附上脚本地址,加在最后面

—————————————- 正文 —————————————-

Nginx-1.9.7 可以在官方下载,自带了 TCP 代理的模块,但是需要在编译的时候添加参数去明文指定才会编译进去
 参考官方文档,编译时加上如下参数:–with-stream
然后 make && make install 完成编译安装(介绍 nginx 安装的资料很多,不再复述)
—————————————- 配置 & 验证 —————————————-

附上一份简单的配置文件

stream {
upstream mysql {
    hash $remote_addr consistent;
    server MySQL_URL:3306 max_fails=3 fail_timeout=30s;
  }

server {
    listen 13579;
    proxy_connect_timeout 30s;
    proxy_timeout 600s;
    proxy_pass mysql;
  }
 }

启动以后看看端口的状态

Nginx-1.9.7 TCP 反向代理(短)

和 HTTP 的反向代理不同的地方就在整个模块,不再是 http 模块了,而是 stream 模块,里面的语法基本是一致的,在 upstream 里面,可以看到依然可以利用 Nginx 的负载均衡策略,所以,Nginx-1.9.x 成功加入 MySQL 中间件豪华午餐~
那么在其他的机器上试试通过网络远程访问这个端口来连接 MySQL

Nginx-1.9.7 TCP 反向代理(短)

可以看到通过这个 13579 的端口确实可以访问到 MySQL

—————————————- 分割线 —————————————-

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

—————————————- 用途 —————————————-

说起用途的话,可以考虑利用 Nginx 作为中间件来搭建双主多从的 HA 集群,然后写一个脚本来监控从库的状态来实时切换 Nginx,屏蔽 down 机主库对应的从库或者是 down 掉的从库,之后再上 5.7,利用多主模式来横向扩展 MySQL 集群的写入能力,同时监控从库的脚本也可以省略点逻辑,不用去判断对应的主库是否失败。

做出两套方案以后,再去验证实际的可用性,性能什么的 … 近期的计划差不多就做好了~

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-11/125446p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9466字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7972313
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...